mirror of
https://github.com/mihakralj/QuanTAlib.git
synced 2026-08-23 04:58:08 +00:00
[CodeFactor] Apply fixes to commit 9697fac
This commit is contained in:
@@ -136,9 +136,9 @@ public sealed class TtmLrc : ITValuePublisher
|
||||
// sumX = 0 + 1 + ... + (n-1) = n(n-1)/2
|
||||
_sumX = 0.5 * period * (period - 1);
|
||||
// sumX² = 0² + 1² + ... + (n-1)² = (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 * sumX² - sumX²
|
||||
_denominator = period * sumX2 - _sumX * _sumX;
|
||||
_denominator = (period * sumX2) - (_sumX * _sumX);
|
||||
|
||||
Reset();
|
||||
}
|
||||
@@ -253,8 +253,8 @@ public sealed class TtmLrc : ITValuePublisher
|
||||
if (count < _period)
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
double slope, intercept, regression;
|
||||
@@ -267,8 +267,8 @@ public sealed class TtmLrc : ITValuePublisher
|
||||
}
|
||||
else
|
||||
{
|
||||
slope = (n * sumXY - sx * sumY) / denom;
|
||||
intercept = (sumY - slope * sx) / n;
|
||||
slope = ((n * sumXY) - (sx * sumY)) / denom;
|
||||
intercept = (sumY - (slope * sx)) / n;
|
||||
// Regression value at current point (x = count - 1)
|
||||
regression = Math.FusedMultiplyAdd(slope, count - 1, intercept);
|
||||
}
|
||||
@@ -304,8 +304,8 @@ public sealed class TtmLrc : ITValuePublisher
|
||||
Midline = new TValue(input.Time, regression);
|
||||
Upper1 = new TValue(input.Time, regression + stdDev);
|
||||
Lower1 = new TValue(input.Time, regression - stdDev);
|
||||
Upper2 = new TValue(input.Time, regression + 2.0 * stdDev);
|
||||
Lower2 = new TValue(input.Time, regression - 2.0 * stdDev);
|
||||
Upper2 = new TValue(input.Time, regression + (2.0 * stdDev));
|
||||
Lower2 = new TValue(input.Time, regression - (2.0 * stdDev));
|
||||
|
||||
PubEvent(Midline, isNew);
|
||||
return Midline;
|
||||
@@ -412,8 +412,8 @@ public sealed class TtmLrc : ITValuePublisher
|
||||
|
||||
// Precompute constants for full period
|
||||
double sumXFull = 0.5 * period * (period - 1);
|
||||
double sumX2Full = (period - 1.0) * period * (2.0 * period - 1.0) / 6.0;
|
||||
double denomFull = period * sumX2Full - sumXFull * sumXFull;
|
||||
double sumX2Full = (period - 1.0) * period * ((2.0 * period) - 1.0) / 6.0;
|
||||
double denomFull = (period * sumX2Full) - (sumXFull * sumXFull);
|
||||
|
||||
// Track last valid value for NaN substitution
|
||||
double lastValid = double.NaN;
|
||||
@@ -483,8 +483,8 @@ public sealed class TtmLrc : ITValuePublisher
|
||||
if (count < period)
|
||||
{
|
||||
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);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -502,8 +502,8 @@ public sealed class TtmLrc : ITValuePublisher
|
||||
}
|
||||
else
|
||||
{
|
||||
slope = (n * sumXY - sx * sumY) / denom;
|
||||
intercept = (sumY - slope * sx) / n;
|
||||
slope = ((n * sumXY) - (sx * sumY)) / denom;
|
||||
intercept = (sumY - (slope * sx)) / n;
|
||||
regression = Math.FusedMultiplyAdd(slope, count - 1, intercept);
|
||||
}
|
||||
|
||||
@@ -533,8 +533,8 @@ public sealed class TtmLrc : ITValuePublisher
|
||||
midline[i] = regression;
|
||||
upper1[i] = regression + stdDev;
|
||||
lower1[i] = regression - stdDev;
|
||||
upper2[i] = regression + 2.0 * stdDev;
|
||||
lower2[i] = regression - 2.0 * stdDev;
|
||||
upper2[i] = regression + (2.0 * stdDev);
|
||||
lower2[i] = regression - (2.0 * stdDev);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user