*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->IRIX man pages -> complib/csfftm1du (3)              
Title
Content
Arch
Section
 

Contents


csfftm1du,zdfftm1du(3F)				       csfftm1du,zdfftm1du(3F)


NAME    [Toc]    [Back]

     csfftm1du,	zdfftm1du - Multiple 1D, Complex to Real, Inverse Fast Fourier
     Transforms.

SYNOPSYS    [Toc]    [Back]

     Fortran :
     subroutine	csfftm1du( sign, n, p, array, inc, lda,	coef )
	  integer	     sign, n, p, inc, lda
	  real		     array(lda,p), coef(n+15)

     subroutine	zdfftm1du( sign, n, p, array, inc, lda,	coef )
	  integer	     sign, n, p, inc, lda
	  real*8	     array(lda,p), coef(n+15)


     C :
     #include <fft.h>
     int csfftm1du ( int sign, int n, int p, float *array,
	       int inc,	int lda, float *coef);
     int zdfftm1du ( int sign, int n, int p, double *array,
	       int inc,	int lda, double	*coef);

DESCRIPTION    [Toc]    [Back]

     csfftm1du and zdfftm1du compute the P real	sequences of N samples each,
     from their	Fourier	transform. The i-th index f(i) of a sequence of	N
     samples, with Fourier transform F(k) is equal to:
	  f(i) = Sum ( W^(i*k) * F(k) ), for k =0, ...,	(N-1)
	       W = exp(	(Sign*2*sqrt(-1)*PI) / N )


     The Inverse Fourier transforms are	performed in-place, so the input
     Fourier transform is overwritten by the final sequence output. As the
     output sequences have real	values,	only the first half of the transform
     is	needed.	The (N-k)-th sample of the transform would be the conjugate of
     the k-th sample.

     However, some extra space is necessary. For an N sample output sequence,
     the input complex transform takes ((N+2)/2) complex values.  This
     represents	either N+1(odd case) or	N+2(even case) real values, that's one
     or	two more real values than the output real sequence.

PARAMETERS    [Toc]    [Back]

     SIGN Integer specifying which sign	to be used for the expression of W
     (see above) - must	be either +1 or	-1.  Unchanged on exit.

     N Integer,	the number of samples in each sequence.	 Unchanged on exit.

     P Integer,	the number of sequences.  Unchanged on exit.





									Page 1






csfftm1du,zdfftm1du(3F)				       csfftm1du,zdfftm1du(3F)



     ARRAY Array containing the	samples	of the sequence	to be transformed.
     On	input, the element "i" of the sequence "j" is stored as	A(i*inc,j) in
     Fortran , and A[i*inc+j*lda] in C.
     On	exit, the array	is overwritten by its transform.

     INC Integer, increment between two	consecutive elements of	a sequence.
     Unchanged on exit.

     LDA Integer, leading dimension: increment between the first samples of
     two consecutive sequences.	 Unchanged on exit.

     COEFF Array of at least ( N + 15 )	elements.  On entry it contains	the
     Sines/Cosines and factorization of	N. COEFF needs to be initialized with
     a call to scfftm1dui or dzfftm1dui.  Unchanged on exit.


Example	of Calling Sequence
     Working on	64 sequences of	1024 real values each.	We successively	apply
     a Direct Fourier Transform, an Inverse Fourier Trasnform and finally
     scale back	the result by a	factor 1/N (1/1024.)-
     This sequence DirectFFT-InverseFFT-Scaling	is equivalent to the identity
     operator and the final sequence should be equal (with round-off
     precision)	to the initial sequence.
     Elements of each sequence are stored with increment (stride) 1, and the
     offset between the	first element of two succesive sequence	(leading
     dimension)	is 1026	(1026 >= 1024+2).
     Fortran
	  real array(0:1026-1,0:64-1), coeff(1024+15)
	  call scfftm1dui( 1024, coeff)
	  call csfftm1du( -1, 1024, 64,	array, 1, 1026,	coeff)
	  call scfftm1du(  1, 1024, 64,	array, 1, 1026,	coeff)
	  call sscalm1d( 1024,64,(1./real(1024)),array,1,1026)

     C
	  #include <fft.h>
	  float	array[64*1026],	*coeff;
	  coeff	= scfftm1dui( 1024, NULL);
	  csfftm1du( -1, 1024, 64, array, 1, 1026, coeff);
	  scfftm1du(  1, 1024, 64, array, 1, 1026, coeff);
	  sscalm1d( 1024, 64, 1./(float)1024, array, 1,	1026);

     NOTE_1 : The Direct and Inverse transforms	should use opposite signs -
     Which one is used (+1 or -1) for Direct transform is just a matter	of
     convention
     NOTE_2 : The Fourier Transforms are not normalized	so the succession
     Direct-Inverse transform scales the input data by a factor	equal to the
     size of the transform.







									Page 2






csfftm1du,zdfftm1du(3F)				       csfftm1du,zdfftm1du(3F)



SEE ALSO
     fft, scfftm1dui, dzfftm1dui, scfftm1du, dzfftm1du,	sscalm1d, dscalm1d


									PPPPaaaaggggeeee 3333
[ Back ]
 Similar pages
Name OS Title
scfftm1du IRIX Multiple 1D, Real to Complex, Direct Fast Fourier Transforms.
csfft3du IRIX 3D, Complex to Real, Inverse Fast Fourier Transforms.
csfft2du IRIX 2D, Complex-to-Real, Inverse Fast Fourier Transforms.
csfft1du IRIX 1D, Complex to Real, Inverse Fast Fourier Transforms.
cfftm1d IRIX Multiple 1D, complex-to-complex, Fast Fourier Transforms.
fft2du IRIX 2D, Real to Complex, Direct Fast Fourier Transforms.
fft3du IRIX 3D, Real to Complex, Direct Fast Fourier Transforms.
fft1du IRIX 1D, Real to Complex, Direct Fast Fourier Transforms.
fft1d IRIX 1D, Real Complex-to-Complex, Fast Fourier Transforms.
sdfftm1du IRIX Multiple 1D, Real to Complex Fast Fourier Transform. FORTRAN SPECIFICATION subroutine DFFTM1DU( job, n, p, seq
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service