Changeset 015558a3df8fae2686c7b6e2f049da3f4b1a2cd8

Show
Ignore:
Timestamp:
04/07/12 23:28:08 (2 years ago)
Author:
Raymond Toy <toy.raymond@…>
Children:
c86217a5f7191f1a29566d6ee24cb57344dd546d
Parents:
a5a4c7acd95d1946e7cf426f9a927a918c9e2afc
git-committer:
Raymond Toy <toy.raymond@…> (04/07/12 23:28:08)
Message:

Fix a divide by zero error in s-exp-integral-e for v = 1. We need to
skip the first term in the series.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • qd-gamma.lisp

    rfe8cff r015558  
    258258;; result is greater than 1. 
    259259#+nil 
    260 (defun erf (z) 
     260(defun cf-erf (z) 
    261261  (let* ((z2 (* z z)) 
    262262         (twoz2 (* 2 z2))) 
     
    505505             (loop for k from 0 
    506506                   for term = 1 then (* term (/ -z k)) 
    507                    for sum = (/ (- 1 v)) then (+ sum (let ((denom (- k n-1))) 
    508                                                        (if (zerop denom) 
    509                                                            0 
    510                                                            (/ term denom)))) 
     507                   for sum = (if (zerop n-1) 
     508                                 0 
     509                                 (/ (- 1 v))) 
     510                     then (+ sum (let ((denom (- k n-1))) 
     511                                   (if (zerop denom) 
     512                                       0 
     513                                       (/ term denom)))) 
    511514                   when (< (abs term) (* (abs sum) eps)) 
    512515                     return sum)))