1 subroutine zmf5kb ( lot, ido, l1, na, cc, im1, in1, ch, im2, in2, wa )
3 !*****************************************************************************80
5 !! ZMF5KB is an FFTPACK5 auxiliary routine.
15 ! Original complex single precision by Paul Swarztrauber, Richard Valent.
16 ! Complex double precision version by John Burkardt.
21 ! Vectorizing the Fast Fourier Transforms,
22 ! in Parallel Computations,
23 ! edited by G. Rodrigue,
24 ! Academic Press, 1982.
27 ! Fast Fourier Transform Algorithms for Vector Computers,
28 ! Parallel Computing, pages 45-63, 1984.
34 integer ( kind = 4 ) ido
35 integer ( kind = 4 ) in1
36 integer ( kind = 4 ) in2
37 integer ( kind = 4 ) l1
39 real ( kind = 8 ) cc(2,in1,l1,ido,5)
40 real ( kind = 8 ) ch(2,in2,l1,5,ido)
41 real ( kind = 8 ) chold1
42 real ( kind = 8 ) chold2
59 integer ( kind = 4 ) i
60 integer ( kind = 4 ) im1
61 integer ( kind = 4 ) im2
62 integer ( kind = 4 ) k
63 integer ( kind = 4 ) lot
64 integer ( kind = 4 ) m1
65 integer ( kind = 4 ) m1d
66 integer ( kind = 4 ) m2
67 integer ( kind = 4 ) m2s
68 integer ( kind = 4 ) na
73 real ( kind = 8 ), parameter :: ti11 = 0.9510565162951536D+00
74 real ( kind = 8 ), parameter :: ti12 = 0.5877852522924731D+00
79 real ( kind = 8 ), parameter :: tr11 = 0.3090169943749474D+00
80 real ( kind = 8 ), parameter :: tr12 = -0.8090169943749474D+00
81 real ( kind = 8 ) wa(ido,4,2)
83 m1d = ( lot - 1 ) * im1 + 1
86 if ( 1 < ido .or. na == 1 ) then
92 ti5 = cc(2,m1,k,1,2)-cc(2,m1,k,1,5)
93 ti2 = cc(2,m1,k,1,2)+cc(2,m1,k,1,5)
94 ti4 = cc(2,m1,k,1,3)-cc(2,m1,k,1,4)
95 ti3 = cc(2,m1,k,1,3)+cc(2,m1,k,1,4)
96 tr5 = cc(1,m1,k,1,2)-cc(1,m1,k,1,5)
97 tr2 = cc(1,m1,k,1,2)+cc(1,m1,k,1,5)
98 tr4 = cc(1,m1,k,1,3)-cc(1,m1,k,1,4)
99 tr3 = cc(1,m1,k,1,3)+cc(1,m1,k,1,4)
100 ch(1,m2,k,1,1) = cc(1,m1,k,1,1)+tr2+tr3
101 ch(2,m2,k,1,1) = cc(2,m1,k,1,1)+ti2+ti3
102 cr2 = cc(1,m1,k,1,1)+tr11*tr2+tr12*tr3
103 ci2 = cc(2,m1,k,1,1)+tr11*ti2+tr12*ti3
104 cr3 = cc(1,m1,k,1,1)+tr12*tr2+tr11*tr3
105 ci3 = cc(2,m1,k,1,1)+tr12*ti2+tr11*ti3
106 cr5 = ti11*tr5+ti12*tr4
107 ci5 = ti11*ti5+ti12*ti4
108 cr4 = ti12*tr5-ti11*tr4
109 ci4 = ti12*ti5-ti11*ti4
110 ch(1,m2,k,2,1) = cr2-ci5
111 ch(1,m2,k,5,1) = cr2+ci5
112 ch(2,m2,k,2,1) = ci2+cr5
113 ch(2,m2,k,3,1) = ci3+cr4
114 ch(1,m2,k,3,1) = cr3-ci4
115 ch(1,m2,k,4,1) = cr3+ci4
116 ch(2,m2,k,4,1) = ci3-cr4
117 ch(2,m2,k,5,1) = ci2-cr5
126 ti5 = cc(2,m1,k,i,2)-cc(2,m1,k,i,5)
127 ti2 = cc(2,m1,k,i,2)+cc(2,m1,k,i,5)
128 ti4 = cc(2,m1,k,i,3)-cc(2,m1,k,i,4)
129 ti3 = cc(2,m1,k,i,3)+cc(2,m1,k,i,4)
130 tr5 = cc(1,m1,k,i,2)-cc(1,m1,k,i,5)
131 tr2 = cc(1,m1,k,i,2)+cc(1,m1,k,i,5)
132 tr4 = cc(1,m1,k,i,3)-cc(1,m1,k,i,4)
133 tr3 = cc(1,m1,k,i,3)+cc(1,m1,k,i,4)
134 ch(1,m2,k,1,i) = cc(1,m1,k,i,1)+tr2+tr3
135 ch(2,m2,k,1,i) = cc(2,m1,k,i,1)+ti2+ti3
136 cr2 = cc(1,m1,k,i,1)+tr11*tr2+tr12*tr3
137 ci2 = cc(2,m1,k,i,1)+tr11*ti2+tr12*ti3
138 cr3 = cc(1,m1,k,i,1)+tr12*tr2+tr11*tr3
139 ci3 = cc(2,m1,k,i,1)+tr12*ti2+tr11*ti3
140 cr5 = ti11*tr5+ti12*tr4
141 ci5 = ti11*ti5+ti12*ti4
142 cr4 = ti12*tr5-ti11*tr4
143 ci4 = ti12*ti5-ti11*ti4
152 ch(1,m2,k,2,i) = wa(i,1,1) * dr2 - wa(i,1,2) * di2
153 ch(2,m2,k,2,i) = wa(i,1,1) * di2 + wa(i,1,2) * dr2
154 ch(1,m2,k,3,i) = wa(i,2,1) * dr3 - wa(i,2,2) * di3
155 ch(2,m2,k,3,i) = wa(i,2,1) * di3 + wa(i,2,2) * dr3
156 ch(1,m2,k,4,i) = wa(i,3,1) * dr4 - wa(i,3,2) * di4
157 ch(2,m2,k,4,i) = wa(i,3,1) * di4 + wa(i,3,2) * dr4
158 ch(1,m2,k,5,i) = wa(i,4,1) * dr5 - wa(i,4,2) * di5
159 ch(2,m2,k,5,i) = wa(i,4,1) * di5 + wa(i,4,2) * dr5
168 ti5 = cc(2,m1,k,1,2)-cc(2,m1,k,1,5)
169 ti2 = cc(2,m1,k,1,2)+cc(2,m1,k,1,5)
170 ti4 = cc(2,m1,k,1,3)-cc(2,m1,k,1,4)
171 ti3 = cc(2,m1,k,1,3)+cc(2,m1,k,1,4)
172 tr5 = cc(1,m1,k,1,2)-cc(1,m1,k,1,5)
173 tr2 = cc(1,m1,k,1,2)+cc(1,m1,k,1,5)
174 tr4 = cc(1,m1,k,1,3)-cc(1,m1,k,1,4)
175 tr3 = cc(1,m1,k,1,3)+cc(1,m1,k,1,4)
177 chold1 = cc(1,m1,k,1,1) + tr2 + tr3
178 chold2 = cc(2,m1,k,1,1) + ti2 + ti3
180 cr2 = cc(1,m1,k,1,1) + tr11 * tr2 + tr12 * tr3
181 ci2 = cc(2,m1,k,1,1) + tr11 * ti2 + tr12 * ti3
182 cr3 = cc(1,m1,k,1,1) + tr12 * tr2 + tr11 * tr3
183 ci3 = cc(2,m1,k,1,1) + tr12 * ti2 + tr11 * ti3
185 cc(1,m1,k,1,1) = chold1
186 cc(2,m1,k,1,1) = chold2
188 cr5 = ti11*tr5 + ti12*tr4
189 ci5 = ti11*ti5 + ti12*ti4
190 cr4 = ti12*tr5 - ti11*tr4
191 ci4 = ti12*ti5 - ti11*ti4
192 cc(1,m1,k,1,2) = cr2-ci5
193 cc(1,m1,k,1,5) = cr2+ci5
194 cc(2,m1,k,1,2) = ci2+cr5
195 cc(2,m1,k,1,3) = ci3+cr4
196 cc(1,m1,k,1,3) = cr3-ci4
197 cc(1,m1,k,1,4) = cr3+ci4
198 cc(2,m1,k,1,4) = ci3-cr4
199 cc(2,m1,k,1,5) = ci2-cr5