Changeset e10e402d446339130042607357b0129b35a1faa7

Show
Ignore:
Timestamp:
03/22/12 21:13:07 (2 years ago)
Author:
Raymond Toy <toy.raymond@…>
Children:
fe8cffb5ee8e7161addf7586ecaee00682c6bf1b
Parents:
1d9ec007bb4172eaccb8ca1db543c1218192cdb5
git-committer:
Raymond Toy <toy.raymond@…> (03/22/12 21:13:07)
Message:

Correct the computation of s-exp-integral-e when v is an integer. Add
tests.

Files:
2 modified

Legend:

Unmodified
Added
Removed
  • qd-gamma.lisp

    r1d9ec0 re10e40  
    502502                   (gamma v)) 
    503503                (- (psi v) (log z))) 
    504              (loop for k from 0 below n 
    505                    for term = 1 then (* term (/ -z k)) 
    506                    for sum = (/ (- 1 v)) then (+ sum (/ term (+ k 1 -v))) 
    507                    when (< (abs term) (* (abs sum) eps)) 
    508                      return sum) 
    509              (loop for k from n 
    510                    for term = 1 then (* term (/ -z k)) 
    511                    for sum = 0 then (+ sum (/ term (+ k 1 -v))) 
    512                    when (< (abs term) (* (abs sum) eps)) 
    513                      return sum))) 
     504             (loop for k from 0 
     505                       for term = 1 then (* term (/ -z k)) 
     506                   for sum = (/ (- 1 v)) then (+ sum (let ((denom (+ k 1 (- n)))) 
     507                                                       (if (zerop denom) 
     508                                                           0 
     509                                                           (/ term (+ k 1 -v))))) 
     510                       when (< (abs term) (* (abs sum) eps)) 
     511                         return sum))) 
    514512        (loop for k from 0 
    515513              for term = 1 then (* term (/ -z k)) 
  • rt-tests.lisp

    r1d9ec0 re10e40  
    14651465      (check-accuracy 210.8 e true)) 
    14661466  nil) 
     1467 
     1468(rt:deftest expintegral-e.5d 
     1469    (let* ((x .5d0) 
     1470           (e (exp-integral-e 2d0 x)) 
     1471           (true #q0.3266438623245530177304015653336378358284946903290101)) 
     1472      (check-accuracy 51.2 e true)) 
     1473  nil) 
     1474 
     1475(rt:deftest expintegral-e.5q 
     1476    (let* ((x #q.5) 
     1477           (e (exp-integral-e #q2 x)) 
     1478           (true #q0.326643862324553017730401565333637835828494690329010198058745549181386569998611289568)) 
     1479      (check-accuracy 208.4 e true)) 
     1480  nil)