Change Eclipse configuration
[jabaws.git] / website / archive / binaries / mac / src / disembl / Tisean_3.0.1 / source_f / slatec / radf3.f
1 *DECK RADF3
2       SUBROUTINE RADF3 (IDO, L1, CC, CH, WA1, WA2)
3 C***BEGIN PROLOGUE  RADF3
4 C***SUBSIDIARY
5 C***PURPOSE  Calculate the fast Fourier transform of subvectors of
6 C            length three.
7 C***LIBRARY   SLATEC (FFTPACK)
8 C***TYPE      SINGLE PRECISION (RADF3-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           (a) changing dummy array size declarations (1) to (*),
16 C           (b) changing definition of variable TAUI by using
17 C               FORTRAN intrinsic function SQRT instead of a DATA
18 C               statement.
19 C   881128  Modified by Dick Valent to meet prologue standards.
20 C   890831  Modified array declarations.  (WRB)
21 C   891214  Prologue converted to Version 4.0 format.  (BAB)
22 C   900402  Added TYPE section.  (WRB)
23 C***END PROLOGUE  RADF3
24       DIMENSION CH(IDO,3,*), CC(IDO,L1,3), WA1(*), WA2(*)
25 C***FIRST EXECUTABLE STATEMENT  RADF3
26       TAUR = -.5
27       TAUI = .5*SQRT(3.)
28       DO 101 K=1,L1
29          CR2 = CC(1,K,2)+CC(1,K,3)
30          CH(1,1,K) = CC(1,K,1)+CR2
31          CH(1,3,K) = TAUI*(CC(1,K,3)-CC(1,K,2))
32          CH(IDO,2,K) = CC(1,K,1)+TAUR*CR2
33   101 CONTINUE
34       IF (IDO .EQ. 1) RETURN
35       IDP2 = IDO+2
36       IF((IDO-1)/2.LT.L1) GO TO 104
37       DO 103 K=1,L1
38 CDIR$ IVDEP
39          DO 102 I=3,IDO,2
40             IC = IDP2-I
41             DR2 = WA1(I-2)*CC(I-1,K,2)+WA1(I-1)*CC(I,K,2)
42             DI2 = WA1(I-2)*CC(I,K,2)-WA1(I-1)*CC(I-1,K,2)
43             DR3 = WA2(I-2)*CC(I-1,K,3)+WA2(I-1)*CC(I,K,3)
44             DI3 = WA2(I-2)*CC(I,K,3)-WA2(I-1)*CC(I-1,K,3)
45             CR2 = DR2+DR3
46             CI2 = DI2+DI3
47             CH(I-1,1,K) = CC(I-1,K,1)+CR2
48             CH(I,1,K) = CC(I,K,1)+CI2
49             TR2 = CC(I-1,K,1)+TAUR*CR2
50             TI2 = CC(I,K,1)+TAUR*CI2
51             TR3 = TAUI*(DI2-DI3)
52             TI3 = TAUI*(DR3-DR2)
53             CH(I-1,3,K) = TR2+TR3
54             CH(IC-1,2,K) = TR2-TR3
55             CH(I,3,K) = TI2+TI3
56             CH(IC,2,K) = TI3-TI2
57   102    CONTINUE
58   103 CONTINUE
59       RETURN
60   104 DO 106 I=3,IDO,2
61          IC = IDP2-I
62 CDIR$ IVDEP
63          DO 105 K=1,L1
64             DR2 = WA1(I-2)*CC(I-1,K,2)+WA1(I-1)*CC(I,K,2)
65             DI2 = WA1(I-2)*CC(I,K,2)-WA1(I-1)*CC(I-1,K,2)
66             DR3 = WA2(I-2)*CC(I-1,K,3)+WA2(I-1)*CC(I,K,3)
67             DI3 = WA2(I-2)*CC(I,K,3)-WA2(I-1)*CC(I-1,K,3)
68             CR2 = DR2+DR3
69             CI2 = DI2+DI3
70             CH(I-1,1,K) = CC(I-1,K,1)+CR2
71             CH(I,1,K) = CC(I,K,1)+CI2
72             TR2 = CC(I-1,K,1)+TAUR*CR2
73             TI2 = CC(I,K,1)+TAUR*CI2
74             TR3 = TAUI*(DI2-DI3)
75             TI3 = TAUI*(DR3-DR2)
76             CH(I-1,3,K) = TR2+TR3
77             CH(IC-1,2,K) = TR2-TR3
78             CH(I,3,K) = TI2+TI3
79             CH(IC,2,K) = TI3-TI2
80   105    CONTINUE
81   106 CONTINUE
82       RETURN
83       END