fix handling of infinity in name/2 and friends.

git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1721 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
vsc 2006-11-16 14:26:00 +00:00
parent a728bed4f8
commit 1d49a93d76
2 changed files with 19 additions and 9 deletions

View File

@ -11,8 +11,11 @@
* File: stdpreds.c *
* comments: General-purpose C implemented system predicates *
* *
* Last rev: $Date: 2006-11-08 01:56:47 $,$Author: vsc $ *
* Last rev: $Date: 2006-11-16 14:26:00 $,$Author: vsc $ *
* $Log: not supported by cvs2svn $
* Revision 1.112 2006/11/08 01:56:47 vsc
* fix argument order in db statistics.
*
* Revision 1.111 2006/11/06 18:35:04 vsc
* 1estranha
*
@ -612,6 +615,14 @@ get_char_from_string(int s)
}
#ifndef INFINITY
#define INFINITY (1.0/0.0)
#endif
#ifndef NAN
#define NAN (0.0/0.0)
#endif
static Term
get_num(char *t)
{
@ -630,20 +641,18 @@ get_num(char *t)
sign = -1;
}
if(strcmp(t,"inf") == 0) {
Term ta[1];
ta[0] = MkAtomTerm(Yap_LookupAtom("inf"));
if (sign > 0) {
return(Yap_MkApplTerm(Yap_MkFunctor(AtomPlus, 1), 1, ta));
return MkFloatTerm(INFINITY);
} else {
return MkFloatTerm(-INFINITY);
}
return(Yap_MkApplTerm(Yap_MkFunctor(AtomMinus, 1), 1, ta));
}
if(strcmp(t,"nan") == 0) {
Term ta[1];
ta[0] = MkAtomTerm(Yap_LookupAtom("nan"));
if (sign > 0) {
return(Yap_MkApplTerm(Yap_MkFunctor(AtomPlus, 1), 1, ta));
return MkFloatTerm(NAN);
} else {
return MkFloatTerm(-NAN);
}
return(Yap_MkApplTerm(Yap_MkFunctor(AtomMinus, 1), 1, ta));
}
}
if (cur_char_ptr[0] == '\0')

View File

@ -16,6 +16,7 @@
<h2>Yap-5.1.2:</h2>
<ul>
<li> FIXED: +inf is a number (obs from Trevor Walker).</li>
<li> FIXED: if peek finds EOF get should not return an error (obs
from Miguel Filgueiras).</li>
<li> FIXED: allow overflows on timestamps.</li>