Changeset 015558


Ignore:
Timestamp:
04/08/12 06:28:08 (3 years ago)
Author:
Raymond Toy <toy.raymond@…>
Branches:
master
Children:
c86217
Parents:
a5a4c7
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.

File:
1 edited

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)))
Note: See TracChangeset for help on using the changeset viewer.