From: Pierre R. M. <pm...@pm...> - 2007-01-12 20:48:38
|
Am 30.10.2006 um 11:53 schrieb Nikodemus Siivola: > Update of /cvsroot/sbcl/sbcl/src/code > In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv18144/src/code > > Modified Files: > irrat.lisp > Log Message: > 0.9.18.17: Hyperbolic functions for Win32 > * Lisp-side definitions for %TANH, %ASINH, %ACOSH, and %ATANH. I think the %atanh definition contains a minor think-o, which breaks =20 atanh: (atanh 0.9d0) on non-Win32: 1.4722194895832204d0 (atanh 0.9d0) on Win32: #C(1.4722194895832204d0 1.5707963267948966d0) > + (declaim (inline %atanh)) > + (defun %atanh (number) > + (let ((ratio (/ (1+ number) (1- number)))) I think you meant (/ (+ 1 number) (- 1 number)) here, with (- 1 =20 number) !=3D (1- number)... Patch below that fixes this, SBCL rebuilds fine with this change, and =20= delivers correct atanh results again. Regs, Pierre. Index: src/code/irrat.lisp =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- src/code/irrat.lisp (revision 4) +++ src/code/irrat.lisp (working copy) @@ -95,7 +95,7 @@ (log (+ number (sqrt (- (* number number) 1.0d0))) #.(exp 1.0d0))) (declaim (inline %atanh)) (defun %atanh (number) - (let ((ratio (/ (1+ number) (1- number)))) + (let ((ratio (/ (+ 1 number) (- 1 number)))) ;; Were we effectively zero? (if (=3D ratio -1.0d0) 0.0d0 --=20 Pierre R. Mai <pm...@pm...> PMSF IT Consulting Pierre R. Mai http://www.pmsf.de/ Ludwig-Thoma-Str. 11 Schlei=DFheimer Str. 263 87724 Ottobeuren 80809 M=FCnchen Tel. +49(0)8332/93669-13 +49(0)89/35061750 Fax +49(0)8332/93669-03 Germany |