1 subroutine sintf1 ( n, inc, x, wsave, xh, work, ier )
3 !*****************************************************************************80
5 !! SINTF1 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 ) inc
38 real ( kind = 8 ) dsum
39 integer ( kind = 4 ) i
40 integer ( kind = 4 ) ier
41 integer ( kind = 4 ) ier1
42 integer ( kind = 4 ) k
43 integer ( kind = 4 ) kc
44 integer ( kind = 4 ) lnsv
45 integer ( kind = 4 ) lnwk
46 integer ( kind = 4 ) lnxh
47 integer ( kind = 4 ) modn
48 integer ( kind = 4 ) n
49 integer ( kind = 4 ) np1
50 integer ( kind = 4 ) ns2
51 real ( kind = 4 ) sfnp1
52 real ( kind = 4 ) ssqrt3
55 real ( kind = 4 ) work(*)
56 real ( kind = 4 ) wsave(*)
57 real ( kind = 4 ) x(inc,*)
58 real ( kind = 4 ) xh(*)
59 real ( kind = 4 ) xhold
68 ssqrt3 = 1.0E+00 / sqrt ( 3.0E+00 )
69 xhold = ssqrt3 * ( x(1,1) + x(1,2) )
70 x(1,2) = ssqrt3 * ( x(1,1) - x(1,2) )
81 t2 = wsave(k) * ( x(1,k) + x(1,kc) )
89 xh(ns2+2) = 4.0E+00 * x(1,ns2+1)
94 lnsv = np1 + int ( log ( real ( np1, kind = 4 ) ) ) + 4
97 call rfft1f ( np1, 1, xh, lnxh, wsave(ns2+1), lnsv, work, lnwk, ier1 )
101 call xerfft ( 'sintf1', -5 )
105 if ( mod ( np1, 2 ) == 0 ) then
106 xh(np1) = xh(np1) + xh(np1)
109 sfnp1 = 1.0E+00 / real ( np1, kind = 4 )
110 x(1,1) = 0.5E+00 * xh(1)
114 x(1,i-1) = 0.5E+00 * xh(i)
115 dsum = dsum + 0.5E+00 * xh(i-1)
119 if ( modn == 0 ) then
120 x(1,n) = 0.5E+00 * xh(n+1)