1 subroutine dfftf1 ( n, in, c, ch, wa, fac )
3 !*****************************************************************************80
5 !! DFFTF1 is an FFTPACK5 auxiliary routine.
15 ! Original real single precision by Paul Swarztrauber, Richard Valent.
16 ! Real 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 ) in
35 integer ( kind = 4 ) n
37 real ( kind = 8 ) c(in,*)
38 real ( kind = 8 ) ch(*)
39 real ( kind = 8 ) fac(15)
40 integer ( kind = 4 ) idl1
41 integer ( kind = 4 ) ido
42 integer ( kind = 4 ) ip
43 integer ( kind = 4 ) iw
44 integer ( kind = 4 ) ix2
45 integer ( kind = 4 ) ix3
46 integer ( kind = 4 ) ix4
47 integer ( kind = 4 ) j
48 integer ( kind = 4 ) k1
49 integer ( kind = 4 ) kh
50 integer ( kind = 4 ) l1
51 integer ( kind = 4 ) l2
52 integer ( kind = 4 ) modn
53 integer ( kind = 4 ) na
54 integer ( kind = 4 ) nf
55 integer ( kind = 4 ) nl
58 real ( kind = 8 ) tsnm
59 real ( kind = 8 ) wa(n)
69 ip = int ( fac(kh+3) )
73 iw = iw - ( ip - 1 ) * ido
82 call d1f4kf ( ido, l1, c, in, ch, 1, wa(iw), wa(ix2), wa(ix3) )
84 call d1f4kf ( ido, l1, ch, 1, c, in, wa(iw), wa(ix2), wa(ix3) )
87 else if ( ip == 2 ) then
90 call d1f2kf ( ido, l1, c, in, ch, 1, wa(iw) )
92 call d1f2kf ( ido, l1, ch, 1, c, in, wa(iw) )
95 else if ( ip == 3 ) then
100 call d1f3kf ( ido, l1, c, in, ch, 1, wa(iw), wa(ix2) )
102 call d1f3kf ( ido, l1, ch, 1, c, in, wa(iw), wa(ix2) )
105 else if ( ip == 5 ) then
112 call d1f5kf ( ido, l1, c, in, ch, 1, wa(iw), wa(ix2), wa(ix3), wa(ix4) )
114 call d1f5kf ( ido, l1, ch, 1, c, in, wa(iw), wa(ix2), wa(ix3), wa(ix4) )
124 call d1fgkf ( ido, ip, l1, idl1, c, c, c, in, ch, ch, 1, wa(iw) )
127 call d1fgkf ( ido, ip, l1, idl1, ch, ch, ch, 1, c, c, in, wa(iw) )
137 sn = 1.0D+00 / real ( n, kind = 8 )
138 tsn = 2.0D+00 / real ( n, kind = 8 )
143 if ( modn /= 0 ) then
152 c(1,j+1) = tsnm * ch(j+1)
155 if ( modn == 0 ) then
164 c(1,j) = tsn * c(1,j)
165 c(1,j+1) = tsnm * c(1,j+1)
168 if ( modn == 0 ) then