Teach (log1p x) to return complex results for real x < -1.
authorTaylor R Campbell <campbell@mumble.net>
Sun, 18 Nov 2018 03:36:52 +0000 (03:36 +0000)
committerTaylor R Campbell <campbell@mumble.net>
Sun, 18 Nov 2018 06:11:43 +0000 (06:11 +0000)
src/runtime/arith.scm
tests/runtime/test-arith.scm

index d8e0b5faa795f0af494129496eb825e5f0c37540..e5409c8cd15e36982183056bd7767d3f9eddf76a 100644 (file)
@@ -1744,7 +1744,9 @@ USA.
       ((copy real:expm1) z)))
 
 (define (complex:log1p z)
-  (if (recnum? z)
+  (if (or (recnum? z)
+         (and (real:real? z)
+              (<= z -1)))
       (complex:log (complex:+ z 1))    ;XXX
       ((copy real:log1p) z)))
 
index 362087ec6eb148346873afd0462d2ccb92732965..c93f276d51f90bbb03cf7643615f529ab0dba68a 100644 (file)
@@ -252,7 +252,7 @@ USA.
    (list 0.25 .22314355131420976)
    (list (- 1 (sqrt 1/2)) 0.25688251232181475)
    (list 0.3 .26236426446749106)
-   (list -2 +3.141592653589793i 'xfail))
+   (list -2 +3.141592653589793i))
   (lambda (v)
     (let ((x (car v))
           (z (cadr v))