1
SUBROUTINE ZFFTB1 (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 DPASSB4 (IDOT,L1,C,CH,WA(IW),WA(IX2),WA(IX3))
20
101 CALL DPASSB4 (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 DPASSB2 (IDOT,L1,C,CH,WA(IW))
27
104 CALL DPASSB2 (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 DPASSB3 (IDOT,L1,C,CH,WA(IW),WA(IX2))
35
107 CALL DPASSB3 (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 DPASSB5 (IDOT,L1,C,CH,WA(IW),WA(IX2),WA(IX3),WA(IX4))
45
110 CALL DPASSB5 (IDOT,L1,CH,C,WA(IW),WA(IX2),WA(IX3),WA(IX4))
48
112 IF (NA .NE. 0) GO TO 113
49
CALL DPASSB (NAC,IDOT,IP,L1,IDL1,C,C,C,CH,CH,WA(IW))
51
113 CALL DPASSB (NAC,IDOT,IP,L1,IDL1,CH,CH,CH,C,C,WA(IW))
52
114 IF (NAC .NE. 0) NA = 1-NA
64
SUBROUTINE DPASSB (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 DPASSB2 (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 DPASSB3 (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
253
SUBROUTINE DPASSB4 (IDO,L1,CC,CH,WA1,WA2,WA3)
254
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
255
DIMENSION CC(IDO,4,L1) ,CH(IDO,L1,4) ,
256
1 WA1(1) ,WA2(1) ,WA3(1)
257
IF (IDO .NE. 2) GO TO 102
259
TI1 = CC(2,1,K)-CC(2,3,K)
260
TI2 = CC(2,1,K)+CC(2,3,K)
261
TR4 = CC(2,4,K)-CC(2,2,K)
262
TI3 = CC(2,2,K)+CC(2,4,K)
263
TR1 = CC(1,1,K)-CC(1,3,K)
264
TR2 = CC(1,1,K)+CC(1,3,K)
265
TI4 = CC(1,2,K)-CC(1,4,K)
266
TR3 = CC(1,2,K)+CC(1,4,K)
279
TI1 = CC(I,1,K)-CC(I,3,K)
280
TI2 = CC(I,1,K)+CC(I,3,K)
281
TI3 = CC(I,2,K)+CC(I,4,K)
282
TR4 = CC(I,4,K)-CC(I,2,K)
283
TR1 = CC(I-1,1,K)-CC(I-1,3,K)
284
TR2 = CC(I-1,1,K)+CC(I-1,3,K)
285
TI4 = CC(I-1,2,K)-CC(I-1,4,K)
286
TR3 = CC(I-1,2,K)+CC(I-1,4,K)
287
CH(I-1,K,1) = TR2+TR3
295
CH(I-1,K,2) = WA1(I-1)*CR2-WA1(I)*CI2
296
CH(I,K,2) = WA1(I-1)*CI2+WA1(I)*CR2
297
CH(I-1,K,3) = WA2(I-1)*CR3-WA2(I)*CI3
298
CH(I,K,3) = WA2(I-1)*CI3+WA2(I)*CR3
299
CH(I-1,K,4) = WA3(I-1)*CR4-WA3(I)*CI4
300
CH(I,K,4) = WA3(I-1)*CI4+WA3(I)*CR4
306
SUBROUTINE DPASSB5 (IDO,L1,CC,CH,WA1,WA2,WA3,WA4)
307
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
308
DIMENSION CC(IDO,5,L1) ,CH(IDO,L1,5) ,
309
1 WA1(1) ,WA2(1) ,WA3(1) ,WA4(1)
310
C *** TR11=COS(2*PI/5), TI11=SIN(2*PI/5)
311
C *** TR12=COS(4*PI/5), TI12=SIN(4*PI/5)
312
DATA TR11,TI11,TR12,TI12 /0.3090169943749474241D0,
313
+ 0.95105651629515357212D0,
314
+ -0.8090169943749474241D0,0.58778525229247312917D0/
315
IF (IDO .NE. 2) GO TO 102
317
TI5 = CC(2,2,K)-CC(2,5,K)
318
TI2 = CC(2,2,K)+CC(2,5,K)
319
TI4 = CC(2,3,K)-CC(2,4,K)
320
TI3 = CC(2,3,K)+CC(2,4,K)
321
TR5 = CC(1,2,K)-CC(1,5,K)
322
TR2 = CC(1,2,K)+CC(1,5,K)
323
TR4 = CC(1,3,K)-CC(1,4,K)
324
TR3 = CC(1,3,K)+CC(1,4,K)
325
CH(1,K,1) = CC(1,1,K)+TR2+TR3
326
CH(2,K,1) = CC(2,1,K)+TI2+TI3
327
CR2 = CC(1,1,K)+TR11*TR2+TR12*TR3
328
CI2 = CC(2,1,K)+TR11*TI2+TR12*TI3
329
CR3 = CC(1,1,K)+TR12*TR2+TR11*TR3
330
CI3 = CC(2,1,K)+TR12*TI2+TR11*TI3
331
CR5 = TI11*TR5+TI12*TR4
332
CI5 = TI11*TI5+TI12*TI4
333
CR4 = TI12*TR5-TI11*TR4
334
CI4 = TI12*TI5-TI11*TI4
347
TI5 = CC(I,2,K)-CC(I,5,K)
348
TI2 = CC(I,2,K)+CC(I,5,K)
349
TI4 = CC(I,3,K)-CC(I,4,K)
350
TI3 = CC(I,3,K)+CC(I,4,K)
351
TR5 = CC(I-1,2,K)-CC(I-1,5,K)
352
TR2 = CC(I-1,2,K)+CC(I-1,5,K)
353
TR4 = CC(I-1,3,K)-CC(I-1,4,K)
354
TR3 = CC(I-1,3,K)+CC(I-1,4,K)
355
CH(I-1,K,1) = CC(I-1,1,K)+TR2+TR3
356
CH(I,K,1) = CC(I,1,K)+TI2+TI3
357
CR2 = CC(I-1,1,K)+TR11*TR2+TR12*TR3
358
CI2 = CC(I,1,K)+TR11*TI2+TR12*TI3
359
CR3 = CC(I-1,1,K)+TR12*TR2+TR11*TR3
360
CI3 = CC(I,1,K)+TR12*TI2+TR11*TI3
361
CR5 = TI11*TR5+TI12*TR4
362
CI5 = TI11*TI5+TI12*TI4
363
CR4 = TI12*TR5-TI11*TR4
364
CI4 = TI12*TI5-TI11*TI4
373
CH(I-1,K,2) = WA1(I-1)*DR2-WA1(I)*DI2
374
CH(I,K,2) = WA1(I-1)*DI2+WA1(I)*DR2
375
CH(I-1,K,3) = WA2(I-1)*DR3-WA2(I)*DI3
376
CH(I,K,3) = WA2(I-1)*DI3+WA2(I)*DR3
377
CH(I-1,K,4) = WA3(I-1)*DR4-WA3(I)*DI4
378
CH(I,K,4) = WA3(I-1)*DI4+WA3(I)*DR4
379
CH(I-1,K,5) = WA4(I-1)*DR5-WA4(I)*DI5
380
CH(I,K,5) = WA4(I-1)*DI5+WA4(I)*DR5