[CodeFactor] Apply fixes to commit 9697fac

This commit is contained in:
codefactor-io
2026-03-14 05:03:08 +00:00
parent 9697facfb4
commit e35ff7fa3f
164 changed files with 458 additions and 530 deletions
+5 -5
View File
@@ -59,7 +59,7 @@ public sealed class Bwma : AbstractBase
_period = period;
_order = order;
_power = order * 0.5 + 0.5;
_power = (order * 0.5) + 0.5;
_buffer = new RingBuffer(period);
_weights = new double[period];
Name = $"Bwma({period}, {order})";
@@ -101,12 +101,12 @@ public sealed class Bwma : AbstractBase
{
double sum = 0;
double scale = period > 1 ? 2.0 / (period - 1) : 0.0;
double power = order * 0.5 + 0.5;
double power = (order * 0.5) + 0.5;
for (int i = 0; i < period; i++)
{
double x = period > 1 ? i * scale - 1.0 : 0.0;
double arg = 1.0 - x * x;
double x = period > 1 ? (i * scale) - 1.0 : 0.0;
double arg = 1.0 - (x * x);
double w;
if (arg > 0.0)
@@ -366,7 +366,7 @@ public sealed class Bwma : AbstractBase
return;
}
double power = order * 0.5 + 0.5;
double power = (order * 0.5) + 0.5;
if (period > len)
{
+8 -8
View File
@@ -120,10 +120,10 @@ public sealed class Crma : AbstractBase
{
// Find pivot row
int pivotRow = col;
double pivotMax = Math.Abs(m[col * 5 + col]);
double pivotMax = Math.Abs(m[(col * 5) + col]);
for (int row = col + 1; row < 4; row++)
{
double absVal = Math.Abs(m[row * 5 + col]);
double absVal = Math.Abs(m[(row * 5) + col]);
if (absVal > pivotMax)
{
pivotMax = absVal;
@@ -148,13 +148,13 @@ public sealed class Crma : AbstractBase
}
// Eliminate below
double diag = m[col * 5 + col];
double diag = m[(col * 5) + col];
for (int row = col + 1; row < 4; row++)
{
double factor = m[row * 5 + col] / diag;
double factor = m[(row * 5) + col] / diag;
for (int k = col; k < 5; k++)
{
m[row * 5 + k] = Math.FusedMultiplyAdd(-factor, m[col * 5 + k], m[row * 5 + k]);
m[(row * 5) + k] = Math.FusedMultiplyAdd(-factor, m[(col * 5) + k], m[(row * 5) + k]);
}
}
}
@@ -163,12 +163,12 @@ public sealed class Crma : AbstractBase
Span<double> a = stackalloc double[4];
for (int row = 3; row >= 0; row--)
{
double val = m[row * 5 + 4];
double val = m[(row * 5) + 4];
for (int k = row + 1; k < 4; k++)
{
val = Math.FusedMultiplyAdd(-m[row * 5 + k], a[k], val);
val = Math.FusedMultiplyAdd(-m[(row * 5) + k], a[k], val);
}
a[row] = val / m[row * 5 + row];
a[row] = val / m[(row * 5) + row];
}
return a[0]; // Fitted value at x=0 (newest bar)
+1 -1
View File
@@ -109,7 +109,7 @@ public sealed class Hamma : AbstractBase
double twoPiOverPm1 = 2.0 * Math.PI / (period - 1);
for (int i = 0; i < period; i++)
{
double w = 0.54 - 0.46 * Math.Cos(twoPiOverPm1 * i);
double w = 0.54 - (0.46 * Math.Cos(twoPiOverPm1 * i));
weights[i] = w;
sum += w;
}
+2 -2
View File
@@ -80,14 +80,14 @@ public sealed class Hend : AbstractBase
double n2 = n * n;
double nm1_2 = (n - 1) * (n - 1);
double np1_2 = (n + 1) * (n + 1);
double denom = 8.0 * n * (n2 - 1) * (4 * n2 - 1) * (4 * n2 - 9) * (4 * n2 - 25);
double denom = 8.0 * n * (n2 - 1) * ((4 * n2) - 1) * ((4 * n2) - 9) * ((4 * n2) - 25);
double wsum = 0.0;
for (int i = 0; i < period; i++)
{
int k = i - half;
double k2 = (double)(k * k);
double w = 315.0 * (nm1_2 - k2) * (n2 - k2) * (np1_2 - k2) * (3 * n2 - 16 - 11 * k2) / denom;
double w = 315.0 * (nm1_2 - k2) * (n2 - k2) * (np1_2 - k2) * ((3 * n2) - 16 - (11 * k2)) / denom;
weights[i] = w;
wsum += w;
}
+8 -8
View File
@@ -63,8 +63,8 @@ public sealed class Ilrs : AbstractBase
// Precompute constants (reversed-x convention: x=0=newest, x=n-1=oldest)
_sumX = 0.5 * period * (period - 1);
double sumX2 = (period - 1.0) * period * (2.0 * period - 1.0) / 6.0;
_denominator = period * sumX2 - _sumX * _sumX;
double sumX2 = (period - 1.0) * period * ((2.0 * period) - 1.0) / 6.0;
_denominator = (period * sumX2) - (_sumX * _sumX);
_s.LastValidValue = double.NaN;
}
@@ -239,8 +239,8 @@ public sealed class Ilrs : AbstractBase
{
double nd = n;
sx = 0.5 * nd * (nd - 1);
double sx2 = (nd - 1.0) * nd * (2.0 * nd - 1.0) / 6.0;
denom = nd * sx2 - sx * sx;
double sx2 = (nd - 1.0) * nd * ((2.0 * nd) - 1.0) / 6.0;
denom = (nd * sx2) - (sx * sx);
}
if (Math.Abs(denom) < 1e-10)
@@ -305,8 +305,8 @@ public sealed class Ilrs : AbstractBase
// Precalculate constants for full period
double fullSumX = 0.5 * period * (period - 1);
double fullSumX2 = (period - 1.0) * period * (2.0 * period - 1.0) / 6.0;
double fullDenom = period * fullSumX2 - fullSumX * fullSumX;
double fullSumX2 = (period - 1.0) * period * ((2.0 * period) - 1.0) / 6.0;
double fullDenom = (period * fullSumX2) - (fullSumX * fullSumX);
for (int i = 0; i < len; i++)
{
@@ -345,8 +345,8 @@ public sealed class Ilrs : AbstractBase
{
double n = count;
double sx = 0.5 * n * (n - 1);
double sx2 = (n - 1.0) * n * (2.0 * n - 1.0) / 6.0;
double denom = n * sx2 - sx * sx;
double sx2 = (n - 1.0) * n * ((2.0 * n) - 1.0) / 6.0;
double denom = (n * sx2) - (sx * sx);
if (Math.Abs(denom) < 1e-10)
{
+1 -1
View File
@@ -105,7 +105,7 @@ public sealed class Kaiser : AbstractBase
for (int k = 0; k < period; k++)
{
double t = nm1 > 0 ? (2.0 * k / nm1) - 1.0 : 0.0;
double argSq = 1.0 - t * t;
double argSq = 1.0 - (t * t);
double arg = argSq > 0 ? Math.Sqrt(argSq) : 0.0;
double w = i0Beta > 0 ? BesselI0(beta * arg) / i0Beta : 1.0;
weights[k] = w;
+8 -8
View File
@@ -61,10 +61,10 @@ public sealed class Lsma : AbstractBase
_sum_x = 0.5 * period * (period - 1);
// sum_x2 = 0^2 + ... + (n-1)^2 = (n-1)n(2n-1)/6
double sum_x2 = (period - 1.0) * period * (2.0 * period - 1.0) / 6.0;
double sum_x2 = (period - 1.0) * period * ((2.0 * period) - 1.0) / 6.0;
// denominator = n * sum_x2 - sum_x^2
_denominator = period * sum_x2 - _sum_x * _sum_x;
_denominator = (period * sum_x2) - (_sum_x * _sum_x);
_state.LastValidValue = double.NaN;
}
@@ -177,8 +177,8 @@ public sealed class Lsma : AbstractBase
{
// Recalculate constants for smaller n
sx = 0.5 * n * (n - 1);
double sx2 = (n - 1.0) * n * (2.0 * n - 1.0) / 6.0;
denom = n * sx2 - sx * sx;
double sx2 = (n - 1.0) * n * ((2.0 * n) - 1.0) / 6.0;
denom = (n * sx2) - (sx * sx);
}
if (Math.Abs(denom) < 1e-10)
@@ -309,8 +309,8 @@ public sealed class Lsma : AbstractBase
// Precalculate constants for full period
double full_sum_x = 0.5 * period * (period - 1);
double full_sum_x2 = (period - 1.0) * period * (2.0 * period - 1.0) / 6.0;
double full_denom = period * full_sum_x2 - full_sum_x * full_sum_x;
double full_sum_x2 = (period - 1.0) * period * ((2.0 * period) - 1.0) / 6.0;
double full_denom = (period * full_sum_x2) - (full_sum_x * full_sum_x);
for (int i = 0; i < len; i++)
{
@@ -346,8 +346,8 @@ public sealed class Lsma : AbstractBase
{
double n = count;
double sx = 0.5 * n * (n - 1);
double sx2 = (n - 1.0) * n * (2.0 * n - 1.0) / 6.0;
double denom = n * sx2 - sx * sx;
double sx2 = (n - 1.0) * n * ((2.0 * n) - 1.0) / 6.0;
double denom = (n * sx2) - (sx * sx);
if (Math.Abs(denom) < 1e-10)
{
+1 -1
View File
@@ -86,7 +86,7 @@ public sealed class Parzen : AbstractBase
if (absU <= 0.5)
{
// Inner region: cubic spline
w = Math.FusedMultiplyAdd(6.0, absU * absU * absU, 1.0 - 6.0 * absU * absU);
w = Math.FusedMultiplyAdd(6.0, absU * absU * absU, 1.0 - (6.0 * absU * absU));
}
else if (absU <= 1.0)
{
+6 -6
View File
@@ -36,7 +36,7 @@ public sealed class Pwma : AbstractBase
}
_period = period;
_divisor = (double)period * ((double)period + 1.0) * (2.0 * (double)period + 1.0) / 6.0;
_divisor = (double)period * ((double)period + 1.0) * ((2.0 * (double)period) + 1.0) / 6.0;
_buffer = new RingBuffer(period);
Name = $"Pwma({period})";
WarmupPeriod = period;
@@ -91,7 +91,7 @@ public sealed class Pwma : AbstractBase
_state.WSum = tW;
// Kahan compensated update for PSum: psum += (period² * val - 2 * oldWSum + oldSum)
double deltaP = Math.FusedMultiplyAdd((double)_period * _period, val, -2 * oldWSum + oldSum);
double deltaP = Math.FusedMultiplyAdd((double)_period * _period, val, (-2 * oldWSum) + oldSum);
double yP = deltaP - _state.PSumComp;
double tP = _state.PSum + yP;
_state.PSumComp = (tP - _state.PSum) - yP;
@@ -166,7 +166,7 @@ public sealed class Pwma : AbstractBase
}
double count = _buffer.Count;
double currentDivisor = _buffer.IsFull ? _divisor : count * (count + 1.0) * (2.0 * count + 1.0) / 6.0;
double currentDivisor = _buffer.IsFull ? _divisor : count * (count + 1.0) * ((2.0 * count) + 1.0) / 6.0;
Last = new TValue(input.Time, _state.PSum / currentDivisor);
PubEvent(Last, isNew);
return Last;
@@ -281,7 +281,7 @@ public sealed class Pwma : AbstractBase
private static void CalculateScalarCore(ReadOnlySpan<double> source, Span<double> output, int period)
{
int len = source.Length;
double divisor = (double)period * ((double)period + 1.0) * (2.0 * (double)period + 1.0) / 6.0;
double divisor = (double)period * ((double)period + 1.0) * ((2.0 * (double)period) + 1.0) / 6.0;
double sum = 0;
double wsum = 0;
double psum = 0;
@@ -330,7 +330,7 @@ public sealed class Pwma : AbstractBase
buffer[i] = val;
double currentDivisor = ((double)i + 1.0) * ((double)i + 2.0) * (2.0 * ((double)i + 1.0) + 1.0) / 6.0;
double currentDivisor = ((double)i + 1.0) * ((double)i + 2.0) * ((2.0 * ((double)i + 1.0)) + 1.0) / 6.0;
output[i] = psum / currentDivisor;
}
@@ -366,7 +366,7 @@ public sealed class Pwma : AbstractBase
wsum = tW;
// Kahan compensated update for PSum: psum += (period² * val - 2 * oldWSum + oldSum)
double deltaP = Math.FusedMultiplyAdd((double)period * period, val, -2 * oldWSum + oldSum);
double deltaP = Math.FusedMultiplyAdd((double)period * period, val, (-2 * oldWSum) + oldSum);
double yP = deltaP - psumComp;
double tP = psum + yP;
psumComp = (tP - psum) - yP;
+14 -14
View File
@@ -86,9 +86,9 @@ public sealed class Qrma : AbstractBase
// Faulhaber closed-form power sums (O(1))
double s1 = n * (n - 1.0) * 0.5; // Σx
double s2 = n * (n - 1.0) * (2.0 * n - 1.0) / 6.0; // Σx²
double s2 = n * (n - 1.0) * ((2.0 * n) - 1.0) / 6.0; // Σx²
double s3 = s1 * s1; // Σx³ = [N(N-1)/2]²
double s4 = n * (n - 1.0) * (2.0 * n - 1.0) * Math.FusedMultiplyAdd(3.0 * n, n - 1.0, -1.0) / 30.0; // Σx⁴
double s4 = n * (n - 1.0) * ((2.0 * n) - 1.0) * Math.FusedMultiplyAdd(3.0 * n, n - 1.0, -1.0) / 30.0; // Σx⁴
// Cross-products in O(N)
double r0 = 0, r1 = 0, r2 = 0;
@@ -109,9 +109,9 @@ public sealed class Qrma : AbstractBase
// [ S2 S3 S4 ] [c] [r2]
// Cramer's rule: det of coefficient matrix
double det = Math.FusedMultiplyAdd(n, s2 * s4 - s3 * s3,
Math.FusedMultiplyAdd(-s1, s1 * s4 - s3 * s2,
s2 * (s1 * s3 - s2 * s2)));
double det = Math.FusedMultiplyAdd(n, (s2 * s4) - (s3 * s3),
Math.FusedMultiplyAdd(-s1, (s1 * s4) - (s3 * s2),
s2 * ((s1 * s3) - (s2 * s2))));
if (Math.Abs(det) < 1e-20)
{
@@ -121,19 +121,19 @@ public sealed class Qrma : AbstractBase
double invDet = 1.0 / det;
// det_a: replace column 0 with [r0, r1, r2]
double detA = Math.FusedMultiplyAdd(r0, s2 * s4 - s3 * s3,
Math.FusedMultiplyAdd(-s1, r1 * s4 - r2 * s3,
s2 * (r1 * s3 - r2 * s2)));
double detA = Math.FusedMultiplyAdd(r0, (s2 * s4) - (s3 * s3),
Math.FusedMultiplyAdd(-s1, (r1 * s4) - (r2 * s3),
s2 * ((r1 * s3) - (r2 * s2))));
// det_b: replace column 1 with [r0, r1, r2]
double detB = Math.FusedMultiplyAdd(n, r1 * s4 - r2 * s3,
Math.FusedMultiplyAdd(-r0, s1 * s4 - s3 * s2,
s2 * (s1 * r2 - s2 * r1)));
double detB = Math.FusedMultiplyAdd(n, (r1 * s4) - (r2 * s3),
Math.FusedMultiplyAdd(-r0, (s1 * s4) - (s3 * s2),
s2 * ((s1 * r2) - (s2 * r1))));
// det_c: replace column 2 with [r0, r1, r2]
double detC = Math.FusedMultiplyAdd(n, s2 * r2 - s3 * r1,
Math.FusedMultiplyAdd(-s1, s1 * r2 - s2 * r1,
r0 * (s1 * s3 - s2 * s2)));
double detC = Math.FusedMultiplyAdd(n, (s2 * r2) - (s3 * r1),
Math.FusedMultiplyAdd(-s1, (s1 * r2) - (s2 * r1),
r0 * ((s1 * s3) - (s2 * s2))));
double a = detA * invDet;
double b = detB * invDet;
+6 -6
View File
@@ -146,10 +146,10 @@ public sealed class Sgma : AbstractBase
{
0 => 1.0,
1 => 1.0 - Math.Abs(normX),
2 => 1.0 - normX * normX,
2 => 1.0 - (normX * normX),
3 => 1.0 - Math.Abs(normX * normX * normX),
4 => 1.0 - normX * normX * normX * normX,
_ => 1.0 - normX * normX
4 => 1.0 - (normX * normX * normX * normX),
_ => 1.0 - (normX * normX)
};
weights[i] = w;
@@ -549,10 +549,10 @@ public sealed class Sgma : AbstractBase
{
0 => 1.0,
1 => 1.0 - Math.Abs(normX),
2 => 1.0 - normX * normX,
2 => 1.0 - (normX * normX),
3 => 1.0 - Math.Abs(normX * normX * normX),
4 => 1.0 - normX * normX * normX * normX,
_ => 1.0 - normX * normX
4 => 1.0 - (normX * normX * normX * normX),
_ => 1.0 - (normX * normX)
};
sum2 = Math.FusedMultiplyAdd(window[i], w, sum2);
+3 -3
View File
@@ -450,7 +450,7 @@ public sealed class Sma : AbstractBase
}
var vInvPeriod = Vector512.Create(invPeriod);
int simdEnd = period + (len - period) / VectorWidth * VectorWidth;
int simdEnd = period + ((len - period) / VectorWidth * VectorWidth);
for (int i = period; i < simdEnd; i += VectorWidth)
{
@@ -517,7 +517,7 @@ public sealed class Sma : AbstractBase
var vInvPeriod = Vector256.Create(invPeriod);
var vZero = Vector256<double>.Zero;
int simdEnd = period + (len - period) / VectorWidth * VectorWidth;
int simdEnd = period + ((len - period) / VectorWidth * VectorWidth);
for (int i = period; i < simdEnd; i += VectorWidth)
{
@@ -581,7 +581,7 @@ public sealed class Sma : AbstractBase
}
var vInvPeriod = Vector128.Create(invPeriod);
int simdEnd = period + (len - period) / VectorWidth * VectorWidth;
int simdEnd = period + ((len - period) / VectorWidth * VectorWidth);
for (int i = period; i < simdEnd; i += VectorWidth)
{
+2 -2
View File
@@ -32,7 +32,7 @@ public sealed class Trima : AbstractBase
_period = period;
int p1 = (period + 1) / 2;
int p2 = period / 2 + 1;
int p2 = (period / 2) + 1;
_sma1 = new Sma(p1);
_sma2 = new Sma(p2);
@@ -150,7 +150,7 @@ public sealed class Trima : AbstractBase
}
int p1 = (period + 1) / 2;
int p2 = period / 2 + 1;
int p2 = (period / 2) + 1;
double[] tempArray = ArrayPool<double>.Shared.Rent(source.Length);
Span<double> tempSpan = tempArray.AsSpan(0, source.Length);
+8 -8
View File
@@ -62,10 +62,10 @@ public sealed class Tsf : AbstractBase
_sumX = 0.5 * period * (period - 1);
// sumX2 = 0^2 + ... + (n-1)^2 = (n-1)n(2n-1)/6
double sumX2 = (period - 1.0) * period * (2.0 * period - 1.0) / 6.0;
double sumX2 = (period - 1.0) * period * ((2.0 * period) - 1.0) / 6.0;
// denominator = n * sumX2 - sumX^2
_denominator = period * sumX2 - _sumX * _sumX;
_denominator = (period * sumX2) - (_sumX * _sumX);
_s.LastValidValue = double.NaN;
}
@@ -175,8 +175,8 @@ public sealed class Tsf : AbstractBase
{
// Recalculate constants for smaller n during warmup
sx = 0.5 * n * (n - 1);
double sx2 = (n - 1.0) * n * (2.0 * n - 1.0) / 6.0;
denom = n * sx2 - sx * sx;
double sx2 = (n - 1.0) * n * ((2.0 * n) - 1.0) / 6.0;
denom = (n * sx2) - (sx * sx);
}
if (Math.Abs(denom) < 1e-10)
@@ -310,8 +310,8 @@ public sealed class Tsf : AbstractBase
// Precalculate constants for full period
double fullSumX = 0.5 * period * (period - 1);
double fullSumX2 = (period - 1.0) * period * (2.0 * period - 1.0) / 6.0;
double fullDenom = period * fullSumX2 - fullSumX * fullSumX;
double fullSumX2 = (period - 1.0) * period * ((2.0 * period) - 1.0) / 6.0;
double fullDenom = (period * fullSumX2) - (fullSumX * fullSumX);
for (int i = 0; i < len; i++)
{
@@ -345,8 +345,8 @@ public sealed class Tsf : AbstractBase
{
double n = count;
double sx = 0.5 * n * (n - 1);
double sx2 = (n - 1.0) * n * (2.0 * n - 1.0) / 6.0;
double denom = n * sx2 - sx * sx;
double sx2 = (n - 1.0) * n * ((2.0 * n) - 1.0) / 6.0;
double denom = (n * sx2) - (sx * sx);
if (Math.Abs(denom) < 1e-10)
{
+1 -1
View File
@@ -98,7 +98,7 @@ public sealed class Tukey_w : AbstractBase
{
w = 0.5 * (1.0 - Math.Cos(2.0 * Math.PI * i / aN));
}
else if (i > N - aN * 0.5)
else if (i > N - (aN * 0.5))
{
w = 0.5 * (1.0 - Math.Cos(2.0 * Math.PI * (N - i) / aN));
}
+6 -6
View File
@@ -461,7 +461,7 @@ public sealed class Wma : AbstractBase
var vInvDivisor = Vector512.Create(invDivisor);
var vPeriod = Vector512.Create((double)period);
int simdEnd = period + (len - period) / vectorWidth * vectorWidth;
int simdEnd = period + ((len - period) / vectorWidth * vectorWidth);
var vSumState = Vector512.Create(sum);
var vWsumState = Vector512.Create(wsum);
@@ -518,7 +518,7 @@ public sealed class Wma : AbstractBase
double oldSum = sum;
double oldest = Unsafe.Add(ref srcRef, idx - period);
sum = sum - oldest + val;
wsum = wsum - oldSum + period * val;
wsum = wsum - oldSum + (period * val);
Unsafe.Add(ref outRef, idx) = wsum * invDivisor;
}
}
@@ -559,7 +559,7 @@ public sealed class Wma : AbstractBase
var vInvDivisor = Vector256.Create(invDivisor);
var vPeriod = Vector256.Create((double)period);
var vZero = Vector256<double>.Zero;
int simdEnd = period + ((len - period) / vectorWidth) * vectorWidth;
int simdEnd = period + (((len - period) / vectorWidth) * vectorWidth);
var vSumState = Vector256.Create(sum);
var vWsumState = Vector256.Create(wsum);
@@ -708,7 +708,7 @@ public sealed class Wma : AbstractBase
double oldSum = sum;
double oldest = Unsafe.Add(ref srcRef, idx - period);
sum = sum - oldest + val;
wsum = wsum - oldSum + period * val;
wsum = wsum - oldSum + (period * val);
Unsafe.Add(ref outRef, idx) = wsum * invDivisor;
}
}
@@ -747,7 +747,7 @@ public sealed class Wma : AbstractBase
}
var vInvDivisor = Vector128.Create(invDivisor);
int simdEnd = period + ((len - period) / vectorWidth) * vectorWidth;
int simdEnd = period + (((len - period) / vectorWidth) * vectorWidth);
double sumState = sum;
double wsumState = wsum;
@@ -841,7 +841,7 @@ public sealed class Wma : AbstractBase
double oldSum = sum;
double oldest = Unsafe.Add(ref srcRef, idx - period);
sum = sum - oldest + val;
wsum = wsum - oldSum + period * val;
wsum = wsum - oldSum + (period * val);
Unsafe.Add(ref outRef, idx) = wsum * invDivisor;
}
}