Changeset 235ac2e4756b7c3f03815b267d292a26e8e1df37

Show
Ignore:
Timestamp:
04/12/12 14:37:27 (2 years ago)
Author:
Raymond Toy <toy.raymond@…>
Children:
5daefcc43f8b88741634f7a982bdb8b976739a1c
Parents:
0823acf49a91cbdb9a3e7f1faae2efe128580038
git-committer:
Raymond Toy <toy.raymond@…> (04/12/12 14:37:27)
Message:

Fix for complex args.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • qd-bessel.lisp

    r9fd2eb r235ac2  
    184184  (let* ((iz (* #c(0 1) z)) 
    185185         (i+ (exp-arc-i-2 iz v))) 
    186     (cond ((= v (ftruncate v)) 
     186    (cond ((and (= v (ftruncate v)) (realp z)) 
    187187           ;; We can simplify the result 
    188            (let ((c (cis (* v (float-pi i+) -1/2)))) 
     188           (let ((c (exp (* v (float-pi i+) #c(0 -1/2))))) 
    189189             (/ (+ (* c i+) 
    190190                   (* (conjugate c) (conjugate i+))) 
     
    193193          (t 
    194194           (let ((i- (exp-arc-i-2 (- iz ) v))) 
    195              (/ (+ (* (cis (* v (float-pi i+) -1/2)) 
     195             (/ (+ (* (exp (* v (float-pi i+) #c(0 -1/2))) 
    196196                      i+) 
    197                    (* (cis (* v (float-pi i+) 1/2)) 
     197                   (* (exp (* v (float-pi i+) #c(0 1/2))) 
    198198                      i-)) 
    199199                (float-pi i+) 
     
    395395    (an-clrhash) 
    396396    (%big-a-clrhash) 
    397     (cond ((= vv v) 
    398            ;; v is an integer 
     397    (cond ((and (= vv v) (realp z)) 
     398           ;; v is an integer and z is real 
    399399           (integer-bessel-j-exp-arc v z)) 
    400400          (t 
     
    403403                 (vpi (* v (float-pi (realpart z))))) 
    404404             (+ (integer-bessel-j-exp-arc v z) 
    405                 (* z 
    406                    (/ (sin vpi) vpi) 
    407                    (+ (/ -1 z) 
    408                       (sum-ab big-n v z) 
    409                       (sum-big-ia big-n v z))))))))) 
     405                (if (= vv v) 
     406                    0 
     407                    (* z 
     408                       (/ (sin vpi) vpi) 
     409                       (+ (/ -1 z) 
     410                          (sum-ab big-n v z) 
     411                          (sum-big-ia big-n v z)))))))))) 
    410412 
    411413;; Bessel Y