1 subroutine cmf3kb ( lot, ido, l1, na, cc, im1, in1, ch, im2, in2, wa )
3 !*****************************************************************************80
5 !! CMF3KB is an FFTPACK5 auxiliary routine.
8 ! Copyright (C) 1995-2004, Scientific Computing Division,
9 ! University Corporation for Atmospheric Research
23 ! Vectorizing the Fast Fourier Transforms,
24 ! in Parallel Computations,
25 ! edited by G. Rodrigue,
26 ! Academic Press, 1982.
29 ! Fast Fourier Transform Algorithms for Vector Computers,
30 ! Parallel Computing, pages 45-63, 1984.
36 integer ( kind = 4 ) ido
37 integer ( kind = 4 ) in1
38 integer ( kind = 4 ) in2
39 integer ( kind = 4 ) l1
41 real ( kind = 4 ) cc(2,in1,l1,ido,3)
42 real ( kind = 4 ) ch(2,in2,l1,3,ido)
51 integer ( kind = 4 ) i
52 integer ( kind = 4 ) im1
53 integer ( kind = 4 ) im2
54 integer ( kind = 4 ) k
55 integer ( kind = 4 ) lot
56 integer ( kind = 4 ) m1
57 integer ( kind = 4 ) m1d
58 integer ( kind = 4 ) m2
59 integer ( kind = 4 ) m2s
60 integer ( kind = 4 ) na
61 real ( kind = 4 ), parameter :: taui = 0.866025403784439E+00
62 real ( kind = 4 ), parameter :: taur = -0.5E+00
65 real ( kind = 4 ) wa(ido,2,2)
67 m1d = ( lot - 1 ) * im1 + 1
70 if ( 1 < ido .or. na == 1 ) then
77 tr2 = cc(1,m1,k,1,2)+cc(1,m1,k,1,3)
78 cr2 = cc(1,m1,k,1,1)+taur*tr2
79 ch(1,m2,k,1,1) = cc(1,m1,k,1,1)+tr2
81 ti2 = cc(2,m1,k,1,2)+cc(2,m1,k,1,3)
82 ci2 = cc(2,m1,k,1,1)+taur*ti2
83 ch(2,m2,k,1,1) = cc(2,m1,k,1,1)+ti2
85 cr3 = taui * (cc(1,m1,k,1,2)-cc(1,m1,k,1,3))
86 ci3 = taui * (cc(2,m1,k,1,2)-cc(2,m1,k,1,3))
88 ch(1,m2,k,2,1) = cr2-ci3
89 ch(1,m2,k,3,1) = cr2+ci3
90 ch(2,m2,k,2,1) = ci2+cr3
91 ch(2,m2,k,3,1) = ci2-cr3
101 tr2 = cc(1,m1,k,i,2)+cc(1,m1,k,i,3)
102 cr2 = cc(1,m1,k,i,1)+taur*tr2
103 ch(1,m2,k,1,i) = cc(1,m1,k,i,1)+tr2
104 ti2 = cc(2,m1,k,i,2)+cc(2,m1,k,i,3)
105 ci2 = cc(2,m1,k,i,1)+taur*ti2
106 ch(2,m2,k,1,i) = cc(2,m1,k,i,1)+ti2
107 cr3 = taui*(cc(1,m1,k,i,2)-cc(1,m1,k,i,3))
108 ci3 = taui*(cc(2,m1,k,i,2)-cc(2,m1,k,i,3))
113 ch(2,m2,k,2,i) = wa(i,1,1)*di2+wa(i,1,2)*dr2
114 ch(1,m2,k,2,i) = wa(i,1,1)*dr2-wa(i,1,2)*di2
115 ch(2,m2,k,3,i) = wa(i,2,1)*di3+wa(i,2,2)*dr3
116 ch(1,m2,k,3,i) = wa(i,2,1)*dr3-wa(i,2,2)*di3
125 tr2 = cc(1,m1,k,1,2)+cc(1,m1,k,1,3)
126 cr2 = cc(1,m1,k,1,1)+taur*tr2
127 cc(1,m1,k,1,1) = cc(1,m1,k,1,1)+tr2
128 ti2 = cc(2,m1,k,1,2)+cc(2,m1,k,1,3)
129 ci2 = cc(2,m1,k,1,1)+taur*ti2
130 cc(2,m1,k,1,1) = cc(2,m1,k,1,1)+ti2
131 cr3 = taui*(cc(1,m1,k,1,2)-cc(1,m1,k,1,3))
132 ci3 = taui*(cc(2,m1,k,1,2)-cc(2,m1,k,1,3))
133 cc(1,m1,k,1,2) = cr2-ci3
134 cc(1,m1,k,1,3) = cr2+ci3
135 cc(2,m1,k,1,2) = ci2+cr3
136 cc(2,m1,k,1,3) = ci2-cr3