1
SUBROUTINE ZFFTF1 (N,C,CH,WA,IFAC)
2
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
3
DIMENSION CH(*) ,C(*) ,WA(*) ,IFAC(*)
14
IF (IP .NE. 4) GO TO 103
17
IF (NA .NE. 0) GO TO 101
18
CALL DPASSF4 (IDOT,L1,C,CH,WA(IW),WA(IX2),WA(IX3))
20
101 CALL DPASSF4 (IDOT,L1,CH,C,WA(IW),WA(IX2),WA(IX3))
23
103 IF (IP .NE. 2) GO TO 106
24
IF (NA .NE. 0) GO TO 104
25
CALL DPASSF2 (IDOT,L1,C,CH,WA(IW))
27
104 CALL DPASSF2 (IDOT,L1,CH,C,WA(IW))
30
106 IF (IP .NE. 3) GO TO 109
32
IF (NA .NE. 0) GO TO 107
33
CALL DPASSF3 (IDOT,L1,C,CH,WA(IW),WA(IX2))
35
107 CALL DPASSF3 (IDOT,L1,CH,C,WA(IW),WA(IX2))
38
109 IF (IP .NE. 5) GO TO 112
42
IF (NA .NE. 0) GO TO 110
43
CALL DPASSF5 (IDOT,L1,C,CH,WA(IW),WA(IX2),WA(IX3),WA(IX4))
45
110 CALL DPASSF5 (IDOT,L1,CH,C,WA(IW),WA(IX2),WA(IX3),WA(IX4))
48
112 IF (NA .NE. 0) GO TO 113
49
CALL DPASSF (NAC,IDOT,IP,L1,IDL1,C,C,C,CH,CH,WA(IW))
51
113 CALL DPASSF (NAC,IDOT,IP,L1,IDL1,CH,CH,CH,C,C,WA(IW))
52
114 IF (NAC .NE. 0) NA = 1-NA
64
SUBROUTINE DPASSF (NAC,IDO,IP,L1,IDL1,CC,C1,C2,CH,CH2,WA)
65
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
66
DIMENSION CH(IDO,L1,IP) ,CC(IDO,IP,L1) ,
67
1 C1(IDO,L1,IP) ,WA(1) ,C2(IDL1,IP),
75
IF (IDO .LT. L1) GO TO 106
80
CH(I,K,J) = CC(I,J,K)+CC(I,JC,K)
81
CH(I,K,JC) = CC(I,J,K)-CC(I,JC,K)
95
CH(I,K,J) = CC(I,J,K)+CC(I,JC,K)
96
CH(I,K,JC) = CC(I,J,K)-CC(I,JC,K)
102
CH(I,K,1) = CC(I,1,K)
111
C2(IK,L) = CH2(IK,1)+WA(IDL-1)*CH2(IK,2)
112
C2(IK,LC) = -WA(IDL)*CH2(IK,IP)
119
IF (IDLJ .GT. IDP) IDLJ = IDLJ-IDP
123
C2(IK,L) = C2(IK,L)+WAR*CH2(IK,J)
124
C2(IK,LC) = C2(IK,LC)-WAI*CH2(IK,JC)
130
CH2(IK,1) = CH2(IK,1)+CH2(IK,J)
136
CH2(IK-1,J) = C2(IK-1,J)-C2(IK,JC)
137
CH2(IK-1,JC) = C2(IK-1,J)+C2(IK,JC)
138
CH2(IK,J) = C2(IK,J)+C2(IK-1,JC)
139
CH2(IK,JC) = C2(IK,J)-C2(IK-1,JC)
143
IF (IDO .EQ. 2) RETURN
150
C1(1,K,J) = CH(1,K,J)
151
C1(2,K,J) = CH(2,K,J)
154
IF (IDOT .GT. L1) GO TO 127
161
C1(I-1,K,J) = WA(IDIJ-1)*CH(I-1,K,J)+WA(IDIJ)*CH(I,K,J)
162
C1(I,K,J) = WA(IDIJ-1)*CH(I,K,J)-WA(IDIJ)*CH(I-1,K,J)
174
C1(I-1,K,J) = WA(IDIJ-1)*CH(I-1,K,J)+WA(IDIJ)*CH(I,K,J)
175
C1(I,K,J) = WA(IDIJ-1)*CH(I,K,J)-WA(IDIJ)*CH(I-1,K,J)
182
SUBROUTINE DPASSF2 (IDO,L1,CC,CH,WA1)
183
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
184
DIMENSION CC(IDO,2,L1) ,CH(IDO,L1,2) ,
186
IF (IDO .GT. 2) GO TO 102
188
CH(1,K,1) = CC(1,1,K)+CC(1,2,K)
189
CH(1,K,2) = CC(1,1,K)-CC(1,2,K)
190
CH(2,K,1) = CC(2,1,K)+CC(2,2,K)
191
CH(2,K,2) = CC(2,1,K)-CC(2,2,K)
196
CH(I-1,K,1) = CC(I-1,1,K)+CC(I-1,2,K)
197
TR2 = CC(I-1,1,K)-CC(I-1,2,K)
198
CH(I,K,1) = CC(I,1,K)+CC(I,2,K)
199
TI2 = CC(I,1,K)-CC(I,2,K)
200
CH(I,K,2) = WA1(I-1)*TI2-WA1(I)*TR2
201
CH(I-1,K,2) = WA1(I-1)*TR2+WA1(I)*TI2
207
SUBROUTINE DPASSF3 (IDO,L1,CC,CH,WA1,WA2)
208
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
209
DIMENSION CC(IDO,3,L1) ,CH(IDO,L1,3) ,
211
C *** TAUI IS -SQRT(3)/2 ***
212
DATA TAUR,TAUI /-0.5D0,-0.86602540378443864676D0/
213
IF (IDO .NE. 2) GO TO 102
215
TR2 = CC(1,2,K)+CC(1,3,K)
216
CR2 = CC(1,1,K)+TAUR*TR2
217
CH(1,K,1) = CC(1,1,K)+TR2
218
TI2 = CC(2,2,K)+CC(2,3,K)
219
CI2 = CC(2,1,K)+TAUR*TI2
220
CH(2,K,1) = CC(2,1,K)+TI2
221
CR3 = TAUI*(CC(1,2,K)-CC(1,3,K))
222
CI3 = TAUI*(CC(2,2,K)-CC(2,3,K))
231
TR2 = CC(I-1,2,K)+CC(I-1,3,K)
232
CR2 = CC(I-1,1,K)+TAUR*TR2
233
CH(I-1,K,1) = CC(I-1,1,K)+TR2
234
TI2 = CC(I,2,K)+CC(I,3,K)
235
CI2 = CC(I,1,K)+TAUR*TI2
236
CH(I,K,1) = CC(I,1,K)+TI2
237
CR3 = TAUI*(CC(I-1,2,K)-CC(I-1,3,K))
238
CI3 = TAUI*(CC(I,2,K)-CC(I,3,K))
243
CH(I,K,2) = WA1(I-1)*DI2-WA1(I)*DR2
244
CH(I-1,K,2) = WA1(I-1)*DR2+WA1(I)*DI2
245
CH(I,K,3) = WA2(I-1)*DI3-WA2(I)*DR3
246
CH(I-1,K,3) = WA2(I-1)*DR3+WA2(I)*DI3
252
SUBROUTINE DPASSF4 (IDO,L1,CC,CH,WA1,WA2,WA3)
253
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
254
DIMENSION CC(IDO,4,L1) ,CH(IDO,L1,4) ,
255
1 WA1(1) ,WA2(1) ,WA3(1)
256
IF (IDO .NE. 2) GO TO 102
258
TI1 = CC(2,1,K)-CC(2,3,K)
259
TI2 = CC(2,1,K)+CC(2,3,K)
260
TR4 = CC(2,2,K)-CC(2,4,K)
261
TI3 = CC(2,2,K)+CC(2,4,K)
262
TR1 = CC(1,1,K)-CC(1,3,K)
263
TR2 = CC(1,1,K)+CC(1,3,K)
264
TI4 = CC(1,4,K)-CC(1,2,K)
265
TR3 = CC(1,2,K)+CC(1,4,K)
278
TI1 = CC(I,1,K)-CC(I,3,K)
279
TI2 = CC(I,1,K)+CC(I,3,K)
280
TI3 = CC(I,2,K)+CC(I,4,K)
281
TR4 = CC(I,2,K)-CC(I,4,K)
282
TR1 = CC(I-1,1,K)-CC(I-1,3,K)
283
TR2 = CC(I-1,1,K)+CC(I-1,3,K)
284
TI4 = CC(I-1,4,K)-CC(I-1,2,K)
285
TR3 = CC(I-1,2,K)+CC(I-1,4,K)
286
CH(I-1,K,1) = TR2+TR3
294
CH(I-1,K,2) = WA1(I-1)*CR2+WA1(I)*CI2
295
CH(I,K,2) = WA1(I-1)*CI2-WA1(I)*CR2
296
CH(I-1,K,3) = WA2(I-1)*CR3+WA2(I)*CI3
297
CH(I,K,3) = WA2(I-1)*CI3-WA2(I)*CR3
298
CH(I-1,K,4) = WA3(I-1)*CR4+WA3(I)*CI4
299
CH(I,K,4) = WA3(I-1)*CI4-WA3(I)*CR4
305
SUBROUTINE DPASSF5 (IDO,L1,CC,CH,WA1,WA2,WA3,WA4)
306
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
307
DIMENSION CC(IDO,5,L1) ,CH(IDO,L1,5) ,
308
1 WA1(1) ,WA2(1) ,WA3(1) ,WA4(1)
309
C *** TR11=COS(2*PI/5), TI11=-SIN(2*PI/5)
310
C *** TR12=-COS(4*PI/5), TI12=-SIN(4*PI/5)
311
DATA TR11,TI11,TR12,TI12 /0.3090169943749474241D0,
312
+ -0.95105651629515357212D0,
313
1 -0.8090169943749474241D0, -0.58778525229247312917D0/
314
IF (IDO .NE. 2) GO TO 102
316
TI5 = CC(2,2,K)-CC(2,5,K)
317
TI2 = CC(2,2,K)+CC(2,5,K)
318
TI4 = CC(2,3,K)-CC(2,4,K)
319
TI3 = CC(2,3,K)+CC(2,4,K)
320
TR5 = CC(1,2,K)-CC(1,5,K)
321
TR2 = CC(1,2,K)+CC(1,5,K)
322
TR4 = CC(1,3,K)-CC(1,4,K)
323
TR3 = CC(1,3,K)+CC(1,4,K)
324
CH(1,K,1) = CC(1,1,K)+TR2+TR3
325
CH(2,K,1) = CC(2,1,K)+TI2+TI3
326
CR2 = CC(1,1,K)+TR11*TR2+TR12*TR3
327
CI2 = CC(2,1,K)+TR11*TI2+TR12*TI3
328
CR3 = CC(1,1,K)+TR12*TR2+TR11*TR3
329
CI3 = CC(2,1,K)+TR12*TI2+TR11*TI3
330
CR5 = TI11*TR5+TI12*TR4
331
CI5 = TI11*TI5+TI12*TI4
332
CR4 = TI12*TR5-TI11*TR4
333
CI4 = TI12*TI5-TI11*TI4
346
TI5 = CC(I,2,K)-CC(I,5,K)
347
TI2 = CC(I,2,K)+CC(I,5,K)
348
TI4 = CC(I,3,K)-CC(I,4,K)
349
TI3 = CC(I,3,K)+CC(I,4,K)
350
TR5 = CC(I-1,2,K)-CC(I-1,5,K)
351
TR2 = CC(I-1,2,K)+CC(I-1,5,K)
352
TR4 = CC(I-1,3,K)-CC(I-1,4,K)
353
TR3 = CC(I-1,3,K)+CC(I-1,4,K)
354
CH(I-1,K,1) = CC(I-1,1,K)+TR2+TR3
355
CH(I,K,1) = CC(I,1,K)+TI2+TI3
356
CR2 = CC(I-1,1,K)+TR11*TR2+TR12*TR3
357
CI2 = CC(I,1,K)+TR11*TI2+TR12*TI3
358
CR3 = CC(I-1,1,K)+TR12*TR2+TR11*TR3
359
CI3 = CC(I,1,K)+TR12*TI2+TR11*TI3
360
CR5 = TI11*TR5+TI12*TR4
361
CI5 = TI11*TI5+TI12*TI4
362
CR4 = TI12*TR5-TI11*TR4
363
CI4 = TI12*TI5-TI11*TI4
372
CH(I-1,K,2) = WA1(I-1)*DR2+WA1(I)*DI2
373
CH(I,K,2) = WA1(I-1)*DI2-WA1(I)*DR2
374
CH(I-1,K,3) = WA2(I-1)*DR3+WA2(I)*DI3
375
CH(I,K,3) = WA2(I-1)*DI3-WA2(I)*DR3
376
CH(I-1,K,4) = WA3(I-1)*DR4+WA3(I)*DI4
377
CH(I,K,4) = WA3(I-1)*DI4-WA3(I)*DR4
378
CH(I-1,K,5) = WA4(I-1)*DR5+WA4(I)*DI5
379
CH(I,K,5) = WA4(I-1)*DI5-WA4(I)*DR5