1 subroutine mcsqb1 ( lot, jump, n, inc, x, wsave, work, ier )
3 !*****************************************************************************80
5 !! MCSQB1 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 integer ( kind = 4 ) i
40 integer ( kind = 4 ) ier
41 integer ( kind = 4 ) ier1
42 integer ( kind = 4 ) jump
43 integer ( kind = 4 ) k
44 integer ( kind = 4 ) kc
45 integer ( kind = 4 ) lenx
46 integer ( kind = 4 ) lj
47 integer ( kind = 4 ) lnsv
48 integer ( kind = 4 ) lnwk
49 integer ( kind = 4 ) m
50 integer ( kind = 4 ) m1
51 integer ( kind = 4 ) modn
52 integer ( kind = 4 ) n
53 integer ( kind = 4 ) np2
54 integer ( kind = 4 ) ns2
55 real ( kind = 4 ) work(lot,*)
56 real ( kind = 4 ) wsave(*)
57 real ( kind = 4 ) x(inc,*)
58 real ( kind = 4 ) xim1
61 lj = ( lot - 1 ) * jump + 1
67 xim1 = x(m,i-1) + x(m,i)
68 x(m,i) = 0.5E+00 * ( x(m,i-1) - x(m,i) )
69 x(m,i-1) = 0.5E+00 * xim1
74 x(m,1) = 0.5E+00 * x(m,1)
80 x(m,n) = 0.5E+00 * x(m,n)
84 lenx = ( lot - 1 ) * jump + inc * ( n - 1 ) + 1
85 lnsv = n + int ( log ( real ( n, kind = 4 ) ) ) + 4
88 call rfftmb ( lot, jump, n, inc, x, lenx, wsave(n+1), lnsv, &
93 call xerfft ( 'mcsqb1', -5 )
102 work(m1,k) = wsave(k-1) * x(m,kc) + wsave(kc-1) * x(m,k)
103 work(m1,kc) = wsave(k-1) * x(m,k) - wsave(kc-1) * x(m,kc)
107 if ( modn == 0 ) then
109 x(m,ns2+1) = wsave(ns2) * ( x(m,ns2+1) + x(m,ns2+1) )
118 x(m,k) = work(m1,k) + work(m1,kc)
119 x(m,kc) = work(m1,k) - work(m1,kc)
124 x(m,1) = x(m,1) + x(m,1)