summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKarl Heuer <kwzh@gnu.org>1994-03-04 21:21:08 +0000
committerKarl Heuer <kwzh@gnu.org>1994-03-04 21:21:08 +0000
commit1a2f2d332e66b4549fcc88237e8eeb032b466657 (patch)
tree1095cd3282f757635b9dc4fed5d56a7f43a99f17 /src
parentcffa74ea6cc63d09c0814ccee5248ba3eeda7ecd (diff)
downloademacs-1a2f2d332e66b4549fcc88237e8eeb032b466657.tar.gz
(isnan): New macro.
(float_arith_driver): min and max yield NaN if any argument is a NaN.
Diffstat (limited to 'src')
-rw-r--r--src/data.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/data.c b/src/data.c
index 59e9e928d6e..adb8d38e3aa 100644
--- a/src/data.c
+++ b/src/data.c
@@ -1650,6 +1650,10 @@ arith_driver (code, nargs, args)
}
#ifdef LISP_FLOAT_TYPE
+
+#undef isnan
+#define isnan(x) ((x) != (x))
+
Lisp_Object
float_arith_driver (accum, argnum, code, nargs, args)
double accum;
@@ -1707,11 +1711,11 @@ float_arith_driver (accum, argnum, code, nargs, args)
case Alogxor:
return wrong_type_argument (Qinteger_or_marker_p, val);
case Amax:
- if (!argnum || next > accum)
+ if (!argnum || isnan (next) || next > accum)
accum = next;
break;
case Amin:
- if (!argnum || next < accum)
+ if (!argnum || isnan (next) || next < accum)
accum = next;
break;
}