SUBROUTINE SET77(TRIGS,IFAX,N)
C
C     SUBROUTINE 'SET77' - COMPUTES FACTORS OF N & TRIGONOMETRIC
C     FUNCTINS REQUIRED BY FFT77 & FFT771
C
      IMPLICIT NONE

      INTEGER    MAXFAC
      PARAMETER( MAXFAC = 10 )

      INTEGER  N,IFAX(MAXFAC+1),JFAX(MAXFAC),LFAX(7)
      REAL     TRIGS(3*N/2), DEL,ANGLE
      INTEGER  NIL,NHL, I,K,L, NU,IFAC,NFAX

      DATA LFAX/6,8,5,4,3,2,1/

      DEL=4.0*ASIN(1.0)/FLOAT(N)
      NIL=0
C      NHL=(N/2)-1
      NHL=(3*N/2)-1
      DO 10 K=NIL,NHL
      ANGLE=FLOAT(K)*DEL
      TRIGS(2*K+1)=COS(ANGLE) 
      TRIGS(2*K+2)=SIN(ANGLE) 
   10 CONTINUE

*  FIX FOR SMALL N (4,6,8)

      IF (N.LE.8) THEN
      IFAX(1)=2
      IFAX(2)=2
      IFAX(3)=N/2
      RETURN
      ENDIF

C     FIND FACTORS OF N (8,6,5,4,3,2; ONLY ONE 8 ALLOWED)
C     LOOK FOR SIXES FIRST, STORE FACTORS IN DESCENDING ORDER

      NU=N
      IFAC=6
      K=0 
      L=1 
   20 CONTINUE
      IF (MOD(NU,IFAC).NE.0) GO TO 30
      K=K+1
      JFAX(K)=IFAC
      IF (IFAC.NE.8) GO TO 25 
      IF (K.EQ.1) GO TO 25
      JFAX(1)=8
      JFAX(K)=6
   25 CONTINUE
      NU=NU/IFAC
      IF (NU.EQ.1) GO TO 50
      IF (IFAC.NE.8) GO TO 20 
   30 CONTINUE
      L=L+1
      IFAC=LFAX(L)
      IF (IFAC.GT.1) GO TO 20 
      WRITE(6,40) N 
   40 FORMAT('1N =',I4,' - CONTAINS ILLEGAL FACTORS')
      RETURN

C     NOW REVERSE ORDER OF FACTORS

   50 CONTINUE
      NFAX=K
      IFAX(1)=NFAX
      print*,NFAX
      DO 60 I=1,NFAX
      IFAX(NFAX+2-I)=JFAX(I)
   60 CONTINUE
      RETURN
      END