vcfftf


NAME

vcfftf - compute the Fourier coefficients of a periodic sequence. The VCFFT operations are normalized, so a call of VCFFTF followed by a call of VCFFTB will return the original sequence.


SYNOPSIS

  SUBROUTINE VCFFTF( M, N, X, XT, MDIMX, ROWCOL, WSAVE)
  CHARACTER * 1 ROWCOL
  COMPLEX X(MDIMX,*), XT(MDIMX,*), WSAVE(*)
  INTEGER M, N, MDIMX
 
  SUBROUTINE VCFFTF_64( M, N, X, XT, MDIMX, ROWCOL, WSAVE)
  CHARACTER * 1 ROWCOL
  COMPLEX X(MDIMX,*), XT(MDIMX,*), WSAVE(*)
  INTEGER*8 M, N, MDIMX
 

F95 INTERFACE

  SUBROUTINE FFTF( [M], [N], X, XT, [MDIMX], ROWCOL, WSAVE)
  CHARACTER(LEN=1) :: ROWCOL
  COMPLEX, DIMENSION(:) :: WSAVE
  COMPLEX, DIMENSION(:,:) :: X, XT
  INTEGER :: M, N, MDIMX
 
  SUBROUTINE FFTF_64( [M], [N], X, XT, [MDIMX], ROWCOL, WSAVE)
  CHARACTER(LEN=1) :: ROWCOL
  COMPLEX, DIMENSION(:) :: WSAVE
  COMPLEX, DIMENSION(:,:) :: X, XT
  INTEGER(8) :: M, N, MDIMX
 

C INTERFACE

#include <sunperf.h>

void vcfftf(int m, int n, complex *x, complex *xt, int mdimx, char rowcol, complex *wsave);

void vcfftf_64(long m, long n, complex *x, complex *xt, long mdimx, char rowcol, complex *wsave);


ARGUMENTS

* M (input)
If ROWCOL = 'R' or 'r', M is the number of sequences to be transformed. Otherwise, M is the length of the sequences to be transformed. M >= 0.

* N (input)
If ROWCOL = 'R' or 'r', N is the length of the sequences to be transformed. Otherwise, N is the number of sequences to be transformed. N >= 0.

* X (input)
On entry, if ROWCOL = 'R' or 'r' X(MDIMX,N) is an array whose first M rows contain the sequences to be transformed. Otherwise, X(MDIMX,N) contains data sequences of length M stored in N columns of X.

* XT (input)
A work array. The size of this workspace depends on the number of threads that are used to execute this routine. There are various functions that can be used to determine the number of threads available (get_env, available_threads, etc). The appropriate amount, which is (number of threads * length of data sequences), can then be dynamically allocated for XT from the driver routine. If XT can only be allocated statically, then the size of XT should be (length of data sequences * number of sequences).

* MDIMX (input)
Leading dimension of the arrays X. MDIMX >= M.

* ROWCOL (input)
Indicates whether data sequences in X are stored row-wise ('R' or 'r') or column-wise ('C' or 'c').

* WSAVE (input/output)
On entry, an array of dimension (L2+15) or greater, where L2 = 2*M if ROWCOL = ('R' or 'r'). Otherwise, L2 = 2*N. WSAVE is initialized by VCFFTI.