Computes an out-of-place single-precision real discrete FFT, either from the spatial domain to the frequency domain (forward) or from the frequency domain to the spatial domain (inverse). A buffer is used for intermediate results.

SDKs

- iOS 4.0+
- macOS 10.0+
- Mac Catalyst 13.0+Beta
- tvOS 9.0+
- watchOS 2.0+

Framework

- Accelerate

## Declaration

## Parameters

`__Setup`

Points to a structure initialized by a prior call to the FFT weights array function,

`v`

. The value supplied as parameterDSP _create _fftsetup `Log2n`

of the setup function must equal or exceed the value supplied as parameter`Log2N0`

or`Log2N1`

, whichever is larger, of this transform function.`__A`

Complex 2-dimensional input vector, i.e. a matrix.

`__IA0`

Stride between elements in a row of

`A`

.`__IA1`

Stride between elements in a column of

`A`

; should generally be allowed to default (by passing 0) unless the matrix is a submatrix. The default column stride equals the row stride multiplied by the column count. Thus, if`IA0`

is 1 and`IA1`

is 0, every element of the input /output matrix is processed. If`IA0`

is 2 and`IA1`

is 0, every other element of each row is processed.If not 0, parameter

`IA1`

represents the distance between adjacent rows of the matrix.`__C`

Complex 2-dimensional output vector, i.e. a matrix.

`__IC0`

Stride between elements in a row of

`C`

.`__IC1`

Stride between elements in a column of

`C`

; should generally be allowed to default (by passing 0) unless the matrix is a submatrix. The default column stride equals the row stride multiplied by the column count. Thus, if`IC0`

is 1 and`IC1`

is 0, every element of the input /output matrix is processed. If`IC0`

is 2 and`stride`

is 0, every other element of each row is processed.In Col If not 0, parameter

`IC1`

represents the distance between adjacent rows of the matrix.`__Buffer`

A temporary matrix used for storing interim results. Both the

`realp`

and`imagp`

fields in`buffer`

must contain temporary buffers. The size of those buffers must be at least the greater ofTemp `N1`

or`N0 / 2`

elements, where`N1`

is the number of rows (`2`

raised to`Log2N1`

) and`N0`

is the number of columns (`2`

raised to`Log2N0`

). For best performance, the buffer addresses should be 16-byte aligned or better.`__Log2N0`

The base 2 exponent of the number of columns to process for each row.

`__Log2N1`

The base 2 exponent of the number of rows to process. For example, to process 64 rows of 128 columns, specify

`7`

for`Log2N0`

and`6`

for`Log2N1`

.`__Direction`

A forward/inverse directional flag; must specify

`k`

(+1) orFFTDirection _Forward `k`

(-1).FFTDirection _Inverse

## Discussion

Forward transforms read real input and write packed complex output. Inverse transforms read packed complex input and write real output. As a result of packing the frequency-domain data, spatial-domain data and its equivalent frequency-domain data have the same storage requirements.

Real data is stored in split complex form, with odd reals stored on the imaginary side of the split complex form and even reals stored on the real side.

See also functions `v`

and `v`

.