Computes an out-of-place single-precision complex 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+
- tvOS 9.0+
- watchOS 2.0+

Framework

- Accelerate

## Declaration

## Parameters

`__Setup`

Points to a structure initialized by a prior call to

`v`

. The value supplied as parameterDSP _create _fftsetup `Log2n`

of the setup function must equal or exceed the values supplied as parameters`Log2N0`

and`Log2N1`

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 unless the matrix is a submatrix. To default*both*`IA1`

*and*`IC1`

, pass 0 for either or both parameters.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 unless the matrix is a submatrix. To default*both*`IA1`

*and*`IC1`

, pass 0 for either or both parameters.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`IC1`

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

`IC1`

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

A temporary matrix used for storing interim results. The minimum size of temporary memory for each part (real and imaginary) is the lower value of 16,384 bytes or the size of

`NR * NC`

elements, where`NC`

is the number of columns (`2`

raised to`Log2N0`

) and`NR`

is the number of rows (`2`

raised to`Log2N1`

). 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

This performs the following operation:

where F is `Direction`

, N is two raised to `Log2N1`

, M is two raised to `Log2N0`

, and j is the square root of `-1`

.

See also functions `v`

and `v`

.