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

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

Contents


csfft3du,zdfft3du(3F)					 csfft3du,zdfft3du(3F)


NAME    [Toc]    [Back]

     csfft3du, zdfft3du	- 3D, Complex to Real, Inverse Fast Fourier
     Transforms.

SYNOPSYS    [Toc]    [Back]

     Fortran :
     subroutine	csfft3du(sign,n1,n2,n3,array,la1,la2,coef)
	  integer	     sign, n1, n2, n3, la1, la2
	  real	    array(la1,la2,n3)
	  real	  coef((n1+15)+2*(n2+15)+2*(n3+15))

     subroutine	zdfft3du(sign,n1,n2,n3,array,la1,la2,coef)
	  integer	     sign, n1, n2, n3, la1, la2
	  real*8  array(la1,la2,n3)
	  real*8  coef((n1+15)+2*(n2+15)+2*(n3+15))


     C :
     #include <fft.h>
     int csfft3du(int sign,int n1,int n2,int n3,float *array,
		    int	la1, int la2, float *coef);
     int zdfft3du(int sign,int n1,int n2,int n3,double *array,
		    int	la1, int la2, double *coef);

DESCRIPTION    [Toc]    [Back]

     csfft3du and zdfft3du compute in place the	real 3D	sequence  of size N1 x
     N2	x N3 from its complex Fourier transform.  The value F{j1,j2,j3}	of the
     transform of the 3D sequence f{i1,i2,i3} is equal to:
	 F{j1,j2,j3} = Sum( W1^(i1*j1)*W2^(i2*j2)*W3^(i3*j3)*f{i1,i2,i3} ),
		  for i[123] =0,...,(N[123]-1)
	      W[123] = exp( (Sign*2*sqrt(-1)*PI) / N[123] )

Storage    [Toc]    [Back]

     It	is assumed that	the (N1	x N2 x N3) 3D sequence is stored along
     dimension N1.  So the index {i+1,j,l} has an offset of 1 element with
     respect to	{i,j,l}, and {i,j+1,k} an offset of la1	elements with respect
     to	{i,j,k}, and {i,j,k+1} an offset of (la1*la2) elements with respect to
     {i,j,k}.
     NOTE : la1	must be	larger (or equal) to 2*((N1+2)/2), and la2 larger (or
     equal) to N2.

Algorithm    [Toc]    [Back]

     The real-to-complex Direct	3D Fourier transform is	computed with a	rowcolumn
 approach.
      -	First, N1*N2 FFTs complex-to-complex of	size N3	are performed,
     stride=(la1/2)*la2, and leading_dimension=1.
      -	then, N3 2D FFTs real-to-complex of size N1xN2 are evaluated, stride =
     1
      and leading_dimension=la1.



									Page 1






csfft3du,zdfft3du(3F)					 csfft3du,zdfft3du(3F)



     As	the final output sequence has real values, only	half of	the transform
     are needed	since the sample {(N1-k),l,m} of the real-to-complex transform
     is	be the conjugate of the	sample {k,l,m}.
     However, some extra space is necessary, and the relation
     (la1>=2*((N1+2)/2)) must hold.

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.

     N1	Integer, the first dimension size of the 3D sequence.  Unchanged on
     exit.

     N2	Integer, the second dimension size of the 3D sequence.	Unchanged on
     exit.

     N3	Integer, the third dimension size of the 3D sequence.  Unchanged on
     exit.

     ARRAY Array containing the	samples	of the 3D sequence to be transformed.
     On	input, the element {i,j,k} of the sequence is stored as	A(i,j,k) in
     Fortran , and A[i+j*la1+k*la1*la2]	in C. On exit, the array is
     overwritten.

     LA1 Integer, first	leading	dimension: increment between the samples of
     two consecutive 1D	sub-sequences (e.g between {i,j+1,k} and {i,j,k} ).
     Unchanged on exit.

     LA2 Integer, second leading dimension: number of the 1D sub-sequence
     between two consecutive 2D	sub-sequences (e.g between {i,j,k+1} and
     {i,j,k}).	Unchanged on exit.

     COEFF Array of at least ( (N1+15)+2*(N2+15)+2*(N3+15) ) elements.	On
     entry it contains the Sines/Cosines and factorization of N. COEFF needs
     to	be initialized with a call to scfft3dui	or dzfft3dui.  Unchanged on
     exit.


Example	of Calling Sequence
     3D	FFT computed on	a real sequence	of size	100x64x125. The	elements of
     each sequence are stored with increment (stride) 1, the offset between
     the first element of two succesive	1D sub-sequences (first	leading
     dimension)	is 102,	and the	number of 1D sub-sequence between two
     succesive 2D sub-sequences	(second	leading	dimension) is 64.
     Note : 102	>= 100+2 , and 64 >= 64.
     Fortran
	  real array(0:102-1,0:64-1,0:125-1)
	  real coeff(100+15 + 2*(64+15)	+ 2*(125+15))
	  call scfft3dui( 100, 64, 125,	coeff)
	  call scfft3du( -1, 100, 64, 125, array, 102, 64, coeff)



									Page 2






csfft3du,zdfft3du(3F)					 csfft3du,zdfft3du(3F)



	 call csfft3du(	 1, 100, 64, 125, array, 102, 64, coeff)

     C
	  #include <fft.h>
	  float	array[102*64*125], *coeff;
	  coeff	= scfft3dui( 100, 64, 125, NULL);
	  scfft3du( -1,	100, 64, 125, array, 102, 64, coeff)
	  csfft3du(  1,	100, 64, 125, array, 102, 64, coeff)

SEE ALSO    [Toc]    [Back]

      
      
     fft, scfft3dui, dzfft3dui,	scfft3du, dzfft3du


									PPPPaaaaggggeeee 3333
[ Back ]
 Similar pages
Name OS Title
csfft2du IRIX 2D, Complex-to-Real, Inverse Fast Fourier Transforms.
csfft1du IRIX 1D, Complex to Real, Inverse Fast Fourier Transforms.
csfftm1du IRIX Multiple 1D, Complex to Real, Inverse Fast Fourier Transforms.
fft2du IRIX 2D, Real to Complex, Direct Fast Fourier Transforms.
fft1du IRIX 1D, Real to Complex, Direct Fast Fourier Transforms.
fft3du IRIX 3D, Real to Complex, Direct Fast Fourier Transforms.
scfftm1du IRIX Multiple 1D, Real to Complex, Direct Fast Fourier Transforms.
fft1d IRIX 1D, Real Complex-to-Complex, Fast Fourier Transforms.
cfftm1d IRIX Multiple 1D, complex-to-complex, Fast Fourier Transforms.
fft IRIX Fast Fourier Transforms
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service