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
+15 -3
View File
@@ -24,6 +24,7 @@ public sealed class Wma : AbstractBase
private readonly RingBuffer _buffer;
private readonly ITValuePublisher? _source;
private readonly TValuePublishedHandler? _handler;
private bool _disposed;
[StructLayout(LayoutKind.Auto)]
private record struct State(double Sum, double WSum, double LastInput, double LastValidValue, int TickCount, bool HasSeenValidData);
@@ -68,9 +69,13 @@ public sealed class Wma : AbstractBase
protected override void Dispose(bool disposing)
{
if (_source != null && _handler != null)
if (!_disposed)
{
_source.Pub -= _handler;
if (disposing && _source != null && _handler != null)
{
_source.Pub -= _handler;
}
_disposed = true;
}
base.Dispose(disposing);
}
@@ -298,6 +303,13 @@ public sealed class Wma : AbstractBase
CalculateScalarCore(source, output, period);
}
public static (TSeries Results, Wma Indicator) Calculate(TSeries source, int period)
{
var indicator = new Wma(period);
TSeries results = indicator.Update(source);
return (results, indicator);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
private static void CalculateScalarCore(ReadOnlySpan<double> source, Span<double> output, int period)
{
@@ -856,4 +868,4 @@ public sealed class Wma : AbstractBase
Unsafe.Add(ref outRef, idx) = wsum * invDivisor;
}
}
}
}