This site is a static rendering of the Trac instance that was used by R7RS-WG1 for its work on R7RS-small (PDF), which was ratified in 2013. For more information, see Home.
Source for wiki ComplexLog version 6
author
cowan
comment
ipnr
127.11.51.1
name
ComplexLog
readonly
0
text
== Complex logarithm ==
Guy Steele's three-part smoke test for Common Lisp involves evaluating `(atanh -2)`. Traditionally, a Lisp passes if it returns a complex number; if it returns the ''correct'' complex number, so much the better. The `atanh` function is not provided in R7RS-small, so I defined it as follows:
{{{
(define (atanh x)
(/ (- (log (+ 1 x))
(log (- 1 x)))
2))
}}}
(Note: KSi already defines `atanh` and will not allow its redefinition.)
Returns `-0.5493061443340549+1.5707963267948966i`, the ''correct'' complex number: Racket, Gauche, MIT, Chicken with the numbers egg, Scheme48, Guile, Kawa, Chibi, Chez, Vicare, Larceny, Ypsilon, !IronScheme, STklos, KSi, S7, Spark, Sagittarius
Returns NaN (i.e. it is attempting to use a real-number log function) when the argument is `2`, but returns the correct complex number when the argument is `2.0+0.0i`: scsh, SISC, Mosh
Returns an incorrect complex number: SCM
No support for log of negative numbers: UMB, Owl Lisp
No complex numbers: plain Chicken, Bigloo, Ikarus, NexJ, !SigScheme, Shoe, !TinyScheme, Scheme 9, Dream, RScheme, BDC, XLisp, Rep, Schemik, Elk, VX, Oaklisp, Llava, SXM, Sizzle, !FemtoLisp, Dfsch, Inlab.
time
2014-12-28 08:03:19
version
6