mirror of
https://github.com/mihakralj/QuanTAlib.git
synced 2026-07-27 17:27:43 +00:00
67ad6f0cba
Comprehensive refactor across all indicators replacing the periodic ResyncInterval-based drift correction (every 1000 ticks recalculate from scratch) with Kahan compensated summation for running sums. Key changes: - Remove ResyncInterval constants and TickCount fields from all State records - Add Kahan compensation fields (SumComp, SumSqComp, etc.) to State records - Replace naive sum += val - removed with Kahan delta pattern - Remove Resync()/RecalculateSum() methods that did O(N) recalculation - Update batch/SIMD paths to use Kahan compensation instead of resync loops - IIR filters (EMA, REMA, RGMA) simplified: inherently self-correcting - Version bump to 0.8.7 - Build system: README version stamping via Directory.Build.props - Minor doc/test tolerance adjustments for new numerical characteristics Affected modules: channels, core, cycles, dynamics, errors, momentum, oscillators, statistics, trends_FIR, trends_IIR, volatility, volume
45 lines
1.6 KiB
XML
45 lines
1.6 KiB
XML
|
|
<Project Sdk="Microsoft.NET.Sdk">
|
|
<PropertyGroup>
|
|
<OutputType>Exe</OutputType>
|
|
<TargetFramework>net10.0</TargetFramework>
|
|
<ImplicitUsings>enable</ImplicitUsings>
|
|
<Nullable>enable</Nullable>
|
|
<LangVersion>latest</LangVersion>
|
|
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
|
|
|
<!-- BenchmarkDotNet is NOT compatible with NativeAOT (uses reflection/Assembly.Location) -->
|
|
<IsAotCompatible>false</IsAotCompatible>
|
|
<EnableTrimAnalyzer>false</EnableTrimAnalyzer>
|
|
<PublishAot>false</PublishAot>
|
|
|
|
<!-- Suppress analyzer noise in benchmark harness -->
|
|
<NoWarn>$(NoWarn);CA1822;CA1050;S1075</NoWarn>
|
|
|
|
<!-- Prevent duplicate assembly info when sharing directory with perf.csproj.
|
|
We keep GenerateAssemblyVersionAttribute so SonarAnalyzer S3904 is satisfied. -->
|
|
<GenerateAssemblyInfo>true</GenerateAssemblyInfo>
|
|
<GenerateTargetFrameworkAttribute>false</GenerateTargetFrameworkAttribute>
|
|
</PropertyGroup>
|
|
|
|
<!-- Exclude the sibling benchmark file (belongs to perf.csproj) -->
|
|
<ItemGroup>
|
|
<Compile Remove="Benchmark.cs" />
|
|
<Compile Remove="obj\perf\**" />
|
|
</ItemGroup>
|
|
|
|
<ItemGroup>
|
|
<ProjectReference Include="..\lib\quantalib.csproj" />
|
|
</ItemGroup>
|
|
|
|
<ItemGroup>
|
|
<!-- Comparison libraries (same versions as perf.csproj) -->
|
|
<PackageReference Include="Skender.Stock.Indicators" Version="2.6.1" />
|
|
<PackageReference Include="Tulip.NETCore" Version="0.8.0.1" />
|
|
<PackageReference Include="TALib.NETCore" Version="0.5.0" />
|
|
|
|
<!-- Benchmarking -->
|
|
<PackageReference Include="BenchmarkDotNet" Version="0.15.3" />
|
|
</ItemGroup>
|
|
</Project>
|