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
@@ -194,7 +194,7 @@ public class MdapeTests
iterativeResults.Add(mdapeIterative.Update(actualSeries[i], predictedSeries[i]));
}
var batchResults = Mdape.Calculate(actualSeries, predictedSeries, DefaultPeriod);
var batchResults = Mdape.Batch(actualSeries, predictedSeries, DefaultPeriod);
Assert.Equal(iterativeResults.Count, batchResults.Count);
for (int i = 0; i < batchResults.Count; i++)
@@ -238,7 +238,7 @@ public class MdapeTests
predictedArr[i] = pred;
}
var tseriesResult = Mdape.Calculate(actualSeries, predictedSeries, DefaultPeriod);
var tseriesResult = Mdape.Batch(actualSeries, predictedSeries, DefaultPeriod);
Mdape.Batch(actualArr.AsSpan(), predictedArr.AsSpan(), output.AsSpan(), DefaultPeriod);
for (int i = 0; i < tseriesResult.Count; i++)
@@ -287,7 +287,7 @@ public class MdapeTests
predicted.Add(DateTime.UtcNow.Ticks, 98);
Assert.Throws<ArgumentException>(() => Mdape.Calculate(actual, predicted, DefaultPeriod));
Assert.Throws<ArgumentException>(() => Mdape.Batch(actual, predicted, DefaultPeriod));
}
[Fact]
+10 -3
View File
@@ -68,7 +68,7 @@ public sealed class Mdape : AbstractBase
public override TSeries Update(TSeries source)
{
throw new NotSupportedException("MdAPE requires two inputs. Use Calculate(actualSeries, predictedSeries, period).");
throw new NotSupportedException("MdAPE requires two inputs. Use Batch(actualSeries, predictedSeries, period).");
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
@@ -164,7 +164,7 @@ public sealed class Mdape : 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)
{
@@ -263,6 +263,13 @@ public sealed class Mdape : AbstractBase
}
}
public static (TSeries Results, Mdape Indicator) Calculate(TSeries actual, TSeries predicted, int period)
{
var indicator = new Mdape(period);
TSeries results = Batch(actual, predicted, period);
return (results, indicator);
}
/// <summary>
/// Dual-heap based sliding window median calculator.
/// Maintains O(log n) insert/remove and O(1) median query.
@@ -405,4 +412,4 @@ public sealed class Mdape : AbstractBase
}
}
}
}
}