summaryrefslogtreecommitdiff
path: root/log-fourier.cpp
diff options
context:
space:
mode:
authorJaron Kent-Dobias <jaron@kent-dobias.com>2025-05-08 07:24:33 -0300
committerJaron Kent-Dobias <jaron@kent-dobias.com>2025-05-08 07:24:33 -0300
commit5fd9866479ec50051d2c9eeb4e217e9376e6f9b4 (patch)
tree30a96ad32a8cc89120e2ae2938b865af2d33a08f /log-fourier.cpp
parente3f311a91b9684924262108a4e0c8e934f5d1d70 (diff)
downloadcode-5fd9866479ec50051d2c9eeb4e217e9376e6f9b4.tar.gz
code-5fd9866479ec50051d2c9eeb4e217e9376e6f9b4.tar.bz2
code-5fd9866479ec50051d2c9eeb4e217e9376e6f9b4.zip
Made log-Fourier padding symmetric, and began writing regular integrator
Diffstat (limited to 'log-fourier.cpp')
-rw-r--r--log-fourier.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/log-fourier.cpp b/log-fourier.cpp
index 9ae70be..9d1f2cb 100644
--- a/log-fourier.cpp
+++ b/log-fourier.cpp
@@ -64,6 +64,8 @@ std::vector<Complex> LogarithmicFourierTransform::fourier(const std::vector<Real
for (unsigned n = 0; n < pad*N; n++) {
if (n < N) {
a[n] = c[n] * exp((1 - k) * τ(n));
+ } else if (n >= (pad - 1) * N) {
+ a[n] = c[pad*N-n-1] * exp((1 - k) * τ(pad*N-n-1));
} else {
a[n] = 0;
}
@@ -92,6 +94,12 @@ std::vector<Real> LogarithmicFourierTransform::inverse(const std::vector<Complex
} else {
a[n] = ĉ[n] * std::exp((1 - k) * ω(n));
}
+ } else if (n >= (pad - 1) * N) {
+ if (σ < 0) {
+ a[n] = ĉ[pad*N-n-1] * std::exp((1 - k) * ω(pad*N-n-1));
+ } else {
+ a[n] = std::conj(ĉ[pad*N-n-1]) * std::exp((1 - k) * ω(pad*N-n-1));
+ }
} else {
a[n] = 0;
}