summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDirk Herrmann <dirk@dirk-herrmanns-seiten.de>2003-09-17 21:03:26 +0000
committerDirk Herrmann <dirk@dirk-herrmanns-seiten.de>2003-09-17 21:03:26 +0000
commit47ae1f0ecaded1a0a094db3f7ec9687dec71f72d (patch)
tree34bb6bb77374543e92f94bd828ca174caa49d44e
parent859b6b2fff3b9f1626dafef739d991ebb7bf325a (diff)
downloadguile-47ae1f0ecaded1a0a094db3f7ec9687dec71f72d.tar.gz
* libguile/numbers.c (scm_bigequal): Fixed.
* test-suite/tests/numbers.test (equal?): Added tests. * test-suite/tests/numbers.test (=): Fixed and added some bignum related tests.
-rw-r--r--libguile/ChangeLog5
-rw-r--r--libguile/numbers.c2
-rw-r--r--test-suite/ChangeLog7
-rw-r--r--test-suite/tests/numbers.test59
4 files changed, 70 insertions, 3 deletions
diff --git a/libguile/ChangeLog b/libguile/ChangeLog
index 7736e4557..3f9667804 100644
--- a/libguile/ChangeLog
+++ b/libguile/ChangeLog
@@ -1,3 +1,7 @@
+2003-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * numbers.c (scm_bigequal): Fixed.
+
2003-09-16 Marius Vollmer <mvo@zagadka.de>
* stime.c (scm_current_time): 'time' does not set errno so don't
@@ -556,7 +560,6 @@
yyset_debug, yylex_destroy): Added prototypes (otherwise we'll get
a compilation error if error-on-warning is enabled).
->>>>>>> 1.1883
2003-05-17 Marius Vollmer <mvo@zagadka.de>
* c-tokenize.lex: Gobble up complete lines after a '#'. This
diff --git a/libguile/numbers.c b/libguile/numbers.c
index a8fb84646..661622205 100644
--- a/libguile/numbers.c
+++ b/libguile/numbers.c
@@ -2522,7 +2522,7 @@ scm_make_complex (double x, double y)
SCM
scm_bigequal (SCM x, SCM y)
{
- int result = mpz_cmp (SCM_I_BIG_MPZ (x), SCM_I_BIG_MPZ (x));
+ int result = mpz_cmp (SCM_I_BIG_MPZ (x), SCM_I_BIG_MPZ (y));
scm_remember_upto_here_2 (x, y);
return SCM_BOOL (0 == result);
}
diff --git a/test-suite/ChangeLog b/test-suite/ChangeLog
index 7ff206a59..35500f904 100644
--- a/test-suite/ChangeLog
+++ b/test-suite/ChangeLog
@@ -1,3 +1,10 @@
+2003-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * tests/numbers.test (equal?): Added tests.
+
+ * tests/numbers.test (=): Fixed and added some bignum related
+ tests.
+
2003-08-30 Kevin Ryde <user42@zip.com.au>
* tests/numbers.test (logcount): Add tests.
diff --git a/test-suite/tests/numbers.test b/test-suite/tests/numbers.test
index 8ba975964..0040bd692 100644
--- a/test-suite/tests/numbers.test
+++ b/test-suite/tests/numbers.test
@@ -1147,6 +1147,61 @@
(pass-if (not (inexact? (current-input-port)))))
;;;
+;;; equal?
+;;;
+
+(with-test-prefix "equal?"
+ (pass-if (documented? equal?))
+ (pass-if (equal? 0 0))
+ (pass-if (equal? 7 7))
+ (pass-if (equal? -7 -7))
+ (pass-if (equal? (+ 1 fixnum-max) (+ 1 fixnum-max)))
+ (pass-if (equal? (- fixnum-min 1) (- fixnum-min 1)))
+ (pass-if (not (equal? 0 1)))
+ (pass-if (not (equal? fixnum-max (+ 1 fixnum-max))))
+ (pass-if (not (equal? (+ 1 fixnum-max) fixnum-max)))
+ (pass-if (not (equal? (+ 1 fixnum-max) (+ 2 fixnum-max))))
+ (pass-if (not (equal? fixnum-min (- fixnum-min 1))))
+ (pass-if (not (equal? (- fixnum-min 1) fixnum-min)))
+ (pass-if (not (equal? (- fixnum-min 1) (- fixnum-min 2))))
+ (pass-if (not (equal? (+ fixnum-max 1) (- fixnum-min 1))))
+
+ (pass-if (not (equal? (ash 1 256) +inf.0)))
+ (pass-if (not (equal? +inf.0 (ash 1 256))))
+ (pass-if (not (equal? (ash 1 256) -inf.0)))
+ (pass-if (not (equal? -inf.0 (ash 1 256))))
+
+ ;; in gmp prior to 4.2, mpz_cmp_d ended up treating Inf as 2^1024, make
+ ;; sure we've avoided that
+ (pass-if (not (equal? (ash 1 1024) +inf.0)))
+ (pass-if (not (equal? +inf.0 (ash 1 1024))))
+ (pass-if (not (equal? (- (ash 1 1024)) -inf.0)))
+ (pass-if (not (equal? -inf.0 (- (ash 1 1024)))))
+
+ (pass-if (not (equal? +nan.0 +nan.0)))
+ (pass-if (not (equal? 0 +nan.0)))
+ (pass-if (not (equal? +nan.0 0)))
+ (pass-if (not (equal? 1 +nan.0)))
+ (pass-if (not (equal? +nan.0 1)))
+ (pass-if (not (equal? -1 +nan.0)))
+ (pass-if (not (equal? +nan.0 -1)))
+
+ (pass-if (not (equal? (ash 1 256) +nan.0)))
+ (pass-if (not (equal? +nan.0 (ash 1 256))))
+ (pass-if (not (equal? (- (ash 1 256)) +nan.0)))
+ (pass-if (not (equal? +nan.0 (- (ash 1 256)))))
+
+ (pass-if (not (equal? (ash 1 8192) +nan.0)))
+ (pass-if (not (equal? +nan.0 (ash 1 8192))))
+ (pass-if (not (equal? (- (ash 1 8192)) +nan.0)))
+ (pass-if (not (equal? +nan.0 (- (ash 1 8192)))))
+
+ ;; in gmp prior to 4.2, mpz_cmp_d ended up treating NaN as 3*2^1023, make
+ ;; sure we've avoided that
+ (pass-if (not (equal? (ash 3 1023) +nan.0)))
+ (pass-if (not (equal? +nan.0 (ash 3 1023)))))
+
+;;;
;;; =
;;;
@@ -1156,12 +1211,14 @@
(pass-if (= 7 7))
(pass-if (= -7 -7))
(pass-if (= (+ 1 fixnum-max) (+ 1 fixnum-max)))
- (pass-if (= (- 1 fixnum-min) (- 1 fixnum-min)))
+ (pass-if (= (- fixnum-min 1) (- fixnum-min 1)))
(pass-if (not (= 0 1)))
(pass-if (not (= fixnum-max (+ 1 fixnum-max))))
(pass-if (not (= (+ 1 fixnum-max) fixnum-max)))
+ (pass-if (not (= (+ 1 fixnum-max) (+ 2 fixnum-max))))
(pass-if (not (= fixnum-min (- fixnum-min 1))))
(pass-if (not (= (- fixnum-min 1) fixnum-min)))
+ (pass-if (not (= (- fixnum-min 1) (- fixnum-min 2))))
(pass-if (not (= (+ fixnum-max 1) (- fixnum-min 1))))
(pass-if (not (= (ash 1 256) +inf.0)))