Builds a data structure that contains precalculated data for use by single-precision FFT functions.
SDK
- macOS 10.0+
Framework
- Kernel
Declaration
FFTSetup vDSP_create_fftsetup(v DSP _Length __Log2n, FFTRadix __Radix);
Parameters
__Log2n
The base-two logarithm of the maximum number of elements to be transformed. (Subsequent calls to FFT functions using the resulting setup may transform this length or less.)
__Radix
Specifies radix options. Radix 2, radix 3, and radix 5 functions are supported.
Return Value
Returns an FFTSetup
structure for use with one-dimensional FFT functions. Returns 0 on error.
Discussion
This function returns a filled-in FFTSetup
data structure for use by FFT functions that operate on single-precision vectors. Once prepared, the setup structure can be used repeatedly by FFT functions (which read the data in the structure and do not alter it) for any (power of two) length up to that specified when you created the structure.
If an application performs FFTs with diverse lengths, the calls with different lengths can share a single setup structure (created for the longest length), and this saves space over having multiple structures.
Parameter Log2n
is a base-two exponent and specifies that the largest transform length that can processed using the resulting setup structure is 2**Log2n
(or 3*2**Log2n
or 5*2**Log2n
if the appropriate flags are passed, as discussed below). That is, the Log2n
parameter must equal or exceed the value passed to any subsequent FFT routine using the setup structure returned by this routine.
Parameter Radix
specifies radix options. Its value may be the bitwise OR of any combination of k
, k
, or k
. The resulting setup structure may be used with any of the routines for which the respective flag was used. (The radix-3 and radix-5 FFT routines have "fft3" and "fft5" in their names. The radix-2 FFT routines have plain "fft" in their names.)
If zero is returned, the routine failed to allocate storage.
The setup structure is deallocated by calling v
.
Use v
during initialization. It is relatively slow compared to the routines that actually perform FFTs. Never use it in a part of an application that needs to be high performance.