/*************************************************************************\ * Copyright (c) 2002 The University of Chicago, as Operator of Argonne * National Laboratory. * Copyright (c) 2002 The Regents of the University of California, as * Operator of Los Alamos National Laboratory. * This file is distributed subject to a Software License Agreement found * in the file LICENSE that is included with this distribution. \*************************************************************************/ /* cfftb1.f -- translated by f2c (version of 30 January 1990 16:02:04). You must link the resulting object file with the libraries: -lF77 -lI77 -lm -lc (in that order) $Log: cfftb1.c,v $ Revision 1.3 2002/08/14 16:41:17 soliday Added Open License Revision 1.2 1995/09/05 21:12:33 saunders First test release of the SDDS1.5 package. */ #include "f2c.h" /* Subroutine */ int cfftb1_(integer *n, doublereal *c, doublereal *ch, doublereal *wa, integer *ifac) { /* System generated locals */ integer i_1; /* Local variables */ static integer idot, i; extern /* Subroutine */ int passb_(integer *, integer *, integer *, integer *, integer *, doublereal *, doublereal *, doublereal *, doublereal *, doublereal *, doublereal *); static integer k1, l1, l2, n2; extern /* Subroutine */ int passb2_(integer *, integer *, doublereal *, doublereal *, doublereal *), passb3_(integer *, integer *, doublereal *, doublereal *, doublereal *, doublereal *), passb4_( integer *, integer *, doublereal *, doublereal *, doublereal *, doublereal *, doublereal *), passb5_(integer *, integer *, doublereal *, doublereal *, doublereal *, doublereal *, doublereal *, doublereal *); static integer na, nf, ip, iw, ix2, ix3, ix4, nac, ido, idl1; /* Parameter adjustments */ --c; --ch; --wa; --ifac; /* Function Body */ nf = ifac[2]; na = 0; l1 = 1; iw = 1; i_1 = nf; for (k1 = 1; k1 <= i_1; ++k1) { ip = ifac[k1 + 2]; l2 = ip * l1; ido = *n / l2; idot = ido + ido; idl1 = idot * l1; if (ip != 4) { goto L103; } ix2 = iw + idot; ix3 = ix2 + idot; if (na != 0) { goto L101; } passb4_(&idot, &l1, &c[1], &ch[1], &wa[iw], &wa[ix2], &wa[ix3]); goto L102; L101: passb4_(&idot, &l1, &ch[1], &c[1], &wa[iw], &wa[ix2], &wa[ix3]); L102: na = 1 - na; goto L115; L103: if (ip != 2) { goto L106; } if (na != 0) { goto L104; } passb2_(&idot, &l1, &c[1], &ch[1], &wa[iw]); goto L105; L104: passb2_(&idot, &l1, &ch[1], &c[1], &wa[iw]); L105: na = 1 - na; goto L115; L106: if (ip != 3) { goto L109; } ix2 = iw + idot; if (na != 0) { goto L107; } passb3_(&idot, &l1, &c[1], &ch[1], &wa[iw], &wa[ix2]); goto L108; L107: passb3_(&idot, &l1, &ch[1], &c[1], &wa[iw], &wa[ix2]); L108: na = 1 - na; goto L115; L109: if (ip != 5) { goto L112; } ix2 = iw + idot; ix3 = ix2 + idot; ix4 = ix3 + idot; if (na != 0) { goto L110; } passb5_(&idot, &l1, &c[1], &ch[1], &wa[iw], &wa[ix2], &wa[ix3], &wa[ ix4]); goto L111; L110: passb5_(&idot, &l1, &ch[1], &c[1], &wa[iw], &wa[ix2], &wa[ix3], &wa[ ix4]); L111: na = 1 - na; goto L115; L112: if (na != 0) { goto L113; } passb_(&nac, &idot, &ip, &l1, &idl1, &c[1], &c[1], &c[1], &ch[1], &ch[ 1], &wa[iw]); goto L114; L113: passb_(&nac, &idot, &ip, &l1, &idl1, &ch[1], &ch[1], &ch[1], &c[1], & c[1], &wa[iw]); L114: if (nac != 0) { na = 1 - na; } L115: l1 = l2; iw += (ip - 1) * idot; /* L116: */ } if (na == 0) { return 0; } n2 = *n + *n; i_1 = n2; for (i = 1; i <= i_1; ++i) { c[i] = ch[i]; /* L117: */ } return 0; } /* cfftb1_ */