Go to main content
Oracle Developer Studio 12.5 Man Pages

Exit Print View

Updated: June 2017
 
 

zfftd (3p)

Name

zfftd - pute the inverse Fast Fourier Transform of a double complex sequence.

Synopsis

SUBROUTINE ZFFTD(IOPT, N, SCALE, X, Y, TRIGS, IFAC, WORK, LWORK, IERR)

INTEGER IOPT, N, IFAC(*), LWORK, IERR
DOUBLE COMPLEX X(*)
DOUBLE PRECISION SCALE, Y(*), TRIGS(*), WORK(*)

SUBROUTINE ZFFTD_64(IOPT, N, SCALE, X, Y, TRIGS, IFAC, WORK, LWORK, IERR)

INTEGER*8 IOPT, N, IFAC(*), LWORK, IERR
DOUBLE PRECISION SCALE, Y(*), TRIGS(*), WORK(*)
DOUBLE COMPLEX X(*)




F95 INTERFACE
SUBROUTINE FFT(IOPT, N, SCALE, X, Y, TRIGS, IFAC, WORK, LWORK, IERR)

INTEGER, INTENT(IN) :: IOPT, N
INTEGER, INTENT(IN), OPTIONAL :: LWORK
REAL(8), INTENT(IN), OPTIONAL :: SCALE
COMPLEX(8), INTENT(IN), DIMENSION(:) :: X
REAL(8), INTENT(OUT), DIMENSION(:) :: Y
REAL(8), INTENT(INOUT), DIMENSION(:) :: TRIGS
INTEGER, INTENT(INOUT), DIMENSION(:) :: IFAC
REAL(8), INTENT(OUT), DIMENSION(:) :: WORK
INTEGER, INTENT(OUT) :: IERR

SUBROUTINE FFT_64(IOPT, N, SCALE, X, Y, TRIGS, IFAC, WORK, LWORK, IERR)

INTEGER(8), INTENT(IN) :: IOPT, N
INTEGER(8), INTENT(IN), OPTIONAL :: LWORK
REAL(8), INTENT(IN), OPTIONAL :: SCALE
COMPLEX(8), INTENT(IN), DIMENSION(:) :: X
REAL(8), INTENT(OUT), DIMENSION(:) :: Y
REAL(8), INTENT(INOUT), DIMENSION(:) :: TRIGS
INTEGER(8), INTENT(INOUT), DIMENSION(:) :: IFAC
REAL(8), INTENT(OUT), DIMENSION(:) :: WORK
INTEGER(8), INTENT(OUT) :: IERR




C INTERFACE
#include <sunperf.h>

void zfftd_ (int *iopt, int *n, double *scale, doublecomplex *x, double
*y,  double  *trigs, int *ifac, double *work, int *lwork, int
*ierr);

void zfftd_64_ (long *iopt, long *n, double *scale,  doublecomplex  *x,
double  *y,  double  *trigs,  long  *ifac, double *work, long
*lwork, long *ierr);

Description

Oracle Solaris Studio Performance Library                            zfftd(3P)



NAME
       zfftd  -  initialize the trigonometric weight and factor tables or com-
       pute the inverse Fast Fourier Transform of a double complex sequence.

SYNOPSIS
       SUBROUTINE ZFFTD(IOPT, N, SCALE, X, Y, TRIGS, IFAC, WORK, LWORK, IERR)

       INTEGER IOPT, N, IFAC(*), LWORK, IERR
       DOUBLE COMPLEX X(*)
       DOUBLE PRECISION SCALE, Y(*), TRIGS(*), WORK(*)

       SUBROUTINE ZFFTD_64(IOPT, N, SCALE, X, Y, TRIGS, IFAC, WORK, LWORK, IERR)

       INTEGER*8 IOPT, N, IFAC(*), LWORK, IERR
       DOUBLE PRECISION SCALE, Y(*), TRIGS(*), WORK(*)
       DOUBLE COMPLEX X(*)




   F95 INTERFACE
       SUBROUTINE FFT(IOPT, N, SCALE, X, Y, TRIGS, IFAC, WORK, LWORK, IERR)

       INTEGER, INTENT(IN) :: IOPT, N
       INTEGER, INTENT(IN), OPTIONAL :: LWORK
       REAL(8), INTENT(IN), OPTIONAL :: SCALE
       COMPLEX(8), INTENT(IN), DIMENSION(:) :: X
       REAL(8), INTENT(OUT), DIMENSION(:) :: Y
       REAL(8), INTENT(INOUT), DIMENSION(:) :: TRIGS
       INTEGER, INTENT(INOUT), DIMENSION(:) :: IFAC
       REAL(8), INTENT(OUT), DIMENSION(:) :: WORK
       INTEGER, INTENT(OUT) :: IERR

       SUBROUTINE FFT_64(IOPT, N, SCALE, X, Y, TRIGS, IFAC, WORK, LWORK, IERR)

       INTEGER(8), INTENT(IN) :: IOPT, N
       INTEGER(8), INTENT(IN), OPTIONAL :: LWORK
       REAL(8), INTENT(IN), OPTIONAL :: SCALE
       COMPLEX(8), INTENT(IN), DIMENSION(:) :: X
       REAL(8), INTENT(OUT), DIMENSION(:) :: Y
       REAL(8), INTENT(INOUT), DIMENSION(:) :: TRIGS
       INTEGER(8), INTENT(INOUT), DIMENSION(:) :: IFAC
       REAL(8), INTENT(OUT), DIMENSION(:) :: WORK
       INTEGER(8), INTENT(OUT) :: IERR




   C INTERFACE
       #include <sunperf.h>

       void zfftd_ (int *iopt, int *n, double *scale, doublecomplex *x, double
                 *y,  double  *trigs, int *ifac, double *work, int *lwork, int
                 *ierr);

       void zfftd_64_ (long *iopt, long *n, double *scale,  doublecomplex  *x,
                 double  *y,  double  *trigs,  long  *ifac, double *work, long
                 *lwork, long *ierr);



PURPOSE
       zfftd initializes the trigonometric weight and factor  tables  or  com-
       putes  the  inverse Fast Fourier Transform of a double 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)
       In complex-to-real transform of length N,  the  (N/2+1)  complex  input
       data  points  stored are the positive-frequency half of the spectrum of
       the Discrete Fourier Transform.  The other half can be obtained through
       complex  conjugation  and therefore is not stored.  Furthermore, due to
       symmetries the imaginary of the component of X(0) and X(N/2) (if  N  is
       even in the latter) is assumed to be zero and is not referenced.


ARGUMENTS
       IOPT (input)
                 Integer specifying the operation to be performed:
                 IOPT  =  0 computes the trigonometric weight table and factor
                 table
                 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)
                 Double  precision  scalar  by  which  transform  results  are
                 scaled.  Unchanged on exit.


       X (input) On  entry,  X  is  a double complex array whose first (N/2+1)
                 elements are the input sequence to be transformed.


       Y (output)
                 Double precision array of dimension at least N that  contains
                 the  transform results.  X and Y may be the same array start-
                 ing at the same memory location.  Otherwise,  it  is  assumed
                 that there is no overlap between X and Y in memory.


       TRIGS (input/output)
                 Double  precision  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 subse-
                 quent calls when 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.  Unchanged on exit.


       WORK (workspace)
                 Double precision array of dimension at least 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 or 1
                 -2 = N < 0
                 -3 = (LWORK is not 0) and (LWORK is less than N)
                 -4 = memory allocation for workspace failed

SEE ALSO
       fft



                                  7 Nov 2015                         zfftd(3P)