void cfftf(float a[], int offa, int isign) {
        int idot;
        int l1, l2;
        int na, nf, ip, iw, ido, idl1;
        int[] nac = new int[1];
        final int twon = 2 * n;

        int iw1, iw2;
        float[] ch = new float[twon];

        iw1 = twon;
        iw2 = 4 * n;
        nac[0] = 0;
        nf = (int) wtable[1 + iw2];
        na = 0;
        l1 = 1;
        iw = iw1;
        for (int k1 = 2; k1 <= nf + 1; k1++) {
            ip = (int) wtable[k1 + iw2];
            l2 = ip * l1;
            ido = n / l2;
            idot = ido + ido;
            idl1 = idot * l1;
            switch (ip) {
            case 4:
                if (na == 0) {
                    passf4(idot, l1, a, offa, ch, 0, iw, isign);
                } else {
                    passf4(idot, l1, ch, 0, a, offa, iw, isign);
                }
                na = 1 - na;
                break;
            case 2:
                if (na == 0) {
                    passf2(idot, l1, a, offa, ch, 0, iw, isign);
                } else {
                    passf2(idot, l1, ch, 0, a, offa, iw, isign);
                }
                na = 1 - na;
                break;
            case 3:
                if (na == 0) {
                    passf3(idot, l1, a, offa, ch, 0, iw, isign);
                } else {
                    passf3(idot, l1, ch, 0, a, offa, iw, isign);
                }
                na = 1 - na;
                break;
            case 5:
                if (na == 0) {
                    passf5(idot, l1, a, offa, ch, 0, iw, isign);
                } else {
                    passf5(idot, l1, ch, 0, a, offa, iw, isign);
                }
                na = 1 - na;
                break;
            default:
                if (na == 0) {
                    passfg(nac, idot, ip, l1, idl1, a, offa, ch, 0, iw, isign);
                } else {
                    passfg(nac, idot, ip, l1, idl1, ch, 0, a, offa, iw, isign);
                }
                if (nac[0] != 0)
                    na = 1 - na;
                break;
            }
            l1 = l2;
            iw += (ip - 1) * idot;
        }
        if (na == 0)
            return;
        System.arraycopy(ch, 0, a, offa, twon);

    }