A large commit.
[pdp8.git] / sw / rescue / lab8e_goettingen / disk2_11 / rkb / paroff / fftr.ft
CommitLineData
81e70d48
PH
1C FFTR.FT FFT-V4A 4/22/76\r
2\r
3 SUBROUTINE FFTR (A,N,DIR,SGNEX)\r
4\r
5C-------ZUSATZPROGRAMM ZUR FFT FUER 2**N REELLE DATEN\r
6C A = IN- UND OUTPUTARRAY, LAENGE N+1, KOMPLEX (A,B)\r
7C A(1),...,A(N) ENTHALTEN DIE 2*N REELLEN DATEN\r
8C VORWAERTS CALL FFT\r
9C CALL REALTR MIT SGNEXP=+1.\r
10C RUECKWAERTS CALL REALTR\r
11C CALL FFT MIT SGNEXP=-1.\r
12C-------(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
2510 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
41C THE FOLLOWING THREE STATMENTS COMPENSATE FOR TRUNCATION\r
42C ERROR. IF ROUNDED ARITHMETIC IS USED, SUBSTITUTE\r
43C 20 CN=AA\r
44 CN=.5-.5*(AA*AA+SN*SN)\r
45 SN=CN*SN+SN\r
4620 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