Nuget packages
NuGet packages for Numerics.NET are available in the NuGet Gallery. This document describes the Numerics.NET 10.8 package family.
Numerics.NET is made up of several packages that provide different features. For convenience, several bundles are available that combine the most commonly used packages.
Numerics packages
The main package is called Numerics.NET.Core and is required for all applications that use Numerics.NET.
The main library only handles calculations with double-precision real and complex numbers. The classes that work with single-precision numbers are contained in a separate package, Numerics.NET.SinglePrecision.
To work with arbitrary numerical types, including quad-precision and arbitrary precision numbers requires the Numerics.NET.Generic package.
The tensor library is contained in the Numerics.NET.Tensors package.
Numerics.NET.Core - main package.
Numerics.NET.SinglePrecision - single-precision linear algebra and FFTs.
Numerics.NET.Generic - generic linear algebra.
Numerics.NET.Tensors - tensor library.
Data access libraries
Classes used for loading and saving objects to and from files are contained in the Numerics.NET.Data and Numerics.NET.Data.Json packages. The latter package is used for serialization in JSON and has a dependency on Newtonsoft.Json.
Numerics.NET.Data - text files (including CSV), R, Stata, and MATLAB files.
Numerics.NET.Data.Json - JSON serialization.
Native libraries
Native providers accelerate supported operations while managed implementations remain available for other operations. Automatic provider selection prefers MKL on Windows/Linux and Accelerate on macOS, with OpenBLAS as the fallback on supported platforms.
Intel oneAPI Math Kernel Library (MKL)
MKL packages for Windows x64 and Linux x64 are separate for double and single precision.
Numerics.NET.Native.Mkl.win-x64 - double precision on Windows x64.
Numerics.NET.Native.Mkl.linux-x64 - double precision on Linux x64.
Numerics.NET.Native.Mkl.SinglePrecision.win-x64 - single precision on Windows x64.
Numerics.NET.Native.Mkl.SinglePrecision.linux-x64 - single precision on Linux x64.
The Windows x86 packages are legacy packages; Intel has retired 32-bit MKL.
Numerics.NET.Native.Mkl.win-x86 - legacy double-precision provider.
Numerics.NET.Native.Mkl.SinglePrecision.win-x86 - legacy single-precision provider.
Apple Accelerate
One package includes both macOS Intel x64 and Apple Silicon ARM64 assets and supplies single- and double-precision acceleration. It targets macOS only.
Numerics.NET.Native.Accelerate - the preferred macOS provider for dense BLAS, LAPACK, selected vector operations, and FFT acceleration.
OpenBLAS
OpenBLAS supplies single- and double-precision dense BLAS and LAPACK acceleration. It is available separately as a portable alternative to the preferred platform provider.
Numerics.NET.Native.OpenBlas - bundle of the supported OpenBLAS platform packages.
Numerics.NET.Native.OpenBlas.win-x64 - Windows x64.
Numerics.NET.Native.OpenBlas.linux-x64 - Linux x64.
Numerics.NET.Native.OpenBlas.osx-x64 - macOS on Intel x64.
Numerics.NET.Native.OpenBlas.osx-arm64 - macOS on Apple Silicon ARM64.
Bundle packages
To simplify the installation of Numerics.NET in your applications, we've created bundles of the most commonly used packages. Platform bundles install the preferred native provider, not the OpenBLAS fallback.
Numerics.NET
The Numerics.NET package bundles these managed libraries: Numerics.NET.Core, Numerics.NET.SinglePrecision, Numerics.NET.Generic, Numerics.NET.Tensors, and Numerics.NET.Data.
Numerics.NET.win-x64
The Numerics.NET.win-x64 package contains all the packages in Numerics.NET plus the preferred double-precision MKL native provider for Windows x64. The separate single-precision native MKL package remains optional.
Numerics.NET.win-x86
The Numerics.NET.win-x86 package contains all the packages in Numerics.NET plus the legacy double-precision MKL provider for Windows x86. The separate single-precision native MKL package remains optional.
Numerics.NET.linux-x64
The Numerics.NET.linux-x64 package contains all the packages in Numerics.NET plus the preferred double-precision MKL native provider for Linux x64. The separate single-precision native MKL package remains optional.
Numerics.NET.osx
The Numerics.NET.osx package combines the managed Numerics.NET bundle with the preferred Accelerate native provider for macOS Intel x64 and Apple Silicon ARM64. One Accelerate package supplies both single- and double-precision native acceleration. OpenBLAS remains a separately installable alternative.
Language interface libraries
The F# package provides additional features specific to F#.
Numerics.NET.FSharp - support for F#.