diff options
author | Andy Wingo <wingo@pobox.com> | 2012-07-28 12:44:36 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2012-07-28 12:44:36 +0200 |
commit | e0f68f785d3899c6b565c12d6540f20730fcd9cc (patch) | |
tree | 872c45f23ce3f576525e8e15121b5b65f1f37e87 | |
parent | 2842a17112418052975728e3dd75e03aa6540aed (diff) | |
parent | 10a97755d4a1b2034f8a131215a92c0b29000969 (diff) | |
download | guile-e0f68f785d3899c6b565c12d6540f20730fcd9cc.tar.gz |
1;3202;0cMerge remote-tracking branch 'origin/stable-2.0'
-rw-r--r-- | libguile/numbers.c | 3 | ||||
-rw-r--r-- | test-suite/tests/numbers.test | 7 |
2 files changed, 7 insertions, 3 deletions
diff --git a/libguile/numbers.c b/libguile/numbers.c index 7bbdc56c0..63a6501dd 100644 --- a/libguile/numbers.c +++ b/libguile/numbers.c @@ -8906,7 +8906,8 @@ SCM_PRIMITIVE_GENERIC (scm_angle, "angle", 1, 0, 0, } else if (SCM_REALP (z)) { - if (SCM_REAL_VALUE (z) >= 0) + double x = SCM_REAL_VALUE (z); + if (x > 0.0 || double_is_non_negative_zero (x)) return flo0; else return scm_from_double (atan2 (0.0, -1.0)); diff --git a/test-suite/tests/numbers.test b/test-suite/tests/numbers.test index b1f3d8bc0..a6697c9a3 100644 --- a/test-suite/tests/numbers.test +++ b/test-suite/tests/numbers.test @@ -4241,7 +4241,7 @@ (with-test-prefix "angle" (define pi 3.14159265358979323846) (define (almost= x y) - (> 0.01 (magnitude (- x y)))) + (> 0.000001 (magnitude (- x y)))) (pass-if (documented? angle)) @@ -4252,7 +4252,10 @@ (pass-if "bignum -ve" (almost= pi (angle (1- fixnum-min)))) (pass-if "flonum +ve" (= 0 (angle 1.5))) - (pass-if "flonum -ve" (almost= pi (angle -1.5)))) + (pass-if "flonum -ve" (almost= pi (angle -1.5))) + + (pass-if "signed zero +ve" (= 0 (angle 0.0))) + (pass-if "signed zero -ve" (almost= pi (angle -0.0)))) ;;; ;;; inexact->exact |