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
zpassf5.f
Go to the documentation of this file.
1  subroutine zpassf5 (ido,l1,cc,ch,wa1,wa2,wa3,wa4)
2  implicit double precision (a-h,o-z)
3  dimension cc(ido,5,l1) ,ch(ido,l1,5) ,
4  1 wa1(1) ,wa2(1) ,wa3(1) ,wa4(1)
5  data tr11,ti11,tr12,ti12 /.309016994374947d0,-.951056516295154d0,
6  1-.809016994374947d0,-.587785252292473d0/
7  if (ido .ne. 2) go to 102
8  do 101 k=1,l1
9  ti5 = cc(2,2,k)-cc(2,5,k)
10  ti2 = cc(2,2,k)+cc(2,5,k)
11  ti4 = cc(2,3,k)-cc(2,4,k)
12  ti3 = cc(2,3,k)+cc(2,4,k)
13  tr5 = cc(1,2,k)-cc(1,5,k)
14  tr2 = cc(1,2,k)+cc(1,5,k)
15  tr4 = cc(1,3,k)-cc(1,4,k)
16  tr3 = cc(1,3,k)+cc(1,4,k)
17  ch(1,k,1) = cc(1,1,k)+tr2+tr3
18  ch(2,k,1) = cc(2,1,k)+ti2+ti3
19  cr2 = cc(1,1,k)+tr11*tr2+tr12*tr3
20  ci2 = cc(2,1,k)+tr11*ti2+tr12*ti3
21  cr3 = cc(1,1,k)+tr12*tr2+tr11*tr3
22  ci3 = cc(2,1,k)+tr12*ti2+tr11*ti3
23  cr5 = ti11*tr5+ti12*tr4
24  ci5 = ti11*ti5+ti12*ti4
25  cr4 = ti12*tr5-ti11*tr4
26  ci4 = ti12*ti5-ti11*ti4
27  ch(1,k,2) = cr2-ci5
28  ch(1,k,5) = cr2+ci5
29  ch(2,k,2) = ci2+cr5
30  ch(2,k,3) = ci3+cr4
31  ch(1,k,3) = cr3-ci4
32  ch(1,k,4) = cr3+ci4
33  ch(2,k,4) = ci3-cr4
34  ch(2,k,5) = ci2-cr5
35  101 continue
36  return
37  102 do 104 k=1,l1
38  do 103 i=2,ido,2
39  ti5 = cc(i,2,k)-cc(i,5,k)
40  ti2 = cc(i,2,k)+cc(i,5,k)
41  ti4 = cc(i,3,k)-cc(i,4,k)
42  ti3 = cc(i,3,k)+cc(i,4,k)
43  tr5 = cc(i-1,2,k)-cc(i-1,5,k)
44  tr2 = cc(i-1,2,k)+cc(i-1,5,k)
45  tr4 = cc(i-1,3,k)-cc(i-1,4,k)
46  tr3 = cc(i-1,3,k)+cc(i-1,4,k)
47  ch(i-1,k,1) = cc(i-1,1,k)+tr2+tr3
48  ch(i,k,1) = cc(i,1,k)+ti2+ti3
49  cr2 = cc(i-1,1,k)+tr11*tr2+tr12*tr3
50  ci2 = cc(i,1,k)+tr11*ti2+tr12*ti3
51  cr3 = cc(i-1,1,k)+tr12*tr2+tr11*tr3
52  ci3 = cc(i,1,k)+tr12*ti2+tr11*ti3
53  cr5 = ti11*tr5+ti12*tr4
54  ci5 = ti11*ti5+ti12*ti4
55  cr4 = ti12*tr5-ti11*tr4
56  ci4 = ti12*ti5-ti11*ti4
57  dr3 = cr3-ci4
58  dr4 = cr3+ci4
59  di3 = ci3+cr4
60  di4 = ci3-cr4
61  dr5 = cr2+ci5
62  dr2 = cr2-ci5
63  di5 = ci2-cr5
64  di2 = ci2+cr5
65  ch(i-1,k,2) = wa1(i-1)*dr2+wa1(i)*di2
66  ch(i,k,2) = wa1(i-1)*di2-wa1(i)*dr2
67  ch(i-1,k,3) = wa2(i-1)*dr3+wa2(i)*di3
68  ch(i,k,3) = wa2(i-1)*di3-wa2(i)*dr3
69  ch(i-1,k,4) = wa3(i-1)*dr4+wa3(i)*di4
70  ch(i,k,4) = wa3(i-1)*di4-wa3(i)*dr4
71  ch(i-1,k,5) = wa4(i-1)*dr5+wa4(i)*di5
72  ch(i,k,5) = wa4(i-1)*di5-wa4(i)*dr5
73  103 continue
74  104 continue
75  return
76  end