cfftc - pute the Fast Fourier transform (forward or inverse) of a complex sequence.
SUBROUTINE CFFTC(IOPT, N, SCALE, X, Y, TRIGS, IFAC, WORK, LWORK, IERR) INTEGER IOPT, N, IFAC(*), LWORK, IERR COMPLEX X(*), Y(*) REAL SCALE, TRIGS(*), WORK(*) SUBROUTINE CFFTC_64(IOPT, N, SCALE, X, Y, TRIGS, IFAC, WORK, LWORK, IERR) INTEGER*8 IOPT, N, IFAC(*), LWORK, IERR REAL SCALE, TRIGS(*), WORK(*) COMPLEX X(*), Y(*) F95 INTERFACE SUBROUTINE FFT(IOPT, N, SCALE, X, Y, TRIGS, IFAC, WORK, LWORK, IERR) INTEGER*4, INTENT(IN) :: IOPT INTEGER*4, INTENT(IN), OPTIONAL :: N, LWORK REAL, INTENT(IN), OPTIONAL :: SCALE COMPLEX, INTENT(IN), DIMENSION(:) :: X COMPLEX, INTENT(OUT), DIMENSION(:) :: Y REAL, INTENT(INOUT), DIMENSION(:) :: TRIGS INTEGER*4, INTENT(INOUT), DIMENSION(:) :: IFAC REAL, INTENT(OUT), DIMENSION(:) :: WORK INTEGER*4, INTENT(OUT) :: IERR SUBROUTINE FFT_64(IOPT, N, SCALE, X, Y, TRIGS, IFAC, WORK, LWORK, IERR) INTEGER(8), INTENT(IN) :: IOPT INTEGER(8), INTENT(IN), OPTIONAL :: N, LWORK REAL, INTENT(IN), OPTIONAL :: SCALE COMPLEX, INTENT(IN), DIMENSION(:) :: X COMPLEX, INTENT(OUT), DIMENSION(:) :: Y REAL, INTENT(INOUT), DIMENSION(:) :: TRIGS INTEGER(8), INTENT(INOUT), DIMENSION(:) :: IFAC REAL, INTENT(OUT), DIMENSION(:) :: WORK INTEGER(8), INTENT(OUT) :: IERR C INTERFACE #include <sunperf.h> void cfftc_ (int *iopt, int *n, float *scale, complex *x, complex *y, float *trigs, int *ifac, float *work, int *lwork, int *ierr); void cfftc_64_ (long *iopt, long *n, float *scale, complex *x, complex *y, float *trigs, long *ifac, float *work, long *lwork, long *ierr);
Oracle Solaris Studio Performance Library cfftc(3P) NAME cfftc - initialize the trigonometric weight and factor tables or com- pute the Fast Fourier transform (forward or inverse) of a complex sequence. SYNOPSIS SUBROUTINE CFFTC(IOPT, N, SCALE, X, Y, TRIGS, IFAC, WORK, LWORK, IERR) INTEGER IOPT, N, IFAC(*), LWORK, IERR COMPLEX X(*), Y(*) REAL SCALE, TRIGS(*), WORK(*) SUBROUTINE CFFTC_64(IOPT, N, SCALE, X, Y, TRIGS, IFAC, WORK, LWORK, IERR) INTEGER*8 IOPT, N, IFAC(*), LWORK, IERR REAL SCALE, TRIGS(*), WORK(*) COMPLEX X(*), Y(*) F95 INTERFACE SUBROUTINE FFT(IOPT, N, SCALE, X, Y, TRIGS, IFAC, WORK, LWORK, IERR) INTEGER*4, INTENT(IN) :: IOPT INTEGER*4, INTENT(IN), OPTIONAL :: N, LWORK REAL, INTENT(IN), OPTIONAL :: SCALE COMPLEX, INTENT(IN), DIMENSION(:) :: X COMPLEX, INTENT(OUT), DIMENSION(:) :: Y REAL, INTENT(INOUT), DIMENSION(:) :: TRIGS INTEGER*4, INTENT(INOUT), DIMENSION(:) :: IFAC REAL, INTENT(OUT), DIMENSION(:) :: WORK INTEGER*4, INTENT(OUT) :: IERR SUBROUTINE FFT_64(IOPT, N, SCALE, X, Y, TRIGS, IFAC, WORK, LWORK, IERR) INTEGER(8), INTENT(IN) :: IOPT INTEGER(8), INTENT(IN), OPTIONAL :: N, LWORK REAL, INTENT(IN), OPTIONAL :: SCALE COMPLEX, INTENT(IN), DIMENSION(:) :: X COMPLEX, INTENT(OUT), DIMENSION(:) :: Y REAL, INTENT(INOUT), DIMENSION(:) :: TRIGS INTEGER(8), INTENT(INOUT), DIMENSION(:) :: IFAC REAL, INTENT(OUT), DIMENSION(:) :: WORK INTEGER(8), INTENT(OUT) :: IERR C INTERFACE #include <sunperf.h> void cfftc_ (int *iopt, int *n, float *scale, complex *x, complex *y, float *trigs, int *ifac, float *work, int *lwork, int *ierr); void cfftc_64_ (long *iopt, long *n, float *scale, complex *x, complex *y, float *trigs, long *ifac, float *work, long *lwork, long *ierr); PURPOSE cfftc initializes the trigonometric weight and factor tables or com- putes the Fast Fourier transform (forward or inverse) of a complex sequence as follows: N-1 Y(k) = scale * SUM W*X(j) j=0 where k ranges from 0 to N-1 i = sqrt(-1) isign = 1 for inverse transform or -1 for forward transform W = exp(isign*i*j*k*2*pi/N) ARGUMENTS IOPT (input) Integer specifying the operation to be performed: IOPT = 0 computes the trigonometric weight table and factor table IOPT = -1 computes forward FFT IOPT = +1 computes inverse FFT N (input) Integer specifying length of the input sequence X. N is most efficient when it is a product of small primes. N >= 0. Unchanged on exit. SCALE (input) Real scalar by which transform results are scaled. Unchanged on exit. X (input) On entry, X is a complex array of dimension at least N that contains the sequence to be transformed. Y (output) Complex array of dimension at least N that contains the transform results. X and Y may be the same array starting at the same memory location. Otherwise, it is assumed that there is no overlap between X and Y in memory. TRIGS (input/output) Real array of length 2*N that contains the trigonometric weights. The weights are computed when the routine is called with IOPT = 0 and they are used in subsequent calls when IOPT = 1 or IOPT = -1. Unchanged on exit. IFAC (input/output) Integer array of dimension at least 128 that contains the factors of N. The factors are computed when the routine is called with IOPT = 0 and they are used in subsequent calls where IOPT = 1 or IOPT = -1. Unchanged on exit. WORK (workspace) Real array of dimension at least 2*N. The user can also choose to have the routine allocate its own workspace (see LWORK). LWORK (input) Integer specifying workspace size. If LWORK = 0, the routine will allocate its own workspace. IERR (output) On exit, integer IERR has one of the following values: 0 = normal return -1 = IOPT is not 0, 1 or -1 -2 = N < 0 -3 = (LWORK is not 0) and (LWORK is less than 2*N) -4 = memory allocation for workspace failed SEE ALSO fft 7 Nov 2015 cfftc(3P)