From c9d59ebc4a2c3566d34759a901be639b5f932e30 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Fri, 28 Jan 2022 00:37:12 -0800 Subject: Simplify FFT complex arg handling a bit --- common/alcomplex.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'common/alcomplex.cpp') diff --git a/common/alcomplex.cpp b/common/alcomplex.cpp index 6d2b18c1..126e2c04 100644 --- a/common/alcomplex.cpp +++ b/common/alcomplex.cpp @@ -120,12 +120,14 @@ void complex_fft(const al::span> buffer, const double sign) std::swap(buffer[rev.first], buffer[rev.second]); /* Iterative form of Danielson-Lanczos lemma */ + const double pi{al::numbers::pi * sign}; size_t step2{1u}; for(size_t i{0};i < log2_size;++i) { - const double arg{al::numbers::pi / static_cast(step2)}; + const double arg{pi / static_cast(step2)}; - const std::complex w{std::cos(arg), std::sin(arg)*sign}; + /* TODO: Would std::polar(1.0, arg) be any better? */ + const std::complex w{std::cos(arg), std::sin(arg)}; std::complex u{1.0, 0.0}; const size_t step{step2 << 1}; for(size_t j{0};j < step2;j++) -- cgit v1.2.3