Télécharger rffti1.eso

Retour à la liste

Numérotation des lignes :

rffti1
  1. C RFFTI1 SOURCE BP208322 18/10/08 21:15:21 9952
  2. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  3. C
  4. C FFTPACK 5.1
  5. C
  6. C Authors: Paul N. Swarztrauber and Richard A. Valent
  7. C
  8. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  9.  
  10. SUBROUTINE RFFTI1 (N,WA,FAC)
  11. IMPLICIT INTEGER(I-N)
  12. IMPLICIT REAL*8(A-H,O-Z)
  13. REAL*8 WA(N) ,FAC(15)
  14. INTEGER NTRYH(4)
  15. REAL*8 TPI,ARGH,ARGLD,ARG
  16. DATA NTRYH(1),NTRYH(2),NTRYH(3),NTRYH(4)/4,2,3,5/
  17. C
  18. NL = N
  19. NF = 0
  20. J = 0
  21. 101 J = J+1
  22. IF (J-4) 102,102,103
  23. 102 NTRY = NTRYH(J)
  24. GO TO 104
  25. 103 NTRY = NTRY+2
  26. 104 NQ = NL/NTRY
  27. NR = NL-NTRY*NQ
  28. IF (NR) 101,105,101
  29. 105 NF = NF+1
  30. FAC(NF+2) = REAL(NTRY)
  31. NL = NQ
  32. IF (NTRY .NE. 2) GO TO 107
  33. IF (NF .EQ. 1) GO TO 107
  34. DO 106 I=2,NF
  35. IB = NF-I+2
  36. FAC(IB+2) = FAC(IB+1)
  37. 106 CONTINUE
  38. FAC(3) = REAL(2)
  39. 107 IF (NL .NE. 1) GO TO 104
  40. FAC(1) = REAL(N)
  41. FAC(2) = REAL(NF)
  42. TPI = 8.D0*ATAN(1.D0)
  43. ARGH = TPI/REAL(N)
  44. IS = 0
  45. NFM1 = NF-1
  46. L1 = 1
  47. IF (NFM1 .EQ. 0) RETURN
  48. DO 110 K1=1,NFM1
  49. IP = INT(FAC(K1+2))
  50. LD = 0
  51. L2 = L1*IP
  52. IDO = N/L2
  53. IPM = IP-1
  54. DO 109 J=1,IPM
  55. LD = LD+L1
  56. I = IS
  57. ARGLD = REAL(LD)*ARGH
  58. FI = 0.
  59. DO 108 II=3,IDO,2
  60. I = I+2
  61. FI = FI+1.
  62. ARG = FI*ARGLD
  63. WA(I-1) = COS(ARG)
  64. WA(I) = SIN(ARG)
  65. 108 CONTINUE
  66. IS = IS+IDO
  67. 109 CONTINUE
  68. L1 = L2
  69. 110 CONTINUE
  70. RETURN
  71. END
  72.  
  73.  
  74.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales