Add some atan tests.
authorTaylor R Campbell <campbell@mumble.net>
Sun, 18 Nov 2018 05:17:32 +0000 (05:17 +0000)
committerTaylor R Campbell <campbell@mumble.net>
Sun, 18 Nov 2018 06:11:43 +0000 (06:11 +0000)
Currently (atan -2i) is broken because of an unfortunate consequence
of exact Scheme arithmetic failing to propagate sign changes through
zero like floating-point does.

tests/runtime/test-arith.scm

index c93f276d51f90bbb03cf7643615f529ab0dba68a..7ee2b6371c19290f3dc26756ad952cdc94c5e5b2 100644 (file)
@@ -472,4 +472,24 @@ USA.
    (flo:nan.0)
    (flo:+inf.0)
    (flo:-inf.0))
-  assert-not-integer)
\ No newline at end of file
+  assert-not-integer)
+
+(define-test 'atan-0
+  (lambda ()
+    (assert-eqv (atan 0) 0)))
+
+(define-enumerated-test 'atan
+  (vector
+   (vector +2i +1.5707963267948966+.5493061443340549i)
+   (vector +0.+2i +1.5707963267948966+.5493061443340549i)
+   (vector -0.+2i -1.5707963267948966+.5493061443340549i)
+   (vector -2i +1.5707963267948966-.5493061443340549i 'xfail)
+   (vector +0.-2i +1.5707963267948966-.5493061443340549i)
+   (vector -0.-2i -1.5707963267948966-.5493061443340549i))
+  (lambda (v)
+    (let ((x (vector-ref v 0))
+          (t (vector-ref v 1))
+          (xfail? (if (<= 3 (vector-length v)) (vector-ref v 2) #f)))
+      (with-expected-failure xfail?
+        (lambda ()
+          (assert-<= (relerr t (atan x)) 1e-15))))))
\ No newline at end of file