summaryrefslogtreecommitdiff
path: root/log-fourier.cpp
diff options
context:
space:
mode:
authorJaron Kent-Dobias <jaron@kent-dobias.com>2025-05-09 07:44:48 -0300
committerJaron Kent-Dobias <jaron@kent-dobias.com>2025-05-09 07:44:48 -0300
commit90e7dcd17f264e22dc4f2e9f53ba82d3c292e42a (patch)
tree3884f1c2ffdfd534e898977e8ec29f99d5866a01 /log-fourier.cpp
parent61708db87b332b2325d31fce118c6b75e31a4355 (diff)
downloadcode-90e7dcd17f264e22dc4f2e9f53ba82d3c292e42a.tar.gz
code-90e7dcd17f264e22dc4f2e9f53ba82d3c292e42a.tar.bz2
code-90e7dcd17f264e22dc4f2e9f53ba82d3c292e42a.zip
Don't use negative values to compute the energy
Diffstat (limited to 'log-fourier.cpp')
-rw-r--r--log-fourier.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/log-fourier.cpp b/log-fourier.cpp
index 5b5955a..e8404d7 100644
--- a/log-fourier.cpp
+++ b/log-fourier.cpp
@@ -186,6 +186,7 @@ Real estimateZ(LogarithmicFourierTransform& fft, const std::vector<Real>& C, con
Real energy(const LogarithmicFourierTransform& fft, std::vector<Real>& C, const std::vector<Real>& R, unsigned p, unsigned s, Real λ, Real β) {
Real E = fft.t(0) * (df(λ, p, s, 1) + R[0] * df(λ, p, s, C[0])) / 2;
for (unsigned n = 0; n < C.size()/2-1; n++) {
+ if (C[2*n+2] < 0 || R[2*n+2] < 0) break;
Real h₂ₙ = fft.t(2*n+1) - fft.t(2*n);
Real h₂ₙ₊₁ = fft.t(2*n+2) - fft.t(2*n+1);
Real f₂ₙ = R[2*n] * df(λ, p, s, C[2*n]);