diff options
Diffstat (limited to 'log-fourier.cpp')
-rw-r--r-- | log-fourier.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/log-fourier.cpp b/log-fourier.cpp index 9ae70be..2e93e87 100644 --- a/log-fourier.cpp +++ b/log-fourier.cpp @@ -78,6 +78,10 @@ std::vector<Complex> LogarithmicFourierTransform::fourier(const std::vector<Real } } + for (unsigned n = 0; n < N; n++) { + ĉ[n] -= ĉ[N - 1]; + } + return ĉ; } @@ -87,11 +91,7 @@ std::vector<Real> LogarithmicFourierTransform::inverse(const std::vector<Complex for (Real σ : σs) { for (unsigned n = 0; n < pad * N; n++) { if (n < N) { - if (σ < 0) { - a[n] = std::conj(ĉ[n]) * std::exp((1 - k) * ω(n)); - } else { - a[n] = ĉ[n] * std::exp((1 - k) * ω(n)); - } + a[n] = (ĉ[n].real() + II * σ * ĉ[n].imag()) * std::exp((1 - k) * ω(n)); } else { a[n] = 0; } @@ -106,6 +106,10 @@ std::vector<Real> LogarithmicFourierTransform::inverse(const std::vector<Complex } } + for (unsigned n = 0; n < N; n++) { + c[n] -= c[N - 1]; + } + return c; } |