aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEli Zaretskii2003-12-29 13:51:54 +0000
committerEli Zaretskii2003-12-29 13:51:54 +0000
commit74a47d1fba2e5b01db681f75e35f2f78af62fc7c (patch)
treeedff1fd28d7f8c450daa6ebef2e2f4678ef3db43
parentd9c4f5125eb30ebadd49971678c76617aebdac9c (diff)
downloademacs-74a47d1fba2e5b01db681f75e35f2f78af62fc7c.tar.gz
emacs-74a47d1fba2e5b01db681f75e35f2f78af62fc7c.zip
(internal_equal): Return t for two NaN arguments.
-rw-r--r--src/fns.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/fns.c b/src/fns.c
index e4252c98ca5..ff40c706edd 100644
--- a/src/fns.c
+++ b/src/fns.c
@@ -2169,7 +2169,15 @@ internal_equal (o1, o2, depth)
2169 switch (XTYPE (o1)) 2169 switch (XTYPE (o1))
2170 { 2170 {
2171 case Lisp_Float: 2171 case Lisp_Float:
2172 return (extract_float (o1) == extract_float (o2)); 2172 {
2173 double d1, d2;
2174
2175 d1 = extract_float (o1);
2176 d2 = extract_float (o2);
2177 /* If d is a NaN, then d != d. Two NaNs should be `equal' even
2178 though they are not =. */
2179 return d1 == d2 || (d1 != d1 && d2 != d2);
2180 }
2173 2181
2174 case Lisp_Cons: 2182 case Lisp_Cons:
2175 if (!internal_equal (XCAR (o1), XCAR (o2), depth + 1)) 2183 if (!internal_equal (XCAR (o1), XCAR (o2), depth + 1))