LMDZ
set99.F
Go to the documentation of this file.
1  SUBROUTINE set99(TRIGS,IFAX,N)
2  REAL TRIGS(n)
3  INTEGER IFAX(*),JFAX(10),NLFAX(7)
4 C
5 C SUBROUTINE 'SET99' - COMPUTES FACTORS OF N & TRIGONOMETRIC
6 C FUNCTIONS REQUIRED BY FFT99 & FFT991
7 C
8  SAVE nlfax
9 C
10  DATA nlfax/6,8,5,4,3,2,1/
11 C
12  ixxx=1
13 C
14  del=4.0e0*asin(1.0e0)/float(n)
15  nil=0
16  nhl=(n/2)-1
17  DO 10 k=nil,nhl
18  angle=float(k)*del
19  trigs(2*k+1)=cos(angle)
20  trigs(2*k+2)=sin(angle)
21  10 CONTINUE
22 C
23 C FIND FACTORS OF N (8,6,5,4,3,2; ONLY ONE 8 ALLOWED)
24 C LOOK FOR SIXES FIRST, STORE FACTORS IN DESCENDING ORDER
25  nu=n
26  ifac=6
27  k=0
28  il=1
29  20 CONTINUE
30  IF (mod(nu,ifac).NE.0) GO TO 30
31  k=k+1
32  jfax(k)=ifac
33  IF (ifac.NE.8) GO TO 25
34  IF (k.EQ.1) GO TO 25
35  jfax(1)=8
36  jfax(k)=6
37  25 CONTINUE
38  nu=nu/ifac
39  IF (nu.EQ.1) GO TO 50
40  IF (ifac.NE.8) GO TO 20
41  30 CONTINUE
42  il=il+1
43  ifac=nlfax(il)
44  IF (ifac.GT.1) GO TO 20
45 C
46  WRITE(6,40) n
47  40 FORMAT(4h1n =,i4,27h - CONTAINS illegal factors)
48  RETURN
49 C
50 C NOW REVERSE ORDER OF FACTORS
51  50 CONTINUE
52  nfax=k
53  ifax(1)=nfax
54  DO 60 i=1,nfax
55  ifax(nfax+2-i)=jfax(i)
56  60 CONTINUE
57  ifax(10)=n
58  RETURN
59  END
subroutine set99(TRIGS, IFAX, N)
Definition: set99.F:2
subroutine angle(longi, lati, frac, muzero)
Definition: orbite.F90:49