summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2012-07-28 12:44:36 +0200
committerAndy Wingo <wingo@pobox.com>2012-07-28 12:44:36 +0200
commite0f68f785d3899c6b565c12d6540f20730fcd9cc (patch)
tree872c45f23ce3f576525e8e15121b5b65f1f37e87
parent2842a17112418052975728e3dd75e03aa6540aed (diff)
parent10a97755d4a1b2034f8a131215a92c0b29000969 (diff)
downloadguile-e0f68f785d3899c6b565c12d6540f20730fcd9cc.tar.gz
1;3202;0cMerge remote-tracking branch 'origin/stable-2.0'
-rw-r--r--libguile/numbers.c3
-rw-r--r--test-suite/tests/numbers.test7
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