normalization of methods

This commit is contained in:
Miha Kralj
2026-02-10 21:33:16 -08:00
parent 915d7a007b
commit 6d6259a47d
527 changed files with 10525 additions and 2123 deletions
+5 -5
View File
@@ -104,7 +104,7 @@ public class VarianceTests
var series = new TSeries(times, values);
// 1. Batch Mode (static method)
var batchSeries = Variance.Calculate(series, period);
var batchSeries = Variance.Batch(series, period);
double expected = batchSeries.Last.Value;
// 2. Span Mode (static method with spans)
@@ -165,7 +165,7 @@ public class VarianceTests
var series = new TSeries(times, values);
var tseriesResult = Variance.Calculate(series, 10);
var tseriesResult = Variance.Batch(series, 10);
Variance.Batch(source.AsSpan(), output.AsSpan(), 10);
for (int i = 0; i < count; i++)
@@ -359,7 +359,7 @@ public class VarianceTests
var series = new TSeries(new System.Collections.Generic.List<long>(new long[count]), new System.Collections.Generic.List<double>(data));
// Batch calculation
var batchResult = Variance.Calculate(series, 10);
var batchResult = Variance.Batch(series, 10);
Assert.True(double.IsFinite(batchResult.Last.Value));
Assert.True(batchResult.Last.Value >= 0);
@@ -471,7 +471,7 @@ public class VarianceTests
source.Add(DateTime.UtcNow.Ticks + 1, 20);
source.Add(DateTime.UtcNow.Ticks + 2, 30);
var result = Variance.Calculate(source, 3); // Sample variance by default
var result = Variance.Batch(source, 3); // Sample variance by default
Assert.Equal(3, result.Count);
Assert.Equal(100.0, result.Last.Value, precision: 6); // Sample variance: 200/2 = 100
@@ -485,7 +485,7 @@ public class VarianceTests
source.Add(DateTime.UtcNow.Ticks + 1, 20);
source.Add(DateTime.UtcNow.Ticks + 2, 30);
var result = Variance.Calculate(source, 3, isPopulation: true);
var result = Variance.Batch(source, 3, isPopulation: true);
Assert.Equal(3, result.Count);
Assert.Equal(66.666666, result.Last.Value, precision: 5); // Population variance: 200/3 ≈ 66.67
+9 -2
View File
@@ -168,7 +168,7 @@ public sealed class Variance : AbstractBase
}
}
public static TSeries Calculate(TSeries source, int period, bool isPopulation = false)
public static TSeries Batch(TSeries source, int period, bool isPopulation = false)
{
var variance = new Variance(period, isPopulation);
return variance.Update(source);
@@ -229,6 +229,13 @@ public sealed class Variance : AbstractBase
CalculateScalarCore(source, output, period, isPopulation);
}
public static (TSeries Results, Variance Indicator) Calculate(TSeries source, int period, bool isPopulation = false)
{
var indicator = new Variance(period, isPopulation);
TSeries results = indicator.Update(source);
return (results, indicator);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
private static void CalculateScalarCore(ReadOnlySpan<double> source, Span<double> output, int period, bool isPopulation)
{
@@ -694,4 +701,4 @@ public sealed class Variance : AbstractBase
Unsafe.Add(ref outRef, i) = numerator * invDenom;
}
}
}
}