Commit | Line | Data |
---|---|---|
81e70d48 PH |
1 | C FFTR.FT FFT-V4A 4/22/76\r |
2 | \r | |
3 | SUBROUTINE FFTR (A,N,DIR,SGNEX)\r | |
4 | \r | |
5 | C-------ZUSATZPROGRAMM ZUR FFT FUER 2**N REELLE DATEN\r | |
6 | C A = IN- UND OUTPUTARRAY, LAENGE N+1, KOMPLEX (A,B)\r | |
7 | C A(1),...,A(N) ENTHALTEN DIE 2*N REELLEN DATEN\r | |
8 | C VORWAERTS CALL FFT\r | |
9 | C CALL REALTR MIT SGNEXP=+1.\r | |
10 | C RUECKWAERTS CALL REALTR\r | |
11 | C CALL FFT MIT SGNEXP=-1.\r | |
12 | C-------(DAZU IN EINER RICHTUNG MIT 1/N NORMIEREN)\r | |
13 | \r | |
14 | DIMENSION A(1)\r | |
15 | NH=N+1\r | |
16 | NK=2*NH\r | |
17 | SD=3.14159265/FLOAT(N)\r | |
18 | CD=2.*SIN(.5*SD)**2\r | |
19 | SD=SIN(SD)*SGNEX\r | |
20 | SN=0.\r | |
21 | CN=DIR\r | |
22 | IF (DIR.LT.0.) GOTO 10\r | |
23 | A(NK-1)=A(1)\r | |
24 | A(NK)=A(2)\r | |
25 | 10 DO 20 J=1,NH,2\r | |
26 | K=NK-J\r | |
27 | J1=J+1\r | |
28 | K1=K+1\r | |
29 | AA=A(J)+A(K)\r | |
30 | AB=A(J)-A(K)\r | |
31 | BA=A(J1)+A(K1)\r | |
32 | BB=A(J1)-A(K1)\r | |
33 | RE=CN*BA+SN*AB\r | |
34 | CIM=SN*BA-CN*AB\r | |
35 | A(J)=(AA+RE)*.5\r | |
36 | A(K)=(AA-RE)*.5\r | |
37 | A(J1)=(CIM+BB)*.5\r | |
38 | A(K1)=(CIM-BB)*.5\r | |
39 | AA=CN-(CD*CN+SD*SN)\r | |
40 | SN=(SD*CN-CD*SN)+SN\r | |
41 | C THE FOLLOWING THREE STATMENTS COMPENSATE FOR TRUNCATION\r | |
42 | C ERROR. IF ROUNDED ARITHMETIC IS USED, SUBSTITUTE\r | |
43 | C 20 CN=AA\r | |
44 | CN=.5-.5*(AA*AA+SN*SN)\r | |
45 | SN=CN*SN+SN\r | |
46 | 20 CN=CN*AA+AA\r | |
47 | RETURN\r | |
48 | END\r | |
49 | \f\1a\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 |