1 subroutine dsintf1 ( n, inc, x, wsave, xh, work, ier )
3 !*****************************************************************************80
5 !! DSINTF1 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 ) inc
36 real ( kind = 8 ) dsum
37 integer ( kind = 4 ) i
38 integer ( kind = 4 ) ier
39 integer ( kind = 4 ) ier1
40 integer ( kind = 4 ) k
41 integer ( kind = 4 ) kc
42 integer ( kind = 4 ) lnsv
43 integer ( kind = 4 ) lnwk
44 integer ( kind = 4 ) lnxh
45 integer ( kind = 4 ) modn
46 integer ( kind = 4 ) n
47 integer ( kind = 4 ) np1
48 integer ( kind = 4 ) ns2
49 real ( kind = 8 ) sfnp1
50 real ( kind = 8 ) ssqrt3
53 real ( kind = 8 ) work(*)
54 real ( kind = 8 ) wsave(*)
55 real ( kind = 8 ) x(inc,*)
56 real ( kind = 8 ) xh(*)
57 real ( kind = 8 ) xhold
66 ssqrt3 = 1.0D+00 / sqrt ( 3.0D+00 )
67 xhold = ssqrt3 * ( x(1,1) + x(1,2) )
68 x(1,2) = ssqrt3 * ( x(1,1) - x(1,2) )
79 t2 = wsave(k) * ( x(1,k) + x(1,kc) )
87 xh(ns2+2) = 4.0D+00 * x(1,ns2+1)
92 lnsv = np1 + int ( log ( real ( np1, kind = 8 ) ) ) + 4
95 call dfft1f ( np1, 1, xh, lnxh, wsave(ns2+1), lnsv, work, lnwk, ier1 )
99 call xerfft ( 'DSINTF1', -5 )
103 if ( mod ( np1, 2 ) == 0 ) then
104 xh(np1) = xh(np1) + xh(np1)
107 sfnp1 = 1.0D+00 / real ( np1, kind = 8 )
108 x(1,1) = 0.5D+00 * xh(1)
112 x(1,i-1) = 0.5D+00 * xh(i)
113 dsum = dsum + 0.5D+00 * xh(i-1)
117 if ( modn == 0 ) then
118 x(1,n) = 0.5D+00 * xh(n+1)