MCPcopy Create free account
hub / github.com/ARM-software/ComputeLibrary / dft_1d_step

Function dft_1d_step

tests/validation/reference/DFT.cpp:82–106  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

80 */
81template <typename T>
82void dft_1d_step(const T *src_ptr, T *dst_ptr, size_t N)
83{
84#if defined(_OPENMP)
85#pragma omp parallel for
86#endif /* _OPENMP */
87 for (unsigned int k = 0; k < N; ++k)
88 {
89 float Xr = 0;
90 float Xi = 0;
91 for (unsigned int n = 0; n < N; ++n)
92 {
93 const float alpha = (2 * M_PI * k * n) / N;
94 const float val_r = src_ptr[2 * n];
95 const float val_i = src_ptr[2 * n + 1];
96 const float cos_alpha = cos(alpha);
97 const float sin_alpha = sin(alpha);
98
99 Xr += val_r * cos_alpha + val_i * sin_alpha;
100 Xi += val_i * cos_alpha - val_r * sin_alpha;
101 }
102
103 dst_ptr[k * 2] = Xr;
104 dst_ptr[k * 2 + 1] = Xi;
105 }
106}
107
108/** Performs an one dimensional inverse DFT on a given real sequence.
109 *

Callers 1

dft_1d_coreFunction · 0.85

Calls 2

cosFunction · 0.85
sinFunction · 0.85

Tested by

no test coverage detected