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
+1 -1
View File
@@ -151,7 +151,7 @@ public class BilateralTests
var tValues = series.Values.ToArray();
var spanInput = new ReadOnlySpan<double>(tValues);
var spanOutput = new double[tValues.Length];
Bilateral.Calculate(spanInput, spanOutput, period);
Bilateral.Batch(spanInput, spanOutput, period);
double spanResult = spanOutput[^1];
// 3. Streaming Mode
@@ -96,7 +96,7 @@ public sealed class BilateralValidationTests : IDisposable
{
// Calculate QuanTAlib Bilateral (Span API)
double[] qOutput = new double[sourceData.Length];
global::QuanTAlib.Bilateral.Calculate(sourceData.AsSpan(), qOutput.AsSpan(), period, sigmaSRatio, sigmaRMult);
global::QuanTAlib.Bilateral.Batch(sourceData.AsSpan(), qOutput.AsSpan(), period, sigmaSRatio, sigmaRMult);
// Calculate Reference Bilateral
var refResult = GetReferenceData(period, sigmaSRatio, sigmaRMult);
+9 -9
View File
@@ -332,17 +332,11 @@ public sealed class Bilateral : AbstractBase
/// <summary>
/// Calculates bilateral filter values for a TSeries and returns both results and a primed indicator.
/// </summary>
public static (TSeries Results, Bilateral Indicator) Calculate(TSeries source, int period, double sigmaSRatio = 0.5, double sigmaRMult = 1.0)
{
var indicator = new Bilateral(period, sigmaSRatio, sigmaRMult);
var results = indicator.Update(source);
return (results, indicator);
}
/// <summary>
/// Calculates bilateral filter values using spans (zero allocation in hot path).
/// </summary>
public static void Calculate(ReadOnlySpan<double> source, Span<double> destination, int period, double sigmaSRatio = 0.5, double sigmaRMult = 1.0)
private static void BatchCore(ReadOnlySpan<double> source, Span<double> destination, int period, double sigmaSRatio = 0.5, double sigmaRMult = 1.0)
{
if (period <= 0)
{
@@ -520,7 +514,13 @@ public sealed class Bilateral : AbstractBase
/// </summary>
public static void Batch(ReadOnlySpan<double> source, Span<double> destination, int period, double sigmaSRatio = 0.5, double sigmaRMult = 1.0)
{
Calculate(source, destination, period, sigmaSRatio, sigmaRMult);
BatchCore(source, destination, period, sigmaSRatio, sigmaRMult);
}
public static (TSeries Results, Bilateral Indicator) Calculate(TSeries source, int period, double sigmaSRatio = 0.5, double sigmaRMult = 1.0)
{
var indicator = new Bilateral(period, sigmaSRatio, sigmaRMult);
var results = indicator.Update(source);
return (results, indicator);
}
/// <summary>
@@ -534,4 +534,4 @@ public sealed class Bilateral : AbstractBase
}
base.Dispose(disposing);
}
}
}