Changeset fe8cffb5ee8e7161addf7586ecaee00682c6bf1b

Show
Ignore:
Timestamp:
03/22/12 22:58:43 (2 years ago)
Author:
Raymond Toy <toy.raymond@…>
Children:
4c1ed0f45e79bbe467f7d4694f417ff92ae46adb, bc851c79e6fffe06c4383142bc2dfeb154fbde14
Parents:
e10e402d446339130042607357b0129b35a1faa7
git-committer:
Raymond Toy <toy.raymond@…> (03/22/12 22:58:43)
Message:

Clean up implemenation of s-exp-integral-e a bit.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • qd-gamma.lisp

    re10e40 rfe8cff  
    498498             (= v (ftruncate v))) 
    499499        ;; v is an integer 
    500         (let ((n (truncate v))) 
    501           (- (* (/ (expt -z (- v 1)) 
     500        (let* ((n (truncate v)) 
     501               (n-1 (1- n))) 
     502          (- (* (/ (expt -z n-1) 
    502503                   (gamma v)) 
    503504                (- (psi v) (log z))) 
    504505             (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)))) 
     506                   for term = 1 then (* term (/ -z k)) 
     507                   for sum = (/ (- 1 v)) then (+ sum (let ((denom (- k n-1))) 
    507508                                                       (if (zerop denom) 
    508509                                                           0 
    509                                                            (/ term (+ k 1 -v))))) 
    510                        when (< (abs term) (* (abs sum) eps)) 
    511                         return sum))) 
     510                                                           (/ term denom)))) 
     511                   when (< (abs term) (* (abs sum) eps)) 
     512                    return sum))) 
    512513        (loop for k from 0 
    513514              for term = 1 then (* term (/ -z k))