Extreme Optimization™: Complexity made simple.

Math and Statistics
Libraries for .NET

  • Home
  • Features
    • Math Library
    • Vector and Matrix Library
    • Statistics Library
    • Performance
    • Usability
  • Documentation
    • Introduction
    • Math Library User's Guide
    • Vector and Matrix Library User's Guide
    • Data Analysis Library User's Guide
    • Statistics Library User's Guide
    • Reference
  • Resources
    • Downloads
    • QuickStart Samples
    • Sample Applications
    • Frequently Asked Questions
    • Technical Support
  • Order
  • Company
    • About us
    • Testimonials
    • Customers
    • Press Releases
    • Careers
    • Partners
    • Contact us
Introduction
Deployment Guide
Nuget packages
Configuration
Using Parallelism
Expand Mathematics Library User's GuideMathematics Library User's Guide
Expand Vector and Matrix Library User's GuideVector and Matrix Library User's Guide
Expand Data Analysis Library User's GuideData Analysis Library User's Guide
Expand Statistics Library User's GuideStatistics Library User's Guide
Expand Data Access Library User's GuideData Access Library User's Guide
Expand ReferenceReference

Skip Navigation LinksHome»Documentation»Nuget packages

Nuget packages

Extreme Optimization Numerical Libraries for .NET Professional

Nuget packages for the Extreme Optimization Numerical Libraries for .NET are available in the NuGet Gallery. This document lists the available packages.

Main packages

The main package is called

Copy
Extreme.Numerics
and is required for all applications that use the Extreme Optimization Numerical Libraries for .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,

Copy
Extreme.Numerics.SinglePrecision
.

To work with arbitrary numerical types, including quad-precision and arbitrary precision numbers requires the

Copy
Extreme.Numerics.Generic
package.

  • Extreme.Numerics - main package.

  • Extreme.Numerics.SinglePrecision - single-precision linear algebra and FFT's.

  • Extreme.Numerics.Generic - generic linear algebra.

Data access libraries

Classes used for loading and saving objects to and from files are contained in the

Copy
Extreme.Data
and
Copy
Extreme.Data.Json
packages. The latter package is used for serialization in JSON and has a dependency on
Copy
Newtonsoft.Json
.

  • Extreme.Data - text files (including CSV), R, stata, Matlab...

  • Extreme.Data.Json - JSON serialization.

Native libraries

For better performance, optimized native linear algebra and FFT libraries based on Intel®'s Math Kernel Library may be used. These come in two variants depending on the interop method: native interop and P/Invoke.

There are separate packages for single and double precision. Each package contains libraries for both x86 and x64 platforms.

Mixed-mode packages

Mixed-mode assemblies are the preferred choice when using the original .NET Framework. These assemblies were created using C++/CLI and use native interop to call into the native code. This allows the native code to be called with minimal overhead. Unfortunately, this option is not available in environments that do not support mixed mode assemblies, such as .NET Core or Linux.

There are two versions of these packages, one for .NET Framework version 3.5, and one for .NET Framework version 4.0 and later.

In addition, there are versions that use the parallel and the sequential threading library of the Intel® Math Kernel Libraries. The parallel variant uses OpenMP to parallellize the calculation. The sequential library does not, and can be called safely from multiple threads.

  • Extreme.Numerics.Mkl.net35 - mixed-mode MKL provider for .NET Framework 3.5.

  • Extreme.Numerics.Mkl.net40 - mixed-mode MKL provider for .NET Framework 4.0 and later.

  • Extreme.Numerics.Mkl.net35.SinglePrecision - single-precision mixed-mode MKL provider for .NET Framework 3.5.

  • Extreme.Numerics.Mkl.net40.SinglePrecision - single-precision mixed-mode MKL provider for .NET Framework 4.0 and later.

P/Invoke based interop packages

While the native interop used by mixed-mode assemblies has the best possible performance, the drawback is that it is available only on the classic .NET Framework on Windows and not on more recent platforms like .NET Core, or on Linux. The P/Invoke based native libraries address this limitation.

There are separate packages for single or double precision operations, and for Windows or Linux.

  • Extreme.Numerics.Mkl.Windows - P/Invoke based MKL provider for Windows.

  • Extreme.Numerics.Mkl.Linux - P/Invoke based MKL provider for Linux.

  • Extreme.Numerics.Mkl.SinglePrecision.Windows - single-precision P/Invoke based MKL provider for Windows.

  • Extreme.Numerics.Mkl.SinglePrecision.Linux - single-precision P/Invoke based MKL provider for Linux.

CUDA support

A separate package provides support for GPU computing based on NVIDIA® CUDA. This package is only available as a mixed-mode assembly for x64:

  • Extreme.Numerics.Cuda.net40 - mixed-mode CUDA provider for .NET 4.0 and later (64 bit only).

Language interface libraries

These packages provide additional features that are specific to programming languages. There is a package for F# and one for IronPython.

  • Extreme.Numerics.FSharp - support for F#.

  • Extreme.Numerics.IronPython - support for IronPython.

See Also

Other Resources

NuGet Gallery

Copyright (c) 2004-2021 ExoAnalytics Inc.

Send comments on this topic to support@extremeoptimization.com

Copyright © 2004-2023, Extreme Optimization. All rights reserved.
Extreme Optimization, Complexity made simple, M#, and M Sharp are trademarks of ExoAnalytics Inc.
Microsoft, Visual C#, Visual Basic, Visual Studio, Visual Studio.NET, and the Optimized for Visual Studio logo
are registered trademarks of Microsoft Corporation.