vDSP_DFT_ExecuteD
Calculates the discrete double-precision Fourier transform for a vector.
Declaration
void vDSP_DFT_ExecuteD(const struct vDSP_DFT_SetupStructD *__Setup, const double *__Ir, const double *__Ii, double *__Or, double *__Oi);Parameters
- __Setup:
The DFT setup structure for this transform.
- __Ir:
A single-precision vector that contains the real parts of the input values.
- __Ii:
A single-precision vector that contains the imaginary parts of the input values.
- __Or:
A single-precision vector that contains the real parts of the output values.
- __Oi:
A single-precision vector that contains the imaginary parts of the output values.
Discussion
This function uses the following operation for a real transform. That is, when the vDSP_DFT_zrop_CreateSetupD function provides the setup structure:
// `N` is the Length given in the setup
// `h` is the array of numbers specified by `Ir` and `Ii`
// `H` is the array of numbers specified by `Or` and `Oi`
// `C` is:
// 2 if Direction is vDSP_DFT_FORWARD and
// 1 if Direction is vDSP_DFT_INVERSE
// `S` is:
// -1 if Direction is vDSP_DFT_FORWARD and
// +1 if Direction is vDSP_DFT_INVERSE
// `1**x` is `e**(2*pi*i*x)`
For 0 <= k < N
H[k] = C * sum(1**(S * j*k/N) * h[j], 0 <= j < N)The function uses the following operation for a complex transform. That is, when the vDSP_DFT_zop_CreateSetupD function provides the setup structure:
// `N` is the length given in the setup
// `h` is the array of complex numbers specified by Ir and Ii
// `H` is the array of complex numbers specified by Or and Oi
// `S` is:
// -1 if Direction is vDSP_DFT_FORWARD and
// +1 if Direction is vDSP_DFT_INVERSE
// `1**x` is `e**(2*pi*i*x)`
For 0 <= k < N,
H[k] = sum(1**(S * j*k/N) * h[j], 0 <= j < N),This function supports in-place operation where the Or and Ir parameters are equal, and the Oi and Ii parameters are equal. The transform length must equal the transform length specified in the given setup structure.