[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
+1 -1
View File
@@ -400,7 +400,7 @@ public sealed class ALaguerre : AbstractBase
s.LastValid = input;
// Filt = (L0 + 2*L1 + 2*L2 + L3) / 6
double result = (s.L0 + 2.0 * s.L1 + 2.0 * s.L2 + s.L3) / 6.0;
double result = (s.L0 + (2.0 * s.L1) + (2.0 * s.L2) + s.L3) / 6.0;
s.LastResult = result;
return result;
}
+2 -3
View File
@@ -159,7 +159,7 @@ public sealed class Bpf : AbstractBase
// Highpass Filter Step
// hp = hp_c1 * (val - 2*src1 + src2) + hp_c2 * hp1 + hp_c3 * hp2
double term1 = _hpC1 * (val - 2.0 * _state.Src1 + _state.Src2);
double term1 = _hpC1 * (val - (2.0 * _state.Src1) + _state.Src2);
double hp = Math.FusedMultiplyAdd(_hpC2, _state.Hp1, Math.FusedMultiplyAdd(_hpC3, _state.Hp2, term1));
// Lowpass Filter Step (Bandpass output)
@@ -187,7 +187,6 @@ public sealed class Bpf : AbstractBase
return indicator.Update(source);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static void Batch(ReadOnlySpan<double> source, Span<double> output, int lowerPeriod, int upperPeriod)
{
@@ -240,7 +239,7 @@ public sealed class Bpf : AbstractBase
}
// Highpass
double term1 = hpC1 * (val - 2.0 * src1 + src2);
double term1 = hpC1 * (val - (2.0 * src1) + src2);
double hp = Math.FusedMultiplyAdd(hpC2, hp1, Math.FusedMultiplyAdd(hpC3, hp2, term1));
// Lowpass
+1 -1
View File
@@ -93,7 +93,7 @@ public sealed class Butter2 : AbstractBase
DateTime baseTime = DateTime.UtcNow;
for (int i = 0; i < source.Length; i++)
{
Update(new TValue(baseTime + interval * i, source[i]));
Update(new TValue(baseTime + (interval * i), source[i]));
}
}
+4 -4
View File
@@ -57,7 +57,7 @@ public sealed class Butter3 : AbstractBase
double c1 = a1 * a1;
coef2 = b1 + c1;
coef3 = -(c1 + b1 * c1);
coef3 = -(c1 + (b1 * c1));
coef4 = c1 * c1;
coef1 = (1.0 - b1 + c1) * (1.0 - c1) / 8.0;
}
@@ -87,7 +87,7 @@ public sealed class Butter3 : AbstractBase
DateTime baseTime = DateTime.UtcNow;
for (int i = 0; i < source.Length; i++)
{
Update(new TValue(baseTime + interval * i, source[i]));
Update(new TValue(baseTime + (interval * i), source[i]));
}
}
@@ -117,7 +117,7 @@ public sealed class Butter3 : AbstractBase
: Math.FusedMultiplyAdd(_coef4, _state.Y3,
Math.FusedMultiplyAdd(_coef3, _state.Y2,
Math.FusedMultiplyAdd(_coef2, _state.Y1,
_coef1 * (x + 3.0 * _state.X1 + 3.0 * _state.X2 + _state.X3))));
_coef1 * (x + (3.0 * _state.X1) + (3.0 * _state.X2) + _state.X3))));
// Update state: shift history
_state.X3 = _state.X2;
@@ -203,7 +203,7 @@ public sealed class Butter3 : AbstractBase
: Math.FusedMultiplyAdd(coef4, y3,
Math.FusedMultiplyAdd(coef3, y2,
Math.FusedMultiplyAdd(coef2, y1,
coef1 * (x + 3.0 * x1 + 3.0 * x2 + x3))));
coef1 * (x + (3.0 * x1) + (3.0 * x2) + x3))));
x3 = x2;
x2 = x1;
+5 -5
View File
@@ -226,7 +226,7 @@ public sealed class Cfitz : AbstractBase
}
// Endpoint correction: b̃ = -0.5*B_0 - Σ B_j
double btilde = -0.5 * _b0 - sumBj;
double btilde = (-0.5 * _b0) - sumBj;
weightedSum += btilde * _history[0];
return weightedSum;
@@ -303,7 +303,7 @@ public sealed class Cfitz : AbstractBase
ws += bWeights[j] * source[j]; // y_{j+1} in 0-index is source[j]
sBj += bWeights[j];
}
double bt = -0.5 * b0 - sBj;
double bt = (-0.5 * b0) - sBj;
ws += bt * source[T - 1];
output[t] = ws;
}
@@ -317,7 +317,7 @@ public sealed class Cfitz : AbstractBase
ws += bWeights[j] * source[T - 1 - j];
sBj += bWeights[j];
}
double bt = -0.5 * b0 - sBj;
double bt = (-0.5 * b0) - sBj;
ws += bt * source[0];
output[t] = ws;
}
@@ -339,7 +339,7 @@ public sealed class Cfitz : AbstractBase
sumFwd += bWeights[j];
}
// Far endpoint correction
double btFwd = -0.5 * b0 - sumFwd;
double btFwd = (-0.5 * b0) - sumFwd;
ws += btFwd * source[T - 1];
// Backward terms: j=1..tp-2 = t-1 in 0-indexed
@@ -351,7 +351,7 @@ public sealed class Cfitz : AbstractBase
sumBwd += bWeights[j];
}
// Near endpoint correction
double btBwd = -0.5 * b0 - sumBwd;
double btBwd = (-0.5 * b0) - sumBwd;
ws += btBwd * source[0];
output[t] = ws;
+7 -8
View File
@@ -72,9 +72,9 @@ public sealed class Cheby1 : AbstractBase
double omegaD = coshMu * Wc;
double K = Math.FusedMultiplyAdd(sigma, sigma, omegaD * omegaD);
double a0z = 1.0 - 2.0 * sigma + K;
double a1z = 2.0 * K - 2.0;
double a2z = 1.0 + 2.0 * sigma + K;
double a0z = 1.0 - (2.0 * sigma) + K;
double a1z = (2.0 * K) - 2.0;
double a2z = 1.0 + (2.0 * sigma) + K;
double b0z = K;
double b1z = 2.0 * K;
double b2z = K;
@@ -202,7 +202,6 @@ public sealed class Cheby1 : AbstractBase
return indicator.Update(source);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static void Batch(ReadOnlySpan<double> source, Span<double> output, int period, double ripple = 1.0)
{
@@ -231,11 +230,11 @@ public sealed class Cheby1 : AbstractBase
double coshMu = Math.Cosh(mu);
double sigma = -sinhMu * Wc;
double omegaD = coshMu * Wc;
double K = sigma * sigma + omegaD * omegaD;
double K = (sigma * sigma) + (omegaD * omegaD);
double a0z = 1.0 - 2.0 * sigma + K;
double a1z = 2.0 * K - 2.0;
double a2z = 1.0 + 2.0 * sigma + K;
double a0z = 1.0 - (2.0 * sigma) + K;
double a1z = (2.0 * K) - 2.0;
double a2z = 1.0 + (2.0 * sigma) + K;
double b0z = K;
double b1z = 2.0 * K;
double b2z = K;
+8 -8
View File
@@ -77,12 +77,12 @@ public sealed class Cheby2 : AbstractBase
double Kz = omegaZ * omegaZ;
double dcGain = Kz / Kp;
double a0z = 1.0 - 2.0 * sigmaP + Kp;
double a1z = 2.0 * Kp - 2.0;
double a2z = 1.0 + 2.0 * sigmaP + Kp;
double a0z = 1.0 - (2.0 * sigmaP) + Kp;
double a1z = (2.0 * Kp) - 2.0;
double a2z = 1.0 + (2.0 * sigmaP) + Kp;
double b0z = dcGain * (1.0 + Kz);
double b1z = dcGain * (2.0 * Kz - 2.0);
double b1z = dcGain * ((2.0 * Kz) - 2.0);
double b2z = dcGain * (1.0 + Kz);
// Normalize
@@ -258,12 +258,12 @@ public sealed class Cheby2 : AbstractBase
double Kz = omegaZ * omegaZ;
double dcGain = Kz / Kp;
double a0z = 1.0 - 2.0 * sigmaP + Kp;
double a1z = 2.0 * Kp - 2.0;
double a2z = 1.0 + 2.0 * sigmaP + Kp;
double a0z = 1.0 - (2.0 * sigmaP) + Kp;
double a1z = (2.0 * Kp) - 2.0;
double a2z = 1.0 + (2.0 * sigmaP) + Kp;
double b0z = dcGain * (1.0 + Kz);
double b1z = dcGain * (2.0 * Kz - 2.0);
double b1z = dcGain * ((2.0 * Kz) - 2.0);
double b2z = dcGain * (1.0 + Kz);
double b0 = b0z / a0z;
+3 -3
View File
@@ -49,7 +49,7 @@ public sealed class Edcf : AbstractBase
// But the inner loop looks back within the same window, so we only need 'length' samples
// However, the EasyLanguage code accesses Price[count + LookBack] where count goes to Length-1
// and LookBack goes to Length-1, so max index = 2*(Length-1). We need 2*Length - 1 in the buffer.
_buffer = new RingBuffer(2 * length - 1);
_buffer = new RingBuffer((2 * length) - 1);
WarmupPeriod = length;
Name = $"Edcf({_length})";
}
@@ -215,12 +215,12 @@ public sealed class Edcf : AbstractBase
public override void Prime(ReadOnlySpan<double> source, TimeSpan? step = null)
{
long initialTicks = DateTime.UtcNow.Ticks - source.Length * (step?.Ticks ?? TimeSpan.FromSeconds(1).Ticks);
long initialTicks = DateTime.UtcNow.Ticks - (source.Length * (step?.Ticks ?? TimeSpan.FromSeconds(1).Ticks));
TimeSpan increment = step ?? TimeSpan.FromSeconds(1);
for (int i = 0; i < source.Length; i++)
{
Update(new TValue(initialTicks + i * increment.Ticks, source[i]));
Update(new TValue(initialTicks + (i * increment.Ticks), source[i]));
}
}
+10 -11
View File
@@ -65,7 +65,7 @@ public sealed class Elliptic : AbstractBase
double sigma_scaled = C_sigma * Wc;
double Kp_scaled = C_Kp_norm * Wc * Wc;
double a0_denom = 1.0 - 2.0 * sigma_scaled + Kp_scaled;
double a0_denom = 1.0 - (2.0 * sigma_scaled) + Kp_scaled;
if (Math.Abs(a0_denom) < 1e-9)
{
a0_denom = 1e-9;
@@ -73,12 +73,12 @@ public sealed class Elliptic : AbstractBase
const double norm_factor = C_Kp_norm / (C_k * C_wz * C_wz);
double b0_val = norm_factor * C_k * (1.0 + omega_z_scaled * omega_z_scaled) / a0_denom;
double b1_val = norm_factor * C_k * (2.0 * omega_z_scaled * omega_z_scaled - 2.0) / a0_denom;
double b0_val = norm_factor * C_k * (1.0 + (omega_z_scaled * omega_z_scaled)) / a0_denom;
double b1_val = norm_factor * C_k * ((2.0 * omega_z_scaled * omega_z_scaled) - 2.0) / a0_denom;
double b2_val = b0_val;
double a1_val = (2.0 * Kp_scaled - 2.0) / a0_denom;
double a2_val = (1.0 + 2.0 * sigma_scaled + Kp_scaled) / a0_denom;
double a1_val = ((2.0 * Kp_scaled) - 2.0) / a0_denom;
double a2_val = (1.0 + (2.0 * sigma_scaled) + Kp_scaled) / a0_denom;
// Validate and Normalize for Unity Gain at DC
// DC Gain = (b0 + b1 + b2) / (1 + a1 + a2)
@@ -207,7 +207,6 @@ public sealed class Elliptic : AbstractBase
return indicator.Update(source);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static void Batch(ReadOnlySpan<double> source, Span<double> output, int period)
{
@@ -255,7 +254,7 @@ public sealed class Elliptic : AbstractBase
double sigma_scaled = C_sigma * Wc;
double Kp_scaled = C_Kp_norm * Wc * Wc;
double a0_denom = 1.0 - 2.0 * sigma_scaled + Kp_scaled;
double a0_denom = 1.0 - (2.0 * sigma_scaled) + Kp_scaled;
if (Math.Abs(a0_denom) < 1e-9)
{
a0_denom = 1e-9;
@@ -263,12 +262,12 @@ public sealed class Elliptic : AbstractBase
const double norm_factor = C_Kp_norm / (C_k * C_wz * C_wz);
double b0 = norm_factor * C_k * (1.0 + omega_z_scaled * omega_z_scaled) / a0_denom;
double b1 = norm_factor * C_k * (2.0 * omega_z_scaled * omega_z_scaled - 2.0) / a0_denom;
double b0 = norm_factor * C_k * (1.0 + (omega_z_scaled * omega_z_scaled)) / a0_denom;
double b1 = norm_factor * C_k * ((2.0 * omega_z_scaled * omega_z_scaled) - 2.0) / a0_denom;
double b2 = b0;
double a1 = (2.0 * Kp_scaled - 2.0) / a0_denom;
double a2 = (1.0 + 2.0 * sigma_scaled + Kp_scaled) / a0_denom;
double a1 = ((2.0 * Kp_scaled) - 2.0) / a0_denom;
double a2 = (1.0 + (2.0 * sigma_scaled) + Kp_scaled) / a0_denom;
// Normalize constants for Unity Gain
double sum_b = b0 + b1 + b2;
+2 -2
View File
@@ -50,7 +50,7 @@ public sealed class Gauss : AbstractBase
}
_sigma = sigma;
KernelSize = (int)(2 * Math.Ceiling(3.0 * sigma) + 1);
KernelSize = (int)((2 * Math.Ceiling(3.0 * sigma)) + 1);
WarmupPeriod = KernelSize;
Name = $"Gauss({sigma:F2})";
_buffer = new RingBuffer(KernelSize);
@@ -241,7 +241,7 @@ public sealed class Gauss : AbstractBase
throw new ArgumentException("Source and output spans must be of equal length.", nameof(output));
}
int kernelSize = (int)(2 * Math.Ceiling(3.0 * sigma) + 1);
int kernelSize = (int)((2 * Math.Ceiling(3.0 * sigma)) + 1);
// Use stackalloc for small kernels, ArrayPool for large ones to avoid stack overflow
double[]? rented = null;
+2 -2
View File
@@ -53,7 +53,7 @@ public sealed class Hp : AbstractBase
Lambda = lambda;
double s = Math.Sqrt(lambda);
_alpha = (s * 0.5 - 1.0) / (s * 0.5 + 1.0);
_alpha = ((s * 0.5) - 1.0) / ((s * 0.5) + 1.0);
_alpha = Math.Clamp(_alpha, 0.0001, 0.9999);
_oneMinusAlpha = 1.0 - _alpha;
_halfAlpha = 0.5 * _alpha;
@@ -218,7 +218,7 @@ public sealed class Hp : AbstractBase
}
double s = Math.Sqrt(lambda);
double alpha = (s * 0.5 - 1.0) / (s * 0.5 + 1.0);
double alpha = ((s * 0.5) - 1.0) / ((s * 0.5) + 1.0);
alpha = Math.Clamp(alpha, 0.0001, 0.9999);
double oneMinusAlpha = 1.0 - alpha;
+1 -2
View File
@@ -251,7 +251,7 @@ public sealed class Hpf : AbstractBase
double a = (cosW + sinW - 1.0) / cosW;
double oneMinusA = 1.0 - a;
double t = 1.0 - 0.5 * a;
double t = 1.0 - (0.5 * a);
double c1 = t * t;
double c2 = 2.0 * oneMinusA;
double c3 = oneMinusA * oneMinusA;
@@ -316,7 +316,6 @@ public sealed class Hpf : AbstractBase
return (results, indicator);
}
/// <summary>
/// Unsubscribes from the source publisher if one was provided during construction.
/// </summary>
+1 -1
View File
@@ -263,7 +263,7 @@ public sealed class Laguerre : AbstractBase
s.LastValid = input;
// Filt = (L0 + 2*L1 + 2*L2 + L3) / 6
return (s.L0 + 2.0 * s.L1 + 2.0 * s.L2 + s.L3) / 6.0;
return (s.L0 + (2.0 * s.L1) + (2.0 * s.L2) + s.L3) / 6.0;
}
/// <summary>
+2 -2
View File
@@ -131,7 +131,7 @@ public sealed class OneEuro : AbstractBase
s.DxHat = Math.FusedMultiplyAdd(_alphaD, dx - s.DxHat, s.DxHat);
// Step 3: Adaptive cutoff
double fc = MinCutoff + Beta * Math.Abs(s.DxHat);
double fc = MinCutoff + (Beta * Math.Abs(s.DxHat));
// Step 4: Smoothing factor α = r / (r + 1), r = 2π·fc
double r = 2.0 * Math.PI * fc;
@@ -223,7 +223,7 @@ public sealed class OneEuro : AbstractBase
dxHat = Math.FusedMultiplyAdd(alphaD, dx - dxHat, dxHat);
// Adaptive cutoff
double fc = minCutoff + beta * Math.Abs(dxHat);
double fc = minCutoff + (beta * Math.Abs(dxHat));
// Smoothing factor
double r = 2.0 * Math.PI * fc;
+5 -5
View File
@@ -88,7 +88,7 @@ public sealed class Rls : AbstractBase
_p_P = new double[matSize];
for (int i = 0; i < order; i++)
{
_P[i * order + i] = delta;
_P[(i * order) + i] = delta;
}
// Ring buffer holds order+1 values: current + order past values
@@ -247,7 +247,7 @@ public sealed class Rls : AbstractBase
int rowBase = i * _order;
for (int j = 0; j < _order; j++)
{
_P[rowBase + j] = _invLambda * (_P[rowBase + j] - ki * px[j]);
_P[rowBase + j] = _invLambda * (_P[rowBase + j] - (ki * px[j]));
}
}
}
@@ -304,7 +304,7 @@ public sealed class Rls : AbstractBase
double[] P = new double[matSize];
for (int i = 0; i < order; i++)
{
P[i * order + i] = delta;
P[(i * order) + i] = delta;
}
// Temporary buffers for Px and k
@@ -391,7 +391,7 @@ public sealed class Rls : AbstractBase
int rowBase = i * order;
for (int j = 0; j < order; j++)
{
P[rowBase + j] = invLambda * (P[rowBase + j] - ki * px[j]);
P[rowBase + j] = invLambda * (P[rowBase + j] - (ki * px[j]));
}
}
@@ -414,7 +414,7 @@ public sealed class Rls : AbstractBase
Array.Clear(_p_P);
for (int i = 0; i < _order; i++)
{
_P[i * _order + i] = delta;
_P[(i * _order) + i] = delta;
}
Last = default;
+2 -2
View File
@@ -159,7 +159,7 @@ public sealed class Roofing : AbstractBase
// Stage 1: Highpass Filter (removes trend)
// hp = hpC1 * (val - 2*src1 + src2) + hpC2 * hp1 + hpC3 * hp2
double hpInput = _hpC1 * (val - 2.0 * _state.Src1 + _state.Src2);
double hpInput = _hpC1 * (val - (2.0 * _state.Src1) + _state.Src2);
double hp = Math.FusedMultiplyAdd(_hpC2, _state.Hp1, Math.FusedMultiplyAdd(_hpC3, _state.Hp2, hpInput));
// Stage 2: Super Smoother (removes noise from HP output)
@@ -238,7 +238,7 @@ public sealed class Roofing : AbstractBase
}
// Highpass
double hpInput = hpC1 * (val - 2.0 * src1 + src2);
double hpInput = hpC1 * (val - (2.0 * src1) + src2);
double hp = Math.FusedMultiplyAdd(hpC2, hp1, Math.FusedMultiplyAdd(hpC3, hp2, hpInput));
// Super Smoother
+3 -3
View File
@@ -156,7 +156,7 @@ public sealed class Sak : AbstractBase
break;
case "HP":
_c0 = 1.0 - alpha / 2.0; _b0 = 1; _b1 = -1; _b2 = 0;
_c0 = 1.0 - (alpha / 2.0); _b0 = 1; _b1 = -1; _b2 = 0;
_a1 = decay; _a2 = 0;
break;
@@ -245,7 +245,7 @@ public sealed class Sak : AbstractBase
double oldest = _smaBuf!.IsFull ? _smaBuf.Oldest : 0.0;
_smaBuf.Add(val, isNew);
// _state.Y1 holds the running sum
y = Math.FusedMultiplyAdd(_oneDivN, val, _state.Y1 - _oneDivN * oldest);
y = Math.FusedMultiplyAdd(_oneDivN, val, _state.Y1 - (_oneDivN * oldest));
_state.Y1 = y;
}
else
@@ -388,7 +388,7 @@ public sealed class Sak : AbstractBase
{
double oldest = (smaBuf != null && smaBuf.IsFull) ? smaBuf.Oldest : 0.0;
smaBuf?.Add(val);
y = Math.FusedMultiplyAdd(oneDivN, val, state.Y1 - oneDivN * oldest);
y = Math.FusedMultiplyAdd(oneDivN, val, state.Y1 - (oneDivN * oldest));
state.Y1 = y;
}
else
+6 -6
View File
@@ -69,17 +69,17 @@ public sealed class Sgf : AbstractBase
double weight = 0;
if (_polyOrder == 2)
{
weight = 3.0 * (3.0 * _period * _period - 7.0 - 20.0 * k * k);
weight = 3.0 * ((3.0 * _period * _period) - 7.0 - (20.0 * k * k));
}
else if (_polyOrder == 4)
{
double k2 = k * k;
weight = 15.0 + k2 * (-20.0 + k2 * 6.0);
weight = 15.0 + (k2 * (-20.0 + (k2 * 6.0)));
}
else
{
// Guard against division by zero when halfWindow == 0 (period == 1)
weight = (halfWindow == 0) ? 1.0 : 1.0 - Math.Abs((double)k) / (double)halfWindow;
weight = (halfWindow == 0) ? 1.0 : 1.0 - (Math.Abs((double)k) / (double)halfWindow);
}
_weights[i] = weight;
@@ -287,17 +287,17 @@ public sealed class Sgf : AbstractBase
double weight = 0;
if (polyOrder == 2)
{
weight = 3.0 * (3.0 * period * period - 7.0 - 20.0 * k * k);
weight = 3.0 * ((3.0 * period * period) - 7.0 - (20.0 * k * k));
}
else if (polyOrder == 4)
{
double k2 = k * k;
weight = 15.0 + k2 * (-20.0 + k2 * 6.0);
weight = 15.0 + (k2 * (-20.0 + (k2 * 6.0)));
}
else
{
// Guard against division by zero when halfWindow == 0 (period == 1)
weight = (halfWindow == 0) ? 1.0 : 1.0 - Math.Abs((double)k) / (double)halfWindow;
weight = (halfWindow == 0) ? 1.0 : 1.0 - (Math.Abs((double)k) / (double)halfWindow);
}
weights[i] = weight;
+2 -2
View File
@@ -58,7 +58,7 @@ public sealed class Ssf3 : AbstractBase
double c1 = a1 * a1;
coef2 = b1 + c1;
coef3 = -(c1 + b1 * c1);
coef3 = -(c1 + (b1 * c1));
coef4 = c1 * c1;
coef1 = 1.0 - coef2 - coef3 - coef4;
}
@@ -88,7 +88,7 @@ public sealed class Ssf3 : AbstractBase
DateTime baseTime = DateTime.UtcNow;
for (int i = 0; i < source.Length; i++)
{
Update(new TValue(baseTime + interval * i, source[i]));
Update(new TValue(baseTime + (interval * i), source[i]));
}
}
+2 -2
View File
@@ -56,7 +56,7 @@ public sealed class Usf : AbstractBase
// Precompute coefficients for FMA optimization
_k0 = 1.0 - _c1; // coefficient for val
_k1 = 2.0 * _c1 - _c2; // coefficient for PrevInput1
_k1 = (2.0 * _c1) - _c2; // coefficient for PrevInput1
_k2 = -(_c1 + _c3); // coefficient for PrevInput2
Name = $"Usf({period})";
@@ -281,7 +281,7 @@ public sealed class Usf : AbstractBase
// Precompute coefficients for FMA (outside loop)
double k0 = 1.0 - c1;
double k1 = 2.0 * c1 - c2;
double k1 = (2.0 * c1) - c2;
double k2 = -(c1 + c3);
for (; i < len; i++)
+5 -5
View File
@@ -102,7 +102,7 @@ public sealed class Voss : AbstractBase
double twoPiOverPeriod = 2.0 * Math.PI / period;
_f1 = Math.Cos(twoPiOverPeriod);
double g1 = Math.Cos(bandwidth * twoPiOverPeriod);
_s1 = 1.0 / g1 - Math.Sqrt(1.0 / (g1 * g1) - 1.0);
_s1 = (1.0 / g1) - Math.Sqrt((1.0 / (g1 * g1)) - 1.0);
_vossRing = new double[_order + 1];
_s.LastValid = double.NaN;
@@ -203,11 +203,11 @@ public sealed class Voss : AbstractBase
for (int count = 0; count < _order; count++)
{
int idx = _order - count; // lookback distance
int ringPos = (_vossIdx - idx + ringLen * 2) % ringLen;
int ringPos = (_vossIdx - idx + (ringLen * 2)) % ringLen;
sumC += (double)(count + 1) / _order * _vossRing[ringPos];
}
double vossVal = (double)(3 + _order) / 2.0 * filt - sumC;
double vossVal = ((double)(3 + _order) / 2.0 * filt) - sumC;
// State shifts for next bar
if (isNew)
@@ -261,7 +261,7 @@ public sealed class Voss : AbstractBase
double twoPiOverPeriod = 2.0 * Math.PI / period;
double f1 = Math.Cos(twoPiOverPeriod);
double g1 = Math.Cos(bandwidth * twoPiOverPeriod);
double s1 = 1.0 / g1 - Math.Sqrt(1.0 / (g1 * g1) - 1.0);
double s1 = (1.0 / g1) - Math.Sqrt((1.0 / (g1 * g1)) - 1.0);
int order = 3 * predict;
double[] vossHistory = new double[source.Length];
@@ -319,7 +319,7 @@ public sealed class Voss : AbstractBase
}
}
double vossVal = (double)(3 + order) / 2.0 * filt - sumC;
double vossVal = ((double)(3 + order) / 2.0 * filt) - sumC;
vossHistory[i] = vossVal;
output[i] = vossVal;
+3 -3
View File
@@ -160,17 +160,17 @@ public sealed class Wiener : AbstractBase
// result = mean + k * (src - mean)
double src0 = _buffer[^1];
return mean + kp * (src0 - mean);
return mean + (kp * (src0 - mean));
}
public override void Prime(ReadOnlySpan<double> source, TimeSpan? step = null)
{
long initialTicks = DateTime.UtcNow.Ticks - source.Length * (step?.Ticks ?? TimeSpan.FromSeconds(1).Ticks);
long initialTicks = DateTime.UtcNow.Ticks - (source.Length * (step?.Ticks ?? TimeSpan.FromSeconds(1).Ticks));
TimeSpan increment = step ?? TimeSpan.FromSeconds(1);
for (int i = 0; i < source.Length; i++)
{
Update(new TValue(initialTicks + i * increment.Ticks, source[i]));
Update(new TValue(initialTicks + (i * increment.Ticks), source[i]));
}
}