1644
|
1 subroutine cfftf1 (n,c,ch,wa,ifac) |
1645
|
2 dimension ch(*) ,c(*) ,wa(*) ,ifac(*) |
1644
|
3 nf = ifac(2) |
|
4 na = 0 |
|
5 l1 = 1 |
|
6 iw = 1 |
|
7 do 116 k1=1,nf |
|
8 ip = ifac(k1+2) |
|
9 l2 = ip*l1 |
|
10 ido = n/l2 |
|
11 idot = ido+ido |
|
12 idl1 = idot*l1 |
|
13 if (ip .ne. 4) go to 103 |
|
14 ix2 = iw+idot |
|
15 ix3 = ix2+idot |
|
16 if (na .ne. 0) go to 101 |
|
17 call passf4 (idot,l1,c,ch,wa(iw),wa(ix2),wa(ix3)) |
|
18 go to 102 |
|
19 101 call passf4 (idot,l1,ch,c,wa(iw),wa(ix2),wa(ix3)) |
|
20 102 na = 1-na |
|
21 go to 115 |
|
22 103 if (ip .ne. 2) go to 106 |
|
23 if (na .ne. 0) go to 104 |
|
24 call passf2 (idot,l1,c,ch,wa(iw)) |
|
25 go to 105 |
|
26 104 call passf2 (idot,l1,ch,c,wa(iw)) |
|
27 105 na = 1-na |
|
28 go to 115 |
|
29 106 if (ip .ne. 3) go to 109 |
|
30 ix2 = iw+idot |
|
31 if (na .ne. 0) go to 107 |
|
32 call passf3 (idot,l1,c,ch,wa(iw),wa(ix2)) |
|
33 go to 108 |
|
34 107 call passf3 (idot,l1,ch,c,wa(iw),wa(ix2)) |
|
35 108 na = 1-na |
|
36 go to 115 |
|
37 109 if (ip .ne. 5) go to 112 |
|
38 ix2 = iw+idot |
|
39 ix3 = ix2+idot |
|
40 ix4 = ix3+idot |
|
41 if (na .ne. 0) go to 110 |
|
42 call passf5 (idot,l1,c,ch,wa(iw),wa(ix2),wa(ix3),wa(ix4)) |
|
43 go to 111 |
|
44 110 call passf5 (idot,l1,ch,c,wa(iw),wa(ix2),wa(ix3),wa(ix4)) |
|
45 111 na = 1-na |
|
46 go to 115 |
|
47 112 if (na .ne. 0) go to 113 |
|
48 call passf (nac,idot,ip,l1,idl1,c,c,c,ch,ch,wa(iw)) |
|
49 go to 114 |
|
50 113 call passf (nac,idot,ip,l1,idl1,ch,ch,ch,c,c,wa(iw)) |
|
51 114 if (nac .ne. 0) na = 1-na |
|
52 115 l1 = l2 |
|
53 iw = iw+(ip-1)*idot |
|
54 116 continue |
|
55 if (na .eq. 0) return |
|
56 n2 = n+n |
|
57 do 117 i=1,n2 |
|
58 c(i) = ch(i) |
|
59 117 continue |
|
60 return |
|
61 end |