| 209 | |
| 210 | template <typename T> |
| 211 | SimpleTensor<T> dft_1d_core(const SimpleTensor<T> &src, FFTDirection direction) |
| 212 | { |
| 213 | ARM_COMPUTE_ERROR_ON(src.num_channels() != 2); |
| 214 | |
| 215 | const unsigned int N = src.shape()[0]; |
| 216 | |
| 217 | SimpleTensor<T> dst(src.shape(), src.data_type(), src.num_channels()); |
| 218 | |
| 219 | const unsigned int upper_dims = src.shape().total_size_upper(1); |
| 220 | #if defined(_OPENMP) |
| 221 | #pragma omp parallel for |
| 222 | #endif /* _OPENMP */ |
| 223 | for (unsigned int du = 0; du < upper_dims; ++du) |
| 224 | { |
| 225 | const T *src_row_ptr = src.data() + du * N * src.num_channels(); |
| 226 | T *dst_row_ptr = dst.data() + du * N * dst.num_channels(); |
| 227 | direction == FFTDirection::Forward ? dft_1d_step(src_row_ptr, dst_row_ptr, N) |
| 228 | : idft_1d_step(src_row_ptr, dst_row_ptr, N); |
| 229 | } |
| 230 | |
| 231 | return dst; |
| 232 | } |
| 233 | |
| 234 | /** Scale a tensor by a given scaling factor. |
| 235 | * |
no test coverage detected