diff --git a/eisnoise.cpp b/eisnoise.cpp index f9cfd290b77d6e16534e2c727fddb6590057a2bf..2a295c8ae92cc8ac995d1689f95da66c45342955 100644 --- a/eisnoise.cpp +++ b/eisnoise.cpp @@ -1,5 +1,6 @@ #include "eisnoise/eisnoise.h" +#include <cmath> #include <limits> #include <numeric> #include <sstream> @@ -41,9 +42,14 @@ void EisNoise::addImpl(std::vector<eis::DataPoint>& spectra, const Noise& noise, } if(std::abs(spectra[i].im) > 0.001) + { spectra[i].im = (noiseValue * spectra[i].im) * intensity + spectra[i].im; + } else - spectra[i].im = (noiseValue * static_cast<fvalue>(0.001)) * intensity + spectra[i].im; + { + std::complex<fvalue> smallVal(std::copysign(0.001, spectra[i].im.real()), std::copysign(0.001, spectra[i].im.imag())); + spectra[i].im = (noiseValue * smallVal) * intensity + spectra[i].im; + } } }