1 subroutine dsintb1 ( n, inc, x, wsave, xh, work, ier )
3 !*****************************************************************************80
5 !! DSINTB1 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 real ( kind = 8 ) fnp1s4
38 integer ( kind = 4 ) i
39 integer ( kind = 4 ) ier
40 integer ( kind = 4 ) ier1
41 integer ( kind = 4 ) k
42 integer ( kind = 4 ) kc
43 integer ( kind = 4 ) lnsv
44 integer ( kind = 4 ) lnwk
45 integer ( kind = 4 ) lnxh
46 integer ( kind = 4 ) modn
47 integer ( kind = 4 ) n
48 integer ( kind = 4 ) np1
49 integer ( kind = 4 ) ns2
50 real ( kind = 8 ) srt3s2
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 srt3s2 = sqrt ( 3.0D+00 ) / 2.0D+00
67 xhold = srt3s2 * ( x(1,1) + x(1,2) )
68 x(1,2) = srt3s2 * ( 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 ( 'DSINTB1', -5 )
103 if ( mod ( np1, 2 ) == 0 ) then
104 xh(np1) = xh(np1) + xh(np1)
107 fnp1s4 = real ( np1, kind = 8 ) / 4.0D+00
108 x(1,1) = fnp1s4 * xh(1)
112 x(1,i-1) = fnp1s4 * xh(i)
113 dsum = dsum + fnp1s4 * xh(i-1)
117 if ( modn == 0 ) then
118 x(1,n) = fnp1s4 * xh(n+1)