Raymond Toy wrote:
> A quick fix would be to add #c(0 0) to z in expintegral-e (or higher?)
> This will force any negative zeros to become positive zeros.
This patch, along with your expintegral-ei phase change, fixes the
errors I was getting.
Now we can concentrate on why cmucl gets errors like this:
********************** Problem 143 ***************
Input:
test_table(lambda([z], expintegral_si(z)), 'si_2, 230, 1.95e-10)
Result:
error-catch
This differed from the expected result:
[]
Ray
patch:
diff -u -r1.5 expintegral.lisp
--- expintegral.lisp 23 Oct 2008 11:08:05 -0000 1.5
+++ expintegral.lisp 24 Oct 2008 19:27:12 -0000
@@ -571,7 +571,8 @@
;; We expand in a power series.
(when *debug-expintegral*
(format t "~&We expand in a power series.~%"))
- (let* ((n1 (- n 1))
+ (let* ((z (+ z #c(0d0 0d0)))
+ (n1 (- n 1))
(euler (mget '$%gamma '$numer))
(r (if (= n1 0) (- (- euler) (log z)) (/ 1.0 n1)))
(f 1.0)