feat(statistics): add Variance indicator with O(1) calculation and usage example

This commit is contained in:
Miha Kralj
2025-12-25 17:18:41 -08:00
parent 9ba89812cd
commit 4ff6dc0ad9
61 changed files with 6069 additions and 99 deletions
+10 -5
View File
@@ -86,11 +86,6 @@ public sealed class Butter : AbstractBase
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public override TValue Update(TValue input, bool isNew = true)
{
if (double.IsNaN(input.Value) || double.IsInfinity(input.Value))
{
return Last;
}
if (isNew)
{
_p_state = _state;
@@ -100,6 +95,11 @@ public sealed class Butter : AbstractBase
_state = _p_state;
}
if (double.IsNaN(input.Value) || double.IsInfinity(input.Value))
{
return Last;
}
double x = input.Value;
double y = _state.Count < 2
? x
@@ -181,6 +181,11 @@ public sealed class Butter : AbstractBase
for (int i = 0; i < source.Length; i++)
{
double x = source[i];
if (double.IsNaN(x) || double.IsInfinity(x))
{
destination[i] = i > 0 ? destination[i - 1] : 0;
continue;
}
double y = i < 2
? x
: (b0 * x + b1 * x1 + b2 * x2 - a1 * y1 - a2 * y2) * invA0;