diff --git a/lib/averages/Mama.cs b/lib/averages/Mama.cs index ad7595f5..a4b2e9fa 100644 --- a/lib/averages/Mama.cs +++ b/lib/averages/Mama.cs @@ -111,7 +111,7 @@ public class Mama : AbstractBase [MethodImpl(MethodImplOptions.AggressiveInlining)] private double CalculatePeriod(double im, double re) { - if (im == 0 || re == 0) return _pd[^2]; + if (System.Math.Abs(im) <= double.Epsilon || System.Math.Abs(re) <= double.Epsilon) return _pd[^2]; return _twoPi / System.Math.Atan(im / re); } @@ -167,7 +167,7 @@ public class Mama : AbstractBase _pd[^1] = AdjustPeriod(_pd[^1]); // Phase calculation - double phase = _i1[^1] != 0 ? System.Math.Atan(_q1[^1] / _i1[^1]) * _radToDeg : _ph[^2]; + double phase = Math.Abs(_i1[^1]) >= double.Epsilon ? System.Math.Atan(_q1[^1] / _i1[^1]) * _radToDeg : _ph[^2]; _ph.Add(phase, Input.IsNew); // Adaptive alpha diff --git a/lib/errors/Mase.cs b/lib/errors/Mase.cs index 9067a4a1..096ecedf 100644 --- a/lib/errors/Mase.cs +++ b/lib/errors/Mase.cs @@ -120,7 +120,7 @@ public sealed class Mase : AbstractBase double sumAbsoluteError = CalculateSumAbsoluteError(actualValues, predictedValues); double naiveForecastError = CalculateNaiveForecastError(actualValues, naiveValues); - return naiveForecastError != 0 ? (sumAbsoluteError / _actualBuffer.Count) / naiveForecastError : double.PositiveInfinity; + return naiveForecastError >= double.Epsilon ? (sumAbsoluteError / _actualBuffer.Count) / naiveForecastError : double.PositiveInfinity; } ///