      SUBROUTINE CFFTI1(N,WA,IFAC)
      DOUBLE PRECISION WA
      DOUBLE PRECISION TPI
      DOUBLE PRECISION DPIMACH
      DOUBLE PRECISION DUM
      DOUBLE PRECISION ARGH
      DOUBLE PRECISION FI
      DOUBLE PRECISION ARGLD
      DOUBLE PRECISION ARG
      DIMENSION WA(*),IFAC(*),NTRYH(4)
      DATA NTRYH(1),NTRYH(2),NTRYH(3),NTRYH(4)/3,4,2,5/

      NL = N
      NF = 0
      J = 0
  101 J = J + 1
      IF (J-4) 102,102,103
  102 NTRY = NTRYH(J)
      GO TO 104
  103 NTRY = NTRY + 2
  104 NQ = NL/NTRY
      NR = NL - NTRY*NQ
      IF (NR) 101,105,101
  105 NF = NF + 1
      IFAC(NF+2) = NTRY
      NL = NQ
      IF (NTRY.NE.2) GO TO 107
      IF (NF.EQ.1) GO TO 107
      DO 106 I = 2,NF
          IB = NF - I + 2
          IFAC(IB+2) = IFAC(IB+1)
  106 CONTINUE
      IFAC(3) = 2
  107 IF (NL.NE.1) GO TO 104
      IFAC(1) = N
      IFAC(2) = NF
      TPI = 2.D0*DPIMACH(DUM)
      ARGH = TPI/DBLE(N)
      I = 2
      L1 = 1
      DO 110 K1 = 1,NF
          IP = IFAC(K1+2)
          LD = 0
          L2 = L1*IP
          IDO = N/L2
          IDOT = IDO + IDO + 2
          IPM = IP - 1
          DO 109 J = 1,IPM
              I1 = I
              WA(I-1) = 1.D0
              WA(I) = 0.D0
              LD = LD + L1
              FI = 0.D0
              ARGLD = DBLE(LD)*ARGH
              DO 108 II = 4,IDOT,2
                  I = I + 2
                  FI = FI + 1.D0
                  ARG = FI*ARGLD
                  WA(I-1) = COS(ARG)
                  WA(I) = SIN(ARG)
  108         CONTINUE
              IF (IP.LE.5) GO TO 109
              WA(I1-1) = WA(I-1)
              WA(I1) = WA(I)
  109     CONTINUE
          L1 = L2
  110 CONTINUE
      RETURN
      END
