[pure-lang-svn] SF.net SVN: pure-lang:[494] pure/trunk/runtime.cc
Status: Beta
Brought to you by:
agraef
From: <ag...@us...> - 2008-08-14 12:52:37
|
Revision: 494 http://pure-lang.svn.sourceforge.net/pure-lang/?rev=494&view=rev Author: agraef Date: 2008-08-14 12:52:47 +0000 (Thu, 14 Aug 2008) Log Message: ----------- Add inf/nan cases of double->bigint conversions and syntactic comparisons. Modified Paths: -------------- pure/trunk/runtime.cc Modified: pure/trunk/runtime.cc =================================================================== --- pure/trunk/runtime.cc 2008-08-14 12:30:15 UTC (rev 493) +++ pure/trunk/runtime.cc 2008-08-14 12:52:47 UTC (rev 494) @@ -1820,6 +1820,9 @@ return pointer_to_bigint(x->data.p); else if (x->tag != EXPR::INT && x->tag != EXPR::DBL) return 0; + else if (x->tag == EXPR::DBL && + (is_nan(x->data.d) || is_nan(x->data.d-x->data.d))) + pure_sigfpe(); pure_expr *y = pure_bigint(0, 0); mpz_t& z = y->data.z; if (x->tag == EXPR::INT) @@ -2361,7 +2364,7 @@ case EXPR::BIGINT: return mpz_cmp(x->data.z, y->data.z) == 0; case EXPR::DBL: - return x->data.d == y->data.d; + return x->data.d == y->data.d || is_nan(x->data.d) && is_nan(y->data.d); case EXPR::STR: return strcmp(x->data.s, y->data.s) == 0; case EXPR::PTR: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |