1C Copyright 1981-2016 ECMWF.
2C
3C This software is licensed under the terms of the Apache Licence
4C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
5C
6C In applying this licence, ECMWF does not waive the privileges and immunities
7C granted to it by virtue of its status as an intergovernmental organisation
8C nor does it submit to any jurisdiction.
9C
10
11      SUBROUTINE SET99(TRIGS,IFAX,N)
12      DIMENSION TRIGS(N),IFAX(10),JFAX(10),LFAX(7)
13C---->
14C
15C     SUBROUTINE 'SET99' - COMPUTES FACTORS OF N & TRIGONOMETRIC
16C     FUNCTIONS REQUIRED BY FFT99 & FFT991
17C
18C----<
19#include "jparams.h"
20C
21      DATA LFAX/6,8,5,4,3,2,1/
22      IXXX=1
23C
24      DEL= (2.0*PPI)/FLOAT(N)
25      NIL=0
26      NHL=(N/2)-1
27      DO 10 K=NIL,NHL
28      ANGLE=FLOAT(K)*DEL
29      TRIGS(2*K+1)=COS(ANGLE)
30      TRIGS(2*K+2)=SIN(ANGLE)
31   10 CONTINUE
32C
33C     FIND FACTORS OF N (8,6,5,4,3,2; ONLY ONE 8 ALLOWED)
34C     LOOK FOR SIXES FIRST, STORE FACTORS IN DESCENDING ORDER
35      NU=N
36      IFAC=6
37      K=0
38      L=1
39   20 CONTINUE
40      IF (MOD(NU,IFAC).NE.0) GO TO 30
41      K=K+1
42      JFAX(K)=IFAC
43      IF (IFAC.NE.8) GO TO 25
44      IF (K.EQ.1) GO TO 25
45      JFAX(1)=8
46      JFAX(K)=6
47   25 CONTINUE
48      NU=NU/IFAC
49      IF (NU.EQ.1) GO TO 50
50      IF (IFAC.NE.8) GO TO 20
51   30 CONTINUE
52      L=L+1
53      IFAC=LFAX(L)
54      IF (IFAC.GT.1) GO TO 20
55C
56      WRITE(6,40) N
57   40 FORMAT(4H1N =,I4,27H - CONTAINS ILLEGAL FACTORS)
58      RETURN
59C
60C     NOW REVERSE ORDER OF FACTORS
61   50 CONTINUE
62      NFAX=K
63      IFAX(1)=NFAX
64      DO 60 I=1,NFAX
65      IFAX(NFAX+2-I)=JFAX(I)
66   60 CONTINUE
67      IFAX(10)=N
68      RETURN
69      END
70