1 subroutine msntb1 ( lot, jump, n, inc, x, wsave, dsum, xh, work, ier )
3 !*****************************************************************************80
5 !! MSNTB1 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
37 integer ( kind = 4 ) lot
39 real ( kind = 8 ) dsum(*)
40 real ( kind = 4 ) fnp1s4
41 integer ( kind = 4 ) i
42 integer ( kind = 4 ) ier
43 integer ( kind = 4 ) ier1
44 integer ( kind = 4 ) jump
45 integer ( kind = 4 ) k
46 integer ( kind = 4 ) kc
47 integer ( kind = 4 ) lj
48 integer ( kind = 4 ) lnsv
49 integer ( kind = 4 ) lnwk
50 integer ( kind = 4 ) lnxh
51 integer ( kind = 4 ) m
52 integer ( kind = 4 ) m1
53 integer ( kind = 4 ) modn
54 integer ( kind = 4 ) n
55 integer ( kind = 4 ) np1
56 integer ( kind = 4 ) ns2
57 real ( kind = 4 ) srt3s2
60 real ( kind = 4 ) work(*)
61 real ( kind = 4 ) wsave(*)
62 real ( kind = 4 ) x(inc,*)
63 real ( kind = 4 ) xh(lot,*)
64 real ( kind = 4 ) xhold
67 lj = ( lot - 1 ) * jump + 1
75 srt3s2 = sqrt ( 3.0E+00 ) / 2.0E+00
78 xhold = srt3s2 * ( x(m,1) + x(m,2) )
79 x(m,2) = srt3s2 * ( x(m,1) - x(m,2) )
95 t2 = wsave(k) * ( x(m,k) + x(m,kc) )
103 if ( modn /= 0 ) then
108 xh(m1,ns2+2) = 4.0E+00 * x(m,ns2+1)
117 lnxh = lot - 1 + lot * ( np1 - 1 ) + 1
118 lnsv = np1 + int ( log ( real ( np1, kind = 4 ) ) ) + 4
121 call rfftmf ( lot, 1, np1, lot, xh, lnxh, wsave(ns2+1), lnsv, work, &
124 if ( ier1 /= 0 ) then
126 call xerfft ( 'msntb1', -5 )
130 if ( mod ( np1, 2 ) == 0 ) then
132 xh(m,np1) = xh(m,np1) + xh(m,np1)
136 fnp1s4 = real ( np1, kind = 4 ) / 4.0E+00
141 x(m,1) = fnp1s4 * xh(m1,1)
149 x(m,i-1) = fnp1s4 * xh(m1,i)
150 dsum(m1) = dsum(m1) + fnp1s4 * xh(m1,i-1)
155 if ( modn == 0 ) then
159 x(m,n) = fnp1s4 * xh(m1,n+1)