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
zpassb3.f
Go to the documentation of this file.
1  subroutine zpassb3 (ido,l1,cc,ch,wa1,wa2)
2  implicit double precision (a-h,o-z)
3  dimension cc(ido,3,l1) ,ch(ido,l1,3) ,
4  1 wa1(1) ,wa2(1)
5  data taur,taui /-.5,.866025403784439d0/
6  if (ido .ne. 2) go to 102
7  do 101 k=1,l1
8  tr2 = cc(1,2,k)+cc(1,3,k)
9  cr2 = cc(1,1,k)+taur*tr2
10  ch(1,k,1) = cc(1,1,k)+tr2
11  ti2 = cc(2,2,k)+cc(2,3,k)
12  ci2 = cc(2,1,k)+taur*ti2
13  ch(2,k,1) = cc(2,1,k)+ti2
14  cr3 = taui*(cc(1,2,k)-cc(1,3,k))
15  ci3 = taui*(cc(2,2,k)-cc(2,3,k))
16  ch(1,k,2) = cr2-ci3
17  ch(1,k,3) = cr2+ci3
18  ch(2,k,2) = ci2+cr3
19  ch(2,k,3) = ci2-cr3
20  101 continue
21  return
22  102 do 104 k=1,l1
23  do 103 i=2,ido,2
24  tr2 = cc(i-1,2,k)+cc(i-1,3,k)
25  cr2 = cc(i-1,1,k)+taur*tr2
26  ch(i-1,k,1) = cc(i-1,1,k)+tr2
27  ti2 = cc(i,2,k)+cc(i,3,k)
28  ci2 = cc(i,1,k)+taur*ti2
29  ch(i,k,1) = cc(i,1,k)+ti2
30  cr3 = taui*(cc(i-1,2,k)-cc(i-1,3,k))
31  ci3 = taui*(cc(i,2,k)-cc(i,3,k))
32  dr2 = cr2-ci3
33  dr3 = cr2+ci3
34  di2 = ci2+cr3
35  di3 = ci2-cr3
36  ch(i,k,2) = wa1(i-1)*di2+wa1(i)*dr2
37  ch(i-1,k,2) = wa1(i-1)*dr2-wa1(i)*di2
38  ch(i,k,3) = wa2(i-1)*di3+wa2(i)*dr3
39  ch(i-1,k,3) = wa2(i-1)*dr3-wa2(i)*di3
40  103 continue
41  104 continue
42  return
43  end