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
cffti1.f
Go to the documentation of this file.
1  subroutine cffti1 (n,wa,ifac)
2  dimension wa(*) ,ifac(*) ,ntryh(4)
3  data ntryh(1),ntryh(2),ntryh(3),ntryh(4)/3,4,2,5/
4  nl = n
5  nf = 0
6  j = 0
7  101 j = j+1
8  if (j-4) 102,102,103
9  102 ntry = ntryh(j)
10  go to 104
11  103 ntry = ntry+2
12  104 nq = nl/ntry
13  nr = nl-ntry*nq
14  if (nr) 101,105,101
15  105 nf = nf+1
16  ifac(nf+2) = ntry
17  nl = nq
18  if (ntry .ne. 2) go to 107
19  if (nf .eq. 1) go to 107
20  do 106 i=2,nf
21  ib = nf-i+2
22  ifac(ib+2) = ifac(ib+1)
23  106 continue
24  ifac(3) = 2
25  107 if (nl .ne. 1) go to 104
26  ifac(1) = n
27  ifac(2) = nf
28  tpi = 6.28318530717959
29  argh = tpi/dble(n)
30  i = 2
31  l1 = 1
32  do 110 k1=1,nf
33  ip = ifac(k1+2)
34  ld = 0
35  l2 = l1*ip
36  ido = n/l2
37  idot = ido+ido+2
38  ipm = ip-1
39  do 109 j=1,ipm
40  i1 = i
41  wa(i-1) = 1.
42  wa(i) = 0.
43  ld = ld+l1
44  fi = 0.
45  argld = dble(ld)*argh
46  do 108 ii=4,idot,2
47  i = i+2
48  fi = fi+1.
49  arg = fi*argld
50  wa(i-1) = cos(arg)
51  wa(i) = sin(arg)
52  108 continue
53  if (ip .le. 5) go to 109
54  wa(i1-1) = wa(i-1)
55  wa(i1) = wa(i)
56  109 continue
57  l1 = l2
58  110 continue
59  return
60  end