From 1d49a93d7636f342d865665971eb6c02a8682040 Mon Sep 17 00:00:00 2001 From: vsc Date: Thu, 16 Nov 2006 14:26:00 +0000 Subject: [PATCH] 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 --- C/stdpreds.c | 27 ++++++++++++++++++--------- changes-5.1.html | 1 + 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/C/stdpreds.c b/C/stdpreds.c index cd6c6238a..a2f03c364 100644 --- a/C/stdpreds.c +++ b/C/stdpreds.c @@ -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') diff --git a/changes-5.1.html b/changes-5.1.html index 03802cf34..381ee2f05 100644 --- a/changes-5.1.html +++ b/changes-5.1.html @@ -16,6 +16,7 @@

Yap-5.1.2: