diff options
author | Dirk Herrmann <dirk@dirk-herrmanns-seiten.de> | 2003-09-17 21:03:26 +0000 |
---|---|---|
committer | Dirk Herrmann <dirk@dirk-herrmanns-seiten.de> | 2003-09-17 21:03:26 +0000 |
commit | 47ae1f0ecaded1a0a094db3f7ec9687dec71f72d (patch) | |
tree | 34bb6bb77374543e92f94bd828ca174caa49d44e | |
parent | 859b6b2fff3b9f1626dafef739d991ebb7bf325a (diff) | |
download | guile-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/ChangeLog | 5 | ||||
-rw-r--r-- | libguile/numbers.c | 2 | ||||
-rw-r--r-- | test-suite/ChangeLog | 7 | ||||
-rw-r--r-- | test-suite/tests/numbers.test | 59 |
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))) |