]> git.eshelyaron.com Git - emacs.git/commitdiff
Make min and max handle bignums
authorTom Tromey <tom@tromey.com>
Sun, 8 Jul 2018 04:19:21 +0000 (22:19 -0600)
committerTom Tromey <tom@tromey.com>
Fri, 13 Jul 2018 04:12:27 +0000 (22:12 -0600)
* src/data.c (minmax_driver): Handle bignums.
* test/src/data-tests.el (data-tests-minmax): New test.

src/data.c
test/src/data-tests.el

index 2e366b5313f84953315400f4a6aeda2772fe731e..7ded8366e324fd58cc0dab7c8ed63a8a20d34fea 100644 (file)
@@ -3119,11 +3119,11 @@ minmax_driver (ptrdiff_t nargs, Lisp_Object *args,
               enum Arith_Comparison comparison)
 {
   Lisp_Object accum = args[0];
-  CHECK_FIXNUM_OR_FLOAT_COERCE_MARKER (accum);
+  CHECK_NUMBER_COERCE_MARKER (accum);
   for (ptrdiff_t argnum = 1; argnum < nargs; argnum++)
     {
       Lisp_Object val = args[argnum];
-      CHECK_FIXNUM_OR_FLOAT_COERCE_MARKER (val);
+      CHECK_NUMBER_COERCE_MARKER (val);
       if (!NILP (arithcompare (val, accum, comparison)))
        accum = val;
       else if (FLOATP (val) && isnan (XFLOAT_DATA (val)))
index 561b7bd9ca646977d85c9edf377269431edafe30..4565cfb3877c51a926945174ddf203db88a7d5c3 100644 (file)
@@ -590,4 +590,11 @@ comparing the subr with a much slower lisp implementation."
 (ert-deftest data-tests-logcount ()
   (should (= (logcount (read "#xffffffffffffffffffffffffffffffff")) 128)))
 
+(ert-deftest data-tests-minmax ()
+  (let ((a (- most-negative-fixnum 1))
+        (b (+ most-positive-fixnum 1))
+        (c 0))
+    (should (= (min a b c) a))
+    (should (= (max a b c) b))))
+
 ;;; data-tests.el ends here