Mac binaries
[jabaws.git] / website / archive / binaries / mac / src / disembl / Tisean_3.0.1 / source_f / slatec / radb2.f
1 *DECK RADB2
2       SUBROUTINE RADB2 (IDO, L1, CC, CH, WA1)
3 C***BEGIN PROLOGUE  RADB2
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 (RADB2-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  RADB2
21       DIMENSION CC(IDO,2,*), CH(IDO,L1,2), WA1(*)
22 C***FIRST EXECUTABLE STATEMENT  RADB2
23       DO 101 K=1,L1
24          CH(1,K,1) = CC(1,1,K)+CC(IDO,2,K)
25          CH(1,K,2) = CC(1,1,K)-CC(IDO,2,K)
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             CH(I-1,K,1) = CC(I-1,1,K)+CC(IC-1,2,K)
35             TR2 = CC(I-1,1,K)-CC(IC-1,2,K)
36             CH(I,K,1) = CC(I,1,K)-CC(IC,2,K)
37             TI2 = CC(I,1,K)+CC(IC,2,K)
38             CH(I-1,K,2) = WA1(I-2)*TR2-WA1(I-1)*TI2
39             CH(I,K,2) = WA1(I-2)*TI2+WA1(I-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             CH(I-1,K,1) = CC(I-1,1,K)+CC(IC-1,2,K)
48             TR2 = CC(I-1,1,K)-CC(IC-1,2,K)
49             CH(I,K,1) = CC(I,1,K)-CC(IC,2,K)
50             TI2 = CC(I,1,K)+CC(IC,2,K)
51             CH(I-1,K,2) = WA1(I-2)*TR2-WA1(I-1)*TI2
52             CH(I,K,2) = WA1(I-2)*TI2+WA1(I-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(IDO,K,1) = CC(IDO,1,K)+CC(IDO,1,K)
58          CH(IDO,K,2) = -(CC(1,2,K)+CC(1,2,K))
59   106 CONTINUE
60   107 RETURN
61       END