Kolbe.LitMath
0.3.8
See the version list below for details.
dotnet add package Kolbe.LitMath --version 0.3.8
NuGet\Install-Package Kolbe.LitMath -Version 0.3.8
<PackageReference Include="Kolbe.LitMath" Version="0.3.8" />
paket add Kolbe.LitMath --version 0.3.8
#r "nuget: Kolbe.LitMath, 0.3.8"
// Install Kolbe.LitMath as a Cake Addin #addin nuget:?package=Kolbe.LitMath&version=0.3.8 // Install Kolbe.LitMath as a Cake Tool #tool nuget:?package=Kolbe.LitMath&version=0.3.8
LitMath
A collection of AVX-256 accelerated mathematical functions for .NET
I rewrote Exp
, Log
, Sin
and a few other useful functions 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. On doubles, the following accuracies apply:
Exp
andSqrt
run at double precision limitsERF
at1e-13
Sin
andCos
at1e-15
Tan
in $[0,\pi/4]$ at2e-16
ATan
at1e-10
(working on it)
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 | 543 | 11/16/2023 |
0.6.4 | 150 | 10/13/2023 |
0.6.3 | 361 | 1/5/2023 |
0.6.2 | 305 | 1/3/2023 |
0.6.1 | 310 | 1/3/2023 |
0.6.0 | 294 | 12/8/2022 |
0.5.8 | 329 | 12/4/2022 |
0.5.7 | 334 | 11/27/2022 |
0.5.6 | 313 | 11/26/2022 |
0.5.5 | 330 | 11/26/2022 |
0.5.4 | 345 | 11/26/2022 |
0.5.3 | 341 | 11/26/2022 |
0.5.2 | 345 | 11/22/2022 |
0.5.1 | 320 | 11/22/2022 |
0.5.0 | 412 | 9/24/2022 |
0.4.1 | 430 | 9/21/2022 |
0.4.0 | 435 | 9/21/2022 |
0.3.8 | 443 | 9/15/2022 |
0.3.7 | 464 | 9/14/2022 |
0.3.6 | 462 | 9/14/2022 |
0.3.5 | 468 | 9/14/2022 |
0.3.4 | 428 | 7/22/2022 |
0.3.3 | 432 | 7/21/2022 |
0.3.2 | 428 | 7/20/2022 |
0.3.1 | 454 | 7/20/2022 |
0.3.0 | 458 | 7/18/2022 |
0.2.1 | 458 | 7/9/2022 |
0.2.0 | 468 | 6/5/2022 |
0.1.2 | 440 | 6/3/2022 |
0.1.1 | 406 | 6/2/2022 |
0.1.0 | 441 | 6/2/2022 |