1 subroutine c1f5kb ( ido, l1, na, cc, in1, ch, in2, wa )
3 !*****************************************************************************80
5 !! C1F5KB 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(in1,l1,ido,5)
42 real ( kind = 4 ) ch(in2,l1,5,ido)
43 real ( kind = 4 ) chold1
44 real ( kind = 4 ) chold2
61 integer ( kind = 4 ) i
62 integer ( kind = 4 ) k
63 integer ( kind = 4 ) na
68 real ( kind = 4 ), parameter :: ti11 = 0.9510565162951536E+00
69 real ( kind = 4 ), parameter :: ti12 = 0.5877852522924731E+00
74 real ( kind = 4 ), parameter :: tr11 = 0.3090169943749474E+00
75 real ( kind = 4 ), parameter :: tr12 = -0.8090169943749474E+00
76 real ( kind = 4 ) wa(ido,4,2)
78 if ( 1 < ido .or. na == 1 ) then
81 ti5 = cc(2,k,1,2)-cc(2,k,1,5)
82 ti2 = cc(2,k,1,2)+cc(2,k,1,5)
83 ti4 = cc(2,k,1,3)-cc(2,k,1,4)
84 ti3 = cc(2,k,1,3)+cc(2,k,1,4)
85 tr5 = cc(1,k,1,2)-cc(1,k,1,5)
86 tr2 = cc(1,k,1,2)+cc(1,k,1,5)
87 tr4 = cc(1,k,1,3)-cc(1,k,1,4)
88 tr3 = cc(1,k,1,3)+cc(1,k,1,4)
89 ch(1,k,1,1) = cc(1,k,1,1)+tr2+tr3
90 ch(2,k,1,1) = cc(2,k,1,1)+ti2+ti3
91 cr2 = cc(1,k,1,1)+tr11*tr2+tr12*tr3
92 ci2 = cc(2,k,1,1)+tr11*ti2+tr12*ti3
93 cr3 = cc(1,k,1,1)+tr12*tr2+tr11*tr3
94 ci3 = cc(2,k,1,1)+tr12*ti2+tr11*ti3
95 cr5 = ti11*tr5+ti12*tr4
96 ci5 = ti11*ti5+ti12*ti4
97 cr4 = ti12*tr5-ti11*tr4
98 ci4 = ti12*ti5-ti11*ti4
100 ch(1,k,5,1) = cr2+ci5
101 ch(2,k,2,1) = ci2+cr5
102 ch(2,k,3,1) = ci3+cr4
103 ch(1,k,3,1) = cr3-ci4
104 ch(1,k,4,1) = cr3+ci4
105 ch(2,k,4,1) = ci3-cr4
106 ch(2,k,5,1) = ci2-cr5
111 ti5 = cc(2,k,i,2)-cc(2,k,i,5)
112 ti2 = cc(2,k,i,2)+cc(2,k,i,5)
113 ti4 = cc(2,k,i,3)-cc(2,k,i,4)
114 ti3 = cc(2,k,i,3)+cc(2,k,i,4)
115 tr5 = cc(1,k,i,2)-cc(1,k,i,5)
116 tr2 = cc(1,k,i,2)+cc(1,k,i,5)
117 tr4 = cc(1,k,i,3)-cc(1,k,i,4)
118 tr3 = cc(1,k,i,3)+cc(1,k,i,4)
119 ch(1,k,1,i) = cc(1,k,i,1)+tr2+tr3
120 ch(2,k,1,i) = cc(2,k,i,1)+ti2+ti3
121 cr2 = cc(1,k,i,1)+tr11*tr2+tr12*tr3
122 ci2 = cc(2,k,i,1)+tr11*ti2+tr12*ti3
123 cr3 = cc(1,k,i,1)+tr12*tr2+tr11*tr3
124 ci3 = cc(2,k,i,1)+tr12*ti2+tr11*ti3
125 cr5 = ti11*tr5+ti12*tr4
126 ci5 = ti11*ti5+ti12*ti4
127 cr4 = ti12*tr5-ti11*tr4
128 ci4 = ti12*ti5-ti11*ti4
137 ch(1,k,2,i) = wa(i,1,1)*dr2-wa(i,1,2)*di2
138 ch(2,k,2,i) = wa(i,1,1)*di2+wa(i,1,2)*dr2
139 ch(1,k,3,i) = wa(i,2,1)*dr3-wa(i,2,2)*di3
140 ch(2,k,3,i) = wa(i,2,1)*di3+wa(i,2,2)*dr3
141 ch(1,k,4,i) = wa(i,3,1)*dr4-wa(i,3,2)*di4
142 ch(2,k,4,i) = wa(i,3,1)*di4+wa(i,3,2)*dr4
143 ch(1,k,5,i) = wa(i,4,1)*dr5-wa(i,4,2)*di5
144 ch(2,k,5,i) = wa(i,4,1)*di5+wa(i,4,2)*dr5
151 ti5 = cc(2,k,1,2)-cc(2,k,1,5)
152 ti2 = cc(2,k,1,2)+cc(2,k,1,5)
153 ti4 = cc(2,k,1,3)-cc(2,k,1,4)
154 ti3 = cc(2,k,1,3)+cc(2,k,1,4)
155 tr5 = cc(1,k,1,2)-cc(1,k,1,5)
156 tr2 = cc(1,k,1,2)+cc(1,k,1,5)
157 tr4 = cc(1,k,1,3)-cc(1,k,1,4)
158 tr3 = cc(1,k,1,3)+cc(1,k,1,4)
159 chold1 = cc(1,k,1,1)+tr2+tr3
160 chold2 = cc(2,k,1,1)+ti2+ti3
161 cr2 = cc(1,k,1,1)+tr11*tr2+tr12*tr3
162 ci2 = cc(2,k,1,1)+tr11*ti2+tr12*ti3
163 cr3 = cc(1,k,1,1)+tr12*tr2+tr11*tr3
164 ci3 = cc(2,k,1,1)+tr12*ti2+tr11*ti3
167 cr5 = ti11*tr5+ti12*tr4
168 ci5 = ti11*ti5+ti12*ti4
169 cr4 = ti12*tr5-ti11*tr4
170 ci4 = ti12*ti5-ti11*ti4
171 cc(1,k,1,2) = cr2-ci5
172 cc(1,k,1,5) = cr2+ci5
173 cc(2,k,1,2) = ci2+cr5
174 cc(2,k,1,3) = ci3+cr4
175 cc(1,k,1,3) = cr3-ci4
176 cc(1,k,1,4) = cr3+ci4
177 cc(2,k,1,4) = ci3-cr4
178 cc(2,k,1,5) = ci2-cr5