Add exact-zero guards in various classes to prevent division by zero errors

This commit is contained in:
Miha Kralj
2026-02-16 21:57:11 -08:00
parent 63ae2c9ab2
commit b63b9730e1
10 changed files with 18 additions and 2 deletions
+2
View File
@@ -180,6 +180,7 @@ public sealed class Cg : AbstractBase
private double CalculateCg()
{
int n = _buffer.Count;
// skipcq: CS-R1077 - Exact-zero guard: _sum is cumulative price sum; zero means empty buffer, division by zero below
if (n == 0 || _sum == 0)
{
return 0;
@@ -299,6 +300,7 @@ public sealed class Cg : AbstractBase
sum += price;
}
// skipcq: CS-R1077 - Exact-zero guard: sum is cumulative price sum; zero means empty buffer, division by zero below
if (sum == 0)
{
output[i] = 0;
+1
View File
@@ -321,6 +321,7 @@ public sealed class Homod : AbstractBase
[MethodImpl(MethodImplOptions.AggressiveInlining)]
private static double Atan2(double y, double x)
{
// skipcq: CS-R1077 - Exact-zero guard: both quadrature components zero means no signal; atan2(0,0) is undefined
if (y == 0.0 && x == 0.0)
{
return 0.0; // Return 0 instead of error for robustness
+2
View File
@@ -206,9 +206,11 @@ public sealed class HtSine : AbstractBase
prevI2 = i2;
double tempReal1 = period;
// skipcq: CS-R1077 - Exact-zero guard: atan(im/re) requires nonzero denominator; zero im/re means no signal energy
if (im != 0.0 && re != 0.0)
{
double angle = Math.Atan(im / re);
// skipcq: CS-R1077 - Exact-zero guard: angle == 0 means period is undefined (division by angle below)
if (angle != 0.0)
{
period = (2.0 * Math.PI) / angle;