Mac binaries
[jabaws.git] / website / archive / binaries / mac / src / disembl / Tisean_3.0.1 / source_f / slatec / radf2.f
1 *DECK RADF2
2       SUBROUTINE RADF2 (IDO, L1, CC, CH, WA1)
3 C***BEGIN PROLOGUE  RADF2
4 C***SUBSIDIARY
5 C***PURPOSE  Calculate the fast Fourier transform of subvectors of
6 C            length two.
7 C***LIBRARY   SLATEC (FFTPACK)
8 C***TYPE      SINGLE PRECISION (RADF2-S)
9 C***AUTHOR  Swarztrauber, P. N., (NCAR)
10 C***ROUTINES CALLED  (NONE)
11 C***REVISION HISTORY  (YYMMDD)
12 C   790601  DATE WRITTEN
13 C   830401  Modified to use SLATEC library source file format.
14 C   860115  Modified by Ron Boisvert to adhere to Fortran 77 by
15 C           changing dummy array size declarations (1) to (*).
16 C   881128  Modified by Dick Valent to meet prologue standards.
17 C   890831  Modified array declarations.  (WRB)
18 C   891214  Prologue converted to Version 4.0 format.  (BAB)
19 C   900402  Added TYPE section.  (WRB)
20 C***END PROLOGUE  RADF2
21       DIMENSION CH(IDO,2,*), CC(IDO,L1,2), WA1(*)
22 C***FIRST EXECUTABLE STATEMENT  RADF2
23       DO 101 K=1,L1
24          CH(1,1,K) = CC(1,K,1)+CC(1,K,2)
25          CH(IDO,2,K) = CC(1,K,1)-CC(1,K,2)
26   101 CONTINUE
27       IF (IDO-2) 107,105,102
28   102 IDP2 = IDO+2
29       IF((IDO-1)/2.LT.L1) GO TO 108
30       DO 104 K=1,L1
31 CDIR$ IVDEP
32          DO 103 I=3,IDO,2
33             IC = IDP2-I
34             TR2 = WA1(I-2)*CC(I-1,K,2)+WA1(I-1)*CC(I,K,2)
35             TI2 = WA1(I-2)*CC(I,K,2)-WA1(I-1)*CC(I-1,K,2)
36             CH(I,1,K) = CC(I,K,1)+TI2
37             CH(IC,2,K) = TI2-CC(I,K,1)
38             CH(I-1,1,K) = CC(I-1,K,1)+TR2
39             CH(IC-1,2,K) = CC(I-1,K,1)-TR2
40   103    CONTINUE
41   104 CONTINUE
42       GO TO 111
43   108 DO 110 I=3,IDO,2
44          IC = IDP2-I
45 CDIR$ IVDEP
46          DO 109 K=1,L1
47             TR2 = WA1(I-2)*CC(I-1,K,2)+WA1(I-1)*CC(I,K,2)
48             TI2 = WA1(I-2)*CC(I,K,2)-WA1(I-1)*CC(I-1,K,2)
49             CH(I,1,K) = CC(I,K,1)+TI2
50             CH(IC,2,K) = TI2-CC(I,K,1)
51             CH(I-1,1,K) = CC(I-1,K,1)+TR2
52             CH(IC-1,2,K) = CC(I-1,K,1)-TR2
53   109    CONTINUE
54   110 CONTINUE
55   111 IF (MOD(IDO,2) .EQ. 1) RETURN
56   105 DO 106 K=1,L1
57          CH(1,2,K) = -CC(IDO,K,2)
58          CH(IDO,1,K) = CC(IDO,K,1)
59   106 CONTINUE
60   107 RETURN
61       END