1 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
5 C Authors: Paul N. Swarztrauber and Richard A. Valent
9 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
11 SUBROUTINE MCSTF1
(LOT
,JUMP
,N
,INC
,X
,WSAVE
,DSUM
,WORK
,IER
)
12 REAL X
(INC
,*) ,WSAVE
(*)
13 DOUBLE PRECISION DSUM
(*)
20 101 DO 111 M
=1,LJ
,JUMP
22 X
(M
,2) = .5*(X
(M
,1)-X
(M
,2))
26 102 IF (N
.GT
. 3) GO TO 103
30 X
(M
,2) = .5*(X
(M
,1)-X
(M
,3))
31 X
(M
,1) = .25*(X1P3
+TX2
)
32 X
(M
,3) = .25*(X1P3
-TX2
)
38 DSUM
(M1
) = X
(M
,1)-X
(M
,N
)
39 X
(M
,1) = X
(M
,1)+X
(M
,N
)
48 DSUM
(M1
) = DSUM
(M1
)+WSAVE
(KC
)*T2
55 IF (MODN
.EQ
. 0) GO TO 124
57 X
(M
,NS2
+1) = X
(M
,NS2
+1)+X
(M
,NS2
+1)
60 LENX
= (LOT
-1)*JUMP
+ INC*
(NM1
-1) + 1
61 LNSV
= NM1
+ INT
(LOG
(REAL(NM1
))/LOG
(2.)) + 4
64 CALL RFFTMF
(LOT
,JUMP
,NM1
,INC
,X
,LENX
,WSAVE
(N
+1),LNSV
,WORK
,
68 CALL XERFFT
('MCSTF1',-5)
74 DSUM
(M
) = SNM1*DSUM
(M
)
76 IF(MOD
(NM1
,2) .NE
. 0) GO TO 30
78 X
(M
,NM1
) = X
(M
,NM1
)+X
(M
,NM1
)
87 DSUM
(M1
) = DSUM
(M1
)+XI
90 IF (MODN
.NE
. 0) GO TO 117
96 117 DO 118 M
=1,LJ
,JUMP