From 8364b9a96b8f60a3effbe8843c89717a89a8fc5e Mon Sep 17 00:00:00 2001 From: Jaron Kent-Dobias Date: Thu, 3 Apr 2025 15:45:29 -0300 Subject: Split functions into library to deduplicate code --- fourier.hpp | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 fourier.hpp (limited to 'fourier.hpp') diff --git a/fourier.hpp b/fourier.hpp new file mode 100644 index 0000000..86335f7 --- /dev/null +++ b/fourier.hpp @@ -0,0 +1,32 @@ +#pragma once +#include +#include +#include +#include + +using Real = double; +using Complex = std::complex; +using namespace std::complex_literals; + +Real f(Real λ, unsigned p, unsigned s, Real q); +Real df(Real λ, unsigned p, unsigned s, Real q); +Real ddf(Real λ, unsigned p, unsigned s, Real q); + +class FourierTransform { +private: + std::vector a; + std::vector â; + fftw_plan plan_r2c; + fftw_plan plan_c2r; + Real Δω; + Real Δτ; +public: + FourierTransform(unsigned n, Real Δω, Real Δτ, unsigned flags = 0); + ~FourierTransform(); + std::vector fourier(const std::vector& c); + std::vector inverse(const std::vector& ĉ); +}; + +std::string fourierFile(std::string prefix, unsigned p, unsigned s, Real λ, Real τ₀, Real y, unsigned log2n, Real τₘₐₓ); +Real energy(const std::vector& C, const std::vector& R, unsigned p, unsigned s, Real λ, Real y, Real Δτ); +std::tuple, std::vector> RddfCtdfCt(FourierTransform& fft, const std::vector& C, const std::vector& R, unsigned p, unsigned s, Real λ); -- cgit v1.2.3-70-g09d2