Kolbe.LitMath
0.3.0
See the version list below for details.
dotnet add package Kolbe.LitMath --version 0.3.0
NuGet\Install-Package Kolbe.LitMath -Version 0.3.0
<PackageReference Include="Kolbe.LitMath" Version="0.3.0" />
paket add Kolbe.LitMath --version 0.3.0
#r "nuget: Kolbe.LitMath, 0.3.0"
// Install Kolbe.LitMath as a Cake Addin #addin nuget:?package=Kolbe.LitMath&version=0.3.0 // Install Kolbe.LitMath as a Cake Tool #tool nuget:?package=Kolbe.LitMath&version=0.3.0
LitMath
A collection of AVX-256 accelerated mathematical functions for .NET
I rewrote Exp
, Log
, Sin
, Cos
and Tan
using pure AVX intrinsics, so instead of doing one calculation per core, you can now do 4 doubles or 8 floats per core. I added the Sqrt
, ERF function and a Normal Distribution CDF as well. Exp
, Log
, Sin
, Cos
and Tan
all run between 1e-8
and 1e-10
in worst-case accuracy for double precision.
There are examples in the benchmark and tests. But here is one to get you started anyway.
Calculate n
$e^x$'s in chunks of 4 and store the result in y.
int n = 40;
Span<double> x = new Span<double>(Enumerable.Range(0 , n).Select(z => (double)z/n).ToArray());
Span<double> y = new Span<double>(new double[n]);
LitExp.Exp(ref x, ref y);
Parallel Processing
LitMath leverages SIMD for instruction level parallelism, but not compute cores. For array sizes large enough, it would be a really good idea to do multicore processing. There's an example called LitExpDoubleParallel
in the ExpBenchmark.cs file to see one way to go about this.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net6.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
0.7.0 | 507 | 11/16/2023 |
0.6.4 | 149 | 10/13/2023 |
0.6.3 | 360 | 1/5/2023 |
0.6.2 | 304 | 1/3/2023 |
0.6.1 | 309 | 1/3/2023 |
0.6.0 | 293 | 12/8/2022 |
0.5.8 | 328 | 12/4/2022 |
0.5.7 | 333 | 11/27/2022 |
0.5.6 | 312 | 11/26/2022 |
0.5.5 | 329 | 11/26/2022 |
0.5.4 | 344 | 11/26/2022 |
0.5.3 | 340 | 11/26/2022 |
0.5.2 | 344 | 11/22/2022 |
0.5.1 | 319 | 11/22/2022 |
0.5.0 | 411 | 9/24/2022 |
0.4.1 | 429 | 9/21/2022 |
0.4.0 | 434 | 9/21/2022 |
0.3.8 | 442 | 9/15/2022 |
0.3.7 | 463 | 9/14/2022 |
0.3.6 | 461 | 9/14/2022 |
0.3.5 | 467 | 9/14/2022 |
0.3.4 | 427 | 7/22/2022 |
0.3.3 | 431 | 7/21/2022 |
0.3.2 | 427 | 7/20/2022 |
0.3.1 | 453 | 7/20/2022 |
0.3.0 | 455 | 7/18/2022 |
0.2.1 | 457 | 7/9/2022 |
0.2.0 | 467 | 6/5/2022 |
0.1.2 | 439 | 6/3/2022 |
0.1.1 | 405 | 6/2/2022 |
0.1.0 | 440 | 6/2/2022 |