Télécharger r1fgkf.eso

Retour à la liste

Numérotation des lignes :

r1fgkf
  1. C R1FGKF SOURCE BP208322 18/10/08 21:15:16 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 R1FGKF (IDO,IP,L1,IDL1,CC,C1,C2,IN1,
  11. 1 CH,CH2,IN2,WA)
  12. IMPLICIT INTEGER(I-N)
  13. IMPLICIT REAL*8(A-H,O-Z)
  14. REAL*8 CH(IN2,IDO,L1,IP) ,CC(IN1,IDO,IP,L1),
  15. 1 C1(IN1,IDO,L1,IP) ,C2(IN1,IDL1,IP),
  16. 2 CH2(IN2,IDL1,IP) ,WA(IDO)
  17. C
  18. TPI=8.D0*ATAN(1.0D0)
  19. ARG = TPI/REAL(IP)
  20. DCP = COS(ARG)
  21. DSP = SIN(ARG)
  22. IPPH = (IP+1)/2
  23. IPP2 = IP+2
  24. IDP2 = IDO+2
  25. NBD = (IDO-1)/2
  26. IF (IDO .EQ. 1) GO TO 119
  27. DO 101 IK=1,IDL1
  28. CH2(1,IK,1) = C2(1,IK,1)
  29. 101 CONTINUE
  30. DO 103 J=2,IP
  31. DO 102 K=1,L1
  32. CH(1,1,K,J) = C1(1,1,K,J)
  33. 102 CONTINUE
  34. 103 CONTINUE
  35. IF (NBD .GT. L1) GO TO 107
  36. IS = -IDO
  37. DO 106 J=2,IP
  38. IS = IS+IDO
  39. IDIJ = IS
  40. DO 105 I=3,IDO,2
  41. IDIJ = IDIJ+2
  42. DO 104 K=1,L1
  43. CH(1,I-1,K,J) = WA(IDIJ-1)*C1(1,I-1,K,J)+WA(IDIJ)
  44. 1 *C1(1,I,K,J)
  45. CH(1,I,K,J) = WA(IDIJ-1)*C1(1,I,K,J)-WA(IDIJ)
  46. 1 *C1(1,I-1,K,J)
  47. 104 CONTINUE
  48. 105 CONTINUE
  49. 106 CONTINUE
  50. GO TO 111
  51. 107 IS = -IDO
  52. DO 110 J=2,IP
  53. IS = IS+IDO
  54. DO 109 K=1,L1
  55. IDIJ = IS
  56. DO 108 I=3,IDO,2
  57. IDIJ = IDIJ+2
  58. CH(1,I-1,K,J) = WA(IDIJ-1)*C1(1,I-1,K,J)+WA(IDIJ)
  59. 1 *C1(1,I,K,J)
  60. CH(1,I,K,J) = WA(IDIJ-1)*C1(1,I,K,J)-WA(IDIJ)
  61. 1 *C1(1,I-1,K,J)
  62. 108 CONTINUE
  63. 109 CONTINUE
  64. 110 CONTINUE
  65. 111 IF (NBD .LT. L1) GO TO 115
  66. DO 114 J=2,IPPH
  67. JC = IPP2-J
  68. DO 113 K=1,L1
  69. DO 112 I=3,IDO,2
  70. C1(1,I-1,K,J) = CH(1,I-1,K,J)+CH(1,I-1,K,JC)
  71. C1(1,I-1,K,JC) = CH(1,I,K,J)-CH(1,I,K,JC)
  72. C1(1,I,K,J) = CH(1,I,K,J)+CH(1,I,K,JC)
  73. C1(1,I,K,JC) = CH(1,I-1,K,JC)-CH(1,I-1,K,J)
  74. 112 CONTINUE
  75. 113 CONTINUE
  76. 114 CONTINUE
  77. GO TO 121
  78. 115 DO 118 J=2,IPPH
  79. JC = IPP2-J
  80. DO 117 I=3,IDO,2
  81. DO 116 K=1,L1
  82. C1(1,I-1,K,J) = CH(1,I-1,K,J)+CH(1,I-1,K,JC)
  83. C1(1,I-1,K,JC) = CH(1,I,K,J)-CH(1,I,K,JC)
  84. C1(1,I,K,J) = CH(1,I,K,J)+CH(1,I,K,JC)
  85. C1(1,I,K,JC) = CH(1,I-1,K,JC)-CH(1,I-1,K,J)
  86. 116 CONTINUE
  87. 117 CONTINUE
  88. 118 CONTINUE
  89. GO TO 121
  90. 119 DO 120 IK=1,IDL1
  91. C2(1,IK,1) = CH2(1,IK,1)
  92. 120 CONTINUE
  93. 121 DO 123 J=2,IPPH
  94. JC = IPP2-J
  95. DO 122 K=1,L1
  96. C1(1,1,K,J) = CH(1,1,K,J)+CH(1,1,K,JC)
  97. C1(1,1,K,JC) = CH(1,1,K,JC)-CH(1,1,K,J)
  98. 122 CONTINUE
  99. 123 CONTINUE
  100. C
  101. AR1 = 1.
  102. AI1 = 0.
  103. DO 127 L=2,IPPH
  104. LC = IPP2-L
  105. AR1H = DCP*AR1-DSP*AI1
  106. AI1 = DCP*AI1+DSP*AR1
  107. AR1 = AR1H
  108. DO 124 IK=1,IDL1
  109. CH2(1,IK,L) = C2(1,IK,1)+AR1*C2(1,IK,2)
  110. CH2(1,IK,LC) = AI1*C2(1,IK,IP)
  111. 124 CONTINUE
  112. DC2 = AR1
  113. DS2 = AI1
  114. AR2 = AR1
  115. AI2 = AI1
  116. DO 126 J=3,IPPH
  117. JC = IPP2-J
  118. AR2H = DC2*AR2-DS2*AI2
  119. AI2 = DC2*AI2+DS2*AR2
  120. AR2 = AR2H
  121. DO 125 IK=1,IDL1
  122. CH2(1,IK,L) = CH2(1,IK,L)+AR2*C2(1,IK,J)
  123. CH2(1,IK,LC) = CH2(1,IK,LC)+AI2*C2(1,IK,JC)
  124. 125 CONTINUE
  125. 126 CONTINUE
  126. 127 CONTINUE
  127. DO 129 J=2,IPPH
  128. DO 128 IK=1,IDL1
  129. CH2(1,IK,1) = CH2(1,IK,1)+C2(1,IK,J)
  130. 128 CONTINUE
  131. 129 CONTINUE
  132. C
  133. IF (IDO .LT. L1) GO TO 132
  134. DO 131 K=1,L1
  135. DO 130 I=1,IDO
  136. CC(1,I,1,K) = CH(1,I,K,1)
  137. 130 CONTINUE
  138. 131 CONTINUE
  139. GO TO 135
  140. 132 DO 134 I=1,IDO
  141. DO 133 K=1,L1
  142. CC(1,I,1,K) = CH(1,I,K,1)
  143. 133 CONTINUE
  144. 134 CONTINUE
  145. 135 DO 137 J=2,IPPH
  146. JC = IPP2-J
  147. J2 = J+J
  148. DO 136 K=1,L1
  149. CC(1,IDO,J2-2,K) = CH(1,1,K,J)
  150. CC(1,1,J2-1,K) = CH(1,1,K,JC)
  151. 136 CONTINUE
  152. 137 CONTINUE
  153. IF (IDO .EQ. 1) RETURN
  154. IF (NBD .LT. L1) GO TO 141
  155. DO 140 J=2,IPPH
  156. JC = IPP2-J
  157. J2 = J+J
  158. DO 139 K=1,L1
  159. DO 138 I=3,IDO,2
  160. IC = IDP2-I
  161. CC(1,I-1,J2-1,K) = CH(1,I-1,K,J)+CH(1,I-1,K,JC)
  162. CC(1,IC-1,J2-2,K) = CH(1,I-1,K,J)-CH(1,I-1,K,JC)
  163. CC(1,I,J2-1,K) = CH(1,I,K,J)+CH(1,I,K,JC)
  164. CC(1,IC,J2-2,K) = CH(1,I,K,JC)-CH(1,I,K,J)
  165. 138 CONTINUE
  166. 139 CONTINUE
  167. 140 CONTINUE
  168. RETURN
  169. 141 DO 144 J=2,IPPH
  170. JC = IPP2-J
  171. J2 = J+J
  172. DO 143 I=3,IDO,2
  173. IC = IDP2-I
  174. DO 142 K=1,L1
  175. CC(1,I-1,J2-1,K) = CH(1,I-1,K,J)+CH(1,I-1,K,JC)
  176. CC(1,IC-1,J2-2,K) = CH(1,I-1,K,J)-CH(1,I-1,K,JC)
  177. CC(1,I,J2-1,K) = CH(1,I,K,J)+CH(1,I,K,JC)
  178. CC(1,IC,J2-2,K) = CH(1,I,K,JC)-CH(1,I,K,J)
  179. 142 CONTINUE
  180. 143 CONTINUE
  181. 144 CONTINUE
  182. RETURN
  183. END
  184.  
  185.  
  186.  

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