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
+3 -3
View File
@@ -192,7 +192,7 @@ public class MdaeTests
iterativeResults.Add(mdaeIterative.Update(actual, predicted).Value);
}
var batchResults = Mdae.Calculate(actualSeries, predictedSeries, DefaultPeriod);
var batchResults = Mdae.Batch(actualSeries, predictedSeries, DefaultPeriod);
Assert.Equal(100, iterativeResults.Count);
Assert.Equal(iterativeResults.Count, batchResults.Count);
@@ -237,7 +237,7 @@ public class MdaeTests
predictedArr[i] = pred;
}
var tseriesResult = Mdae.Calculate(actualSeries, predictedSeries, DefaultPeriod);
var tseriesResult = Mdae.Batch(actualSeries, predictedSeries, DefaultPeriod);
Mdae.Batch(actualArr.AsSpan(), predictedArr.AsSpan(), output.AsSpan(), DefaultPeriod);
for (int i = 0; i < 100; i++)
@@ -286,7 +286,7 @@ public class MdaeTests
predicted.Add(DateTime.UtcNow.Ticks, 98);
Assert.Throws<ArgumentException>(() => Mdae.Calculate(actual, predicted, DefaultPeriod));
Assert.Throws<ArgumentException>(() => Mdae.Batch(actual, predicted, DefaultPeriod));
}
[Fact]
+10 -3
View File
@@ -114,7 +114,7 @@ public sealed class Mdae : AbstractBase
public override TSeries Update(TSeries source)
{
throw new NotSupportedException("MdAE requires two inputs. Use Calculate(actualSeries, predictedSeries, period).");
throw new NotSupportedException("MdAE requires two inputs. Use Batch(actualSeries, predictedSeries, period).");
}
public override void Prime(ReadOnlySpan<double> source, TimeSpan? step = null)
@@ -161,7 +161,7 @@ public sealed class Mdae : AbstractBase
return (_sortBuffer[mid - 1] + _sortBuffer[mid]) * 0.5;
}
public static TSeries Calculate(TSeries actual, TSeries predicted, int period)
public static TSeries Batch(TSeries actual, TSeries predicted, int period)
{
if (actual.Count != predicted.Count)
{
@@ -299,6 +299,13 @@ public sealed class Mdae : AbstractBase
}
}
public static (TSeries Results, Mdae Indicator) Calculate(TSeries actual, TSeries predicted, int period)
{
var indicator = new Mdae(period);
TSeries results = Batch(actual, predicted, period);
return (results, indicator);
}
/// <summary>
/// QuickSelect for Span - finds the k-th smallest element in O(n) average time.
/// Uses insertion sort for small arrays and Lomuto partition for larger arrays.
@@ -378,4 +385,4 @@ public sealed class Mdae : AbstractBase
return span[left];
}
}
}