]>
Commit | Line | Data |
---|---|---|
fe4da5cc | 1 | * |
2 | * $Id$ | |
3 | * | |
4 | * $Log$ | |
5 | * Revision 1.1.1.1 1996/04/01 15:02:19 mclareni | |
6 | * Mathlib gen | |
7 | * | |
8 | * | |
9 | #include "gen/pilot.h" | |
10 | SUBROUTINE MFT(M1,MD1,VIN,VOU,U,IAS) | |
11 | DIMENSION VIN(M1),VOU(M1),U(MD1) | |
12 | M=M1-1 | |
13 | MH=M/2 | |
14 | MHA=MH-1 | |
15 | XMH=MH | |
16 | MD=2*M | |
17 | AX=(1./LOG10(2.))+.01 | |
18 | XM=MD | |
19 | AM=AX*LOG10(XM) | |
20 | IM=INT(AM) | |
21 | DO 1 I=1,MD1 | |
22 | 1 U(I)=0. | |
23 | VOU(1)=VIN(1) | |
24 | IF(IAS.EQ.2) GO TO 100 | |
25 | DO 2 I=1,MH | |
26 | IN=2*I | |
27 | 2 U(IN)=VIN(IN) | |
28 | CALL RFT(IM,U,1,U,1,3) | |
29 | DO 3 I=1,MH | |
30 | IN=2*I | |
31 | 3 VOU(IN)=U(IN) | |
32 | DO 4 I=1,MD1 | |
33 | 4 U(I)=0. | |
34 | DO 5 I=1,MHA | |
35 | IN=2*I+1 | |
36 | 5 U(IN)=VIN(IN) | |
37 | U(M1)=.5*VIN(M1) | |
38 | CALL RFT(IM,U,1,U,1,3) | |
39 | DO 6 I=1,MH | |
40 | IN=2*I | |
41 | 6 VOU(IN+1)=U(IN) | |
42 | DO 16 I=1,MH | |
43 | IN=2*I | |
44 | VIN(IN)=VOU(IN) | |
45 | VOU(IN)=VOU(IN)+VOU(IN+1) | |
46 | 16 VOU(IN+1)=VIN(IN)-VOU(IN+1) | |
47 | RETURN | |
48 | 100 DO 17 I=1,MH | |
49 | IN=2*I | |
50 | VOU(IN)=VIN(IN) | |
51 | VIN(IN)=2.*(VIN(IN)+VIN(IN+1)) | |
52 | 17 VIN(IN+1)=2.*(VOU(IN)-VIN(IN+1)) | |
53 | DO 7 I=1,MH | |
54 | IN=2*I | |
55 | 7 U(IN)=VIN(IN) | |
56 | CALL RFT(IM,U,1,U,1,6) | |
57 | DO 8 I=1,MH | |
58 | IN=2*I | |
59 | 8 VOU(IN)=U(IN) | |
60 | DO 9 I=1,MD1 | |
61 | 9 U(I)=0. | |
62 | DO 10 I=1,MH | |
63 | IN=2*I+1 | |
64 | 10 U(IN-1)=VIN(IN) | |
65 | CALL RFT(IM,U,1,U,1,6) | |
66 | DO 11 I=1,MH | |
67 | IN=2*I+1 | |
68 | 11 VOU(IN)=U(IN) | |
69 | RETURN | |
70 | END |