[oct-scm] [oct-git]OCT: A portable Lisp implementation for quad-double precision floats branch master updated. f8943af6bff60e23d679089db5207b4834aa83ff
Raymond Toy
rtoy at common-lisp.net
Mon Apr 9 15:58:48 UTC 2012
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "OCT: A portable Lisp implementation for quad-double precision floats".
The branch, master has been updated
via f8943af6bff60e23d679089db5207b4834aa83ff (commit)
via cb1a5d41baf9d4db12a2563a230d0a1e55c8adea (commit)
from 6cfb0ac4b6bcc1a25bc119e87fd2b57bfa1f4355 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit f8943af6bff60e23d679089db5207b4834aa83ff
Author: Raymond Toy <rtoy at google.com>
Date: Mon Apr 9 08:55:27 2012 -0700
Fix two typos in the names of tests.
diff --git a/rt-tests.lisp b/rt-tests.lisp
index 915f808..0544ea8 100644
--- a/rt-tests.lisp
+++ b/rt-tests.lisp
@@ -908,7 +908,7 @@
(check-accuracy 50 val 0d0))
nil)
-(rt:deftest oct.jacobi-sn.1q
+(rt:deftest oct.jacobi-cn.1q
(let* ((ek (elliptic-k #q.5))
(val (jacobi-cn ek #q.5)))
(check-accuracy 210 val #q0))
@@ -1179,7 +1179,7 @@
for m = (random #q1)
for t3 = (elliptic-theta-3 0 (elliptic-nome m))
for true = (sqrt (/ (* 2 (elliptic-k m)) (float-pi m)))
- for result = (check-accuracy 206 t3 true)
+ for result = (check-accuracy 205.7 t3 true)
when result
append (list (list (list k m) result)))
nil)
@@ -1411,7 +1411,7 @@
(check-accuracy 49.8 p true))
nil)
-(rt:deftest psi.2d
+(rt:deftest psi.2q
(let* ((z (float 4/3 #q1))
(p (psi z))
(true (- 3
commit cb1a5d41baf9d4db12a2563a230d0a1e55c8adea
Author: Raymond Toy <rtoy at google.com>
Date: Mon Apr 9 08:52:08 2012 -0700
Fix some mistakes in exp-integral-e when changing algorithm to use
series.
diff --git a/qd-gamma.lisp b/qd-gamma.lisp
index fe79813..25fa38e 100644
--- a/qd-gamma.lisp
+++ b/qd-gamma.lisp
@@ -532,36 +532,21 @@
;; for |arg(z)| < pi.
;;
;;
- (let* ((prec (float-contagion v z))
- (v (apply-contagion v prec))
- (z (apply-contagion z prec)))
+ (with-floating-point-contagion (v z)
(cond ((and (realp v) (minusp v))
;; E(-v, z) = z^(-v-1)*incomplete_gamma_tail(v+1,z)
(let ((-v (- v)))
(* (expt z (- v 1))
(incomplete-gamma-tail (+ -v 1) z))))
- ((< (abs z) 1)
- ;; Use series for small z
+ ((or (< (abs z) 1) (>= (abs (phase z)) 3.1))
+ ;; Use series for small z or if z is near the negative real
+ ;; axis because the continued fraction does not converge on
+ ;; the negative axis and converges slowly near the negative
+ ;; axis.
(s-exp-integral-e v z))
- ((>= (abs (phase z)) 3.1)
- ;; The continued fraction doesn't converge on the negative
- ;; real axis, and converges very slowly near the negative
- ;; real axis, so use the incomplete-gamma-tail function in
- ;; this region. "Closeness" to the negative real axis is
- ;; teken to mean that z is in a sector near the axis.
- ;;
- ;; E(v,z) = z^(v-1)*incomplete_gamma_tail(1-v,z)
- (* (expt z (- v 1))
- (incomplete-gamma-tail (+ -v 1) z))))
- ((or (< (abs z) 1) (>= (abs (phase z)) 3.1))
- ;; Use series for small z or if z is near the negative real
- ;; axis because the continued fraction does not converge on
- ;; the negative axis and converges slowly near the negative
- ;; axis.
- (s-exp-integral-e v z))
- (t
- ;; Use continued fraction for everything else.
- (cf-exp-integral-e v z))))
+ (t
+ ;; Use continued fraction for everything else.
+ (cf-exp-integral-e v z)))))
;; Series for Fresnel S
;;
-----------------------------------------------------------------------
Summary of changes:
qd-gamma.lisp | 33 +++++++++------------------------
rt-tests.lisp | 6 +++---
2 files changed, 12 insertions(+), 27 deletions(-)
hooks/post-receive
--
OCT: A portable Lisp implementation for quad-double precision floats
More information about the oct-cvs
mailing list