@@ -454,27 +454,28 @@ def fftl(a, xsave, rk=1, tdir=1):
454454 Transformed array Ã(k): a(j) is Ã(k_j) at k_j = k_c exp[(j-jc) dlnr].
455455
456456 """
457+ fct = a .copy ()
457458 q = xsave [0 ]
458459 dlnr = xsave [1 ]
459460 kr = xsave [2 ]
460461
461462 # centre point of array
462- jc = np .array ((a .size + 1 )/ 2.0 )
463- j = np .arange (a .size )+ 1
463+ jc = np .array ((fct .size + 1 )/ 2.0 )
464+ j = np .arange (fct .size )+ 1
464465
465466 # a(r) = A(r) (r/rc)^[-dir*(q-.5)]
466- a *= np .exp (- tdir * (q - 0.5 )* (j - jc )* dlnr )
467+ fct *= np .exp (- tdir * (q - 0.5 )* (j - jc )* dlnr )
467468
468469 # transform a(r) -> ã(k)
469- a = fhtq (a , xsave , tdir )
470+ fct = fhtq (fct , xsave , tdir )
470471
471472 # Ã(k) = ã(k) k^[-dir*(q+.5)] rc^[-dir*(q-.5)]
472473 # = ã(k) (k/kc)^[-dir*(q+.5)] (kc rc)^(-dir*q) (rc/kc)^(dir*.5)
473474 lnkr = np .log (kr )
474475 lnrk = np .log (rk )
475- a *= np .exp (- tdir * ((q + 0.5 )* (j - jc )* dlnr + q * lnkr - lnrk / 2.0 ))
476+ fct *= np .exp (- tdir * ((q + 0.5 )* (j - jc )* dlnr + q * lnkr - lnrk / 2.0 ))
476477
477- return a
478+ return fct
478479
479480
480481def fht (a , xsave , tdir = 1 ):
@@ -529,27 +530,28 @@ def fht(a, xsave, tdir=1):
529530 Transformed array Ã(k): a(j) is Ã(k_j) at k_j = k_c exp[(j-jc) dlnr].
530531
531532 """
533+ fct = a .copy ()
532534 q = xsave [0 ]
533535 dlnr = xsave [1 ]
534536 kr = xsave [2 ]
535537
536538 # a(r) = A(r) (r/rc)^(-dir*q)
537539 if q != 0 :
538540 # centre point of array
539- jc = np .array ((a .size + 1 )/ 2.0 )
540- j = np .arange (a .size )+ 1
541- a *= np .exp (- tdir * q * (j - jc )* dlnr )
541+ jc = np .array ((fct .size + 1 )/ 2.0 )
542+ j = np .arange (fct .size )+ 1
543+ fct *= np .exp (- tdir * q * (j - jc )* dlnr )
542544
543545 # transform a(r) -> ã(k)
544- a = fhtq (a , xsave , tdir )
546+ fct = fhtq (fct , xsave , tdir )
545547
546548 # Ã(k) = ã(k) (k rc)^(-dir*q)
547549 # = ã(k) (k/kc)^(-dir*q) (kc rc)^(-dir*q)
548550 if q != 0 :
549551 lnkr = np .log (kr )
550- a *= np .exp (- tdir * q * ((j - jc )* dlnr + lnkr ))
552+ fct *= np .exp (- tdir * q * ((j - jc )* dlnr + lnkr ))
551553
552- return a
554+ return fct
553555
554556
555557def fhtq (a , xsave , tdir = 1 ):
@@ -592,47 +594,48 @@ def fhtq(a, xsave, tdir=1):
592594 dlnr].
593595
594596 """
597+ fct = a .copy ()
595598 q = xsave [0 ]
596- n = a .size
599+ n = fct .size
597600
598601 # normal FFT
599- # a = rfft(a )
600- # _raw_fft(a , n, -1, 1, 1, _fftpack.drfft)
601- a = drfft (a , n , 1 , 0 )
602+ # fct = rfft(fct )
603+ # _raw_fft(fct , n, -1, 1, 1, _fftpack.drfft)
604+ fct = drfft (fct , n , 1 , 0 )
602605
603606 m = np .arange (1 , n / 2 , dtype = int ) # index variable
604607 if q == 0 : # unbiased (q = 0) transform
605608 # multiply by (kr)^[- i 2 m pi/(n dlnr)] U_mu[i 2 m pi/(n dlnr)]
606- ar = a [2 * m - 1 ]
607- ai = a [2 * m ]
608- a [2 * m - 1 ] = ar * xsave [2 * m + 1 ] - ai * xsave [2 * m + 2 ]
609- a [2 * m ] = ar * xsave [2 * m + 2 ] + ai * xsave [2 * m + 1 ]
609+ ar = fct [2 * m - 1 ]
610+ ai = fct [2 * m ]
611+ fct [2 * m - 1 ] = ar * xsave [2 * m + 1 ] - ai * xsave [2 * m + 2 ]
612+ fct [2 * m ] = ar * xsave [2 * m + 2 ] + ai * xsave [2 * m + 1 ]
610613 # problem(2*m)atical last element, for even n
611614 if np .mod (n , 2 ) == 0 :
612615 ar = xsave [- 2 ]
613616 if (tdir == 1 ): # forward transform: multiply by real part
614617 # Why? See http://casa.colorado.edu/~ajsh/FFTLog/index.html#ure
615- a [- 1 ] *= ar
618+ fct [- 1 ] *= ar
616619 elif (tdir == - 1 ): # backward transform: divide by real part
617620 # Real part ar can be zero for maximally bad choice of kr.
618621 # This is unlikely to happen by chance, but if it does, policy
619622 # is to let it happen. For low-ringing kr, imaginary part ai
620623 # is zero by construction, and real part ar is guaranteed
621624 # nonzero.
622- a [- 1 ] /= ar
625+ fct [- 1 ] /= ar
623626
624627 else : # biased (q != 0) transform
625628 # multiply by (kr)^[- i 2 m pi/(n dlnr)] U_mu[q + i 2 m pi/(n dlnr)]
626629 # phase
627- ar = a [2 * m - 1 ]
628- ai = a [2 * m ]
629- a [2 * m - 1 ] = ar * xsave [3 * m + 2 ] - ai * xsave [3 * m + 3 ]
630- a [2 * m ] = ar * xsave [3 * m + 3 ] + ai * xsave [3 * m + 2 ]
630+ ar = fct [2 * m - 1 ]
631+ ai = fct [2 * m ]
632+ fct [2 * m - 1 ] = ar * xsave [3 * m + 2 ] - ai * xsave [3 * m + 3 ]
633+ fct [2 * m ] = ar * xsave [3 * m + 3 ] + ai * xsave [3 * m + 2 ]
631634
632635 if tdir == 1 : # forward transform: multiply by amplitude
633- a [0 ] *= xsave [3 ]
634- a [2 * m - 1 ] *= xsave [3 * m + 1 ]
635- a [2 * m ] *= xsave [3 * m + 1 ]
636+ fct [0 ] *= xsave [3 ]
637+ fct [2 * m - 1 ] *= xsave [3 * m + 1 ]
638+ fct [2 * m ] *= xsave [3 * m + 1 ]
636639
637640 elif tdir == - 1 : # backward transform: divide by amplitude
638641 # amplitude of m=0 element
@@ -641,38 +644,38 @@ def fhtq(a, xsave, tdir=1):
641644 # Amplitude of m=0 element can be zero for some mu, q
642645 # combinations (singular inverse); policy is to drop
643646 # potentially infinite constant.
644- a [0 ] = 0
647+ fct [0 ] = 0
645648 else :
646- a [0 ] /= ar
649+ fct [0 ] /= ar
647650
648651 # remaining amplitudes should never be zero
649- a [2 * m - 1 ] /= xsave [3 * m + 1 ]
650- a [2 * m ] /= xsave [3 * m + 1 ]
652+ fct [2 * m - 1 ] /= xsave [3 * m + 1 ]
653+ fct [2 * m ] /= xsave [3 * m + 1 ]
651654
652655 # problematical last element, for even n
653656 if np .mod (n , 2 ) == 0 :
654657 m = int (n / 2 )
655658 ar = xsave [3 * m + 2 ]* xsave [3 * m + 1 ]
656659 if tdir == 1 : # forward transform: multiply by real part
657- a [- 1 ] *= ar
660+ fct [- 1 ] *= ar
658661 elif (tdir == - 1 ): # backward transform: divide by real part
659662 # Real part ar can be zero for maximally bad choice of kr.
660663 # This is unlikely to happen by chance, but if it does, policy
661664 # is to let it happen. For low-ringing kr, imaginary part ai
662665 # is zero by construction, and real part ar is guaranteed
663666 # nonzero.
664- a [- 1 ] /= ar
667+ fct [- 1 ] /= ar
665668
666669 # normal FFT back
667- # a = irfft(a )
668- # _raw_fft(a , n, -1, -1, 1, _fftpack.drfft)
669- a = drfft (a , n , - 1 , 1 )
670+ # fct = irfft(fct )
671+ # _raw_fft(fct , n, -1, -1, 1, _fftpack.drfft)
672+ fct = drfft (fct , n , - 1 , 1 )
670673
671674 # reverse the array and at the same time undo the FFTs' multiplication by n
672675 # => Just reverse the array, the rest is already done in drfft.
673- a = a [::- 1 ]
676+ fct = fct [::- 1 ]
674677
675- return a
678+ return fct
676679
677680
678681def krgood (mu , q , dlnr , kr ):
0 commit comments