Changeset e10e40


Ignore:
Timestamp:
03/23/12 04:13:07 (3 years ago)
Author:
Raymond Toy <toy.raymond@…>
Branches:
master
Children:
fe8cff
Parents:
1d9ec0
Message:

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

Files:
2 edited

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  
    14701470      (check-accuracy 210.8 e true))
    14711471  nil)
     1472
     1473(rt:deftest expintegral-e.5d
     1474    (let* ((x .5d0)
     1475           (e (exp-integral-e 2d0 x))
     1476           (true #q0.3266438623245530177304015653336378358284946903290101))
     1477      (check-accuracy 51.2 e true))
     1478  nil)
     1479
     1480(rt:deftest expintegral-e.5q
     1481    (let* ((x #q.5)
     1482           (e (exp-integral-e #q2 x))
     1483           (true #q0.326643862324553017730401565333637835828494690329010198058745549181386569998611289568))
     1484      (check-accuracy 208.4 e true))
     1485  nil)
Note: See TracChangeset for help on using the changeset viewer.