Work at SourceForge, help us to make it a better place! We have an immediate need for a Support Technician in our San Francisco or Denver office.

Close

[774168]: fftn.h Maximize Restore History

Download this file

fftn.h    118 lines (112 with data), 4.2 kB

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
/*--------------------------------*-C-*---------------------------------*
* File:
* fftn.h
*
* Singleton's multivariate complex Fourier transform, computed in
* place using mixed-radix Fast Fourier Transform algorithm.
*
* Called here `fftn' since it does a radix-n FFT on n-dimensional data
*
* Copyright(c)1995,97 Mark Olesen <olesen@me.QueensU.CA>
* Queen's Univ at Kingston (Canada)
*
* Permission to use, copy, modify, and distribute this software for
* any purpose without fee is hereby granted, provided that this
* entire notice is included in all copies of any software which is
* or includes a copy or modification of this software and in all
* copies of the supporting documentation for such software.
*
* THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR
* IMPLIED WARRANTY. IN PARTICULAR, NEITHER THE AUTHOR NOR QUEEN'S
* UNIVERSITY AT KINGSTON MAKES ANY REPRESENTATION OR WARRANTY OF ANY
* KIND CONCERNING THE MERCHANTABILITY OF THIS SOFTWARE OR ITS
* FITNESS FOR ANY PARTICULAR PURPOSE.
*
* All of which is to say that you can do what you like with this
* source code provided you don't try to sell it as your own and you
* include an unaltered copy of this message (including the
* copyright).
*
* It is also implicitly understood that bug fixes and improvements
* should make their way back to the general Internet community so
* that everyone benefits.
*
* Brief overview of parameters:
* ---------------------------------------------------------------------*
* Re[]: real value array
* Im[]: imaginary value array
* nTotal: total number of complex values
* nPass: number of elements involved in this pass of transform
* nSpan: nspan/nPass = number of bytes to increment pointer
* in Re[] and Im[]
* isign: exponent: +1 = forward -1 = reverse
* scaling: normalizing constant by which the final result is DIVIDED
* scaling == -1, normalize by total dimension of the transform
* scaling < -1, normalize by the square-root of the total dimension
*
*
* Slightly more detailed information:
* ----------------------------------------------------------------------*
* void fft_free (void);
*
* free-up allocated temporary storage after finished all the Fourier
* transforms.
*
* ----------------------------------------------------------------------*
*
* int fftn (int ndim, const int dims[], REAL Re[], REAL Im[],
* int iSign, double scaling);
*
* NDIM = the total number dimensions
* DIMS = a vector of array sizes
* if NDIM is zero then DIMS must be zero-terminated
*
* RE and IM hold the real and imaginary components of the data, and
* return the resulting real and imaginary Fourier coefficients.
* Multidimensional data *must* be allocated contiguously. There is
* no limit on the number of dimensions.
*
* ISIGN = the sign of the complex exponential
* (ie, forward or inverse FFT)
* the magnitude of ISIGN (normally 1) is used to determine
* the correct indexing increment (see below).
*
* SCALING = normalizing constant by which the final result is DIVIDED
* if SCALING == -1, normalize by total dimension of the transform
* if SCALING < -1, normalize by the square-root of the total dimension
*
* example:
* tri-variate transform with Re[n3][n2][n1], Im[n3][n2][n1]
*
* int dims[3] = {n1,n2,n3}
* fftn (3, dims, Re, Im, 1, scaling);
*
* or, using a null terminated dimension list
* int dims[4] = {n1,n2,n3,0}
* fftn (0, dims, Re, Im, 1, scaling);
* ----------------------------------------------------------------------*/
#ifndef _FFTN_H
#define _FFTN_H
#ifdef __cplusplus
extern "C" {
#endif
extern void fft_free (void);
/* double precision routine */
extern int fftn (int /* ndim */,
const unsigned int /* dims */[],
double /* Re */[],
double /* Im */[],
int /* isign */,
double /* scaling */);
/* float precision routine */
extern int fftnf (int /* ndim */,
const unsigned int /* dims */[],
float /* Re */[],
float /* Im */[],
int /* isign */,
double /* scaling */);
#ifdef __cplusplus
}
#endif
#endif /* _FFTN_H */
/*----------------------- end-of-file (C header) -----------------------*/