aboutsummaryrefslogtreecommitdiffstats
path: root/test/src/floatfns-tests.el
diff options
context:
space:
mode:
authorPaul Eggert2019-11-04 23:10:12 -0800
committerPaul Eggert2019-11-04 23:39:54 -0800
commit5ab29400a4e9b29928aaf63d1f89a0b059491b29 (patch)
treed48d567ff49bf4f84fe5423de8147a3c89998048 /test/src/floatfns-tests.el
parent96c8e4fa414f69790fc8b2cc8ded9c758511326f (diff)
downloademacs-5ab29400a4e9b29928aaf63d1f89a0b059491b29.tar.gz
emacs-5ab29400a4e9b29928aaf63d1f89a0b059491b29.zip
Don’t signal overflow for (expt 1 bignum)
Similarly for (expt 0 bignum) and (expt -1 bignum). The result is always a -1, 0 or 1, so do not signal overflow. * src/data.c (expt_integer): Do not signal an overflow if -1 <= X <= 1. Be clearer about when overflow is signaled. * test/src/floatfns-tests.el (bignum-expt): Test this.
Diffstat (limited to 'test/src/floatfns-tests.el')
-rw-r--r--test/src/floatfns-tests.el5
1 files changed, 5 insertions, 0 deletions
diff --git a/test/src/floatfns-tests.el b/test/src/floatfns-tests.el
index 643866f1146..62201a877d0 100644
--- a/test/src/floatfns-tests.el
+++ b/test/src/floatfns-tests.el
@@ -51,7 +51,12 @@
51(ert-deftest bignum-expt () 51(ert-deftest bignum-expt ()
52 (dolist (n (list most-positive-fixnum (1+ most-positive-fixnum) 52 (dolist (n (list most-positive-fixnum (1+ most-positive-fixnum)
53 most-negative-fixnum (1- most-negative-fixnum) 53 most-negative-fixnum (1- most-negative-fixnum)
54 (* 5 most-negative-fixnum)
55 (* 5 (1+ most-positive-fixnum))
54 -2 -1 0 1 2)) 56 -2 -1 0 1 2))
57 (should (or (<= n 0) (= (expt 0 n) 0)))
58 (should (= (expt 1 n) 1))
59 (should (or (< n 0) (= (expt -1 n) (if (zerop (logand n 1)) 1 -1))))
55 (should (= (expt n 0) 1)) 60 (should (= (expt n 0) 1))
56 (should (= (expt n 1) n)) 61 (should (= (expt n 1) n))
57 (should (= (expt n 2) (* n n))) 62 (should (= (expt n 2) (* n n)))