GNU Octave  3.8.0
A high-level interpreted language, primarily intended for numerical computations, mostly compatible with Matlab
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
cfftb1.f
Go to the documentation of this file.
1  subroutine cfftb1 (n,c,ch,wa,ifac)
2  dimension ch(*) ,c(*) ,wa(*) ,ifac(*)
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 passb4(idot,l1,c,ch,wa(iw),wa(ix2),wa(ix3))
18  go to 102
19  101 call passb4(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 passb2(idot,l1,c,ch,wa(iw))
25  go to 105
26  104 call passb2(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 passb3(idot,l1,c,ch,wa(iw),wa(ix2))
33  go to 108
34  107 call passb3(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 passb5(idot,l1,c,ch,wa(iw),wa(ix2),wa(ix3),wa(ix4))
43  go to 111
44  110 call passb5(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 passb(nac,idot,ip,l1,idl1,c,c,c,ch,ch,wa(iw))
49  go to 114
50  113 call passb(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