Math.NET Numerics
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Christoph Ruegg e2271d7f58 Migrate to new official FSharp.Core NuGet package (paket-v20a7) 11 years ago
build Build: fix paths to improve support for Paket 11 years ago
data Data: import data extension soltion back into main repository 12 years ago
docs Migrate to new official FSharp.Core NuGet package (paket-v20a7) 11 years ago
packages Migrate to new official FSharp.Core NuGet package (paket-v20a7) 11 years ago
src Migrate to new official FSharp.Core NuGet package (paket-v20a7) 11 years ago
tools Paked upgrade; PCL 259 in addition to 47 and 328, in F# 259 replacing 328 in addition to 47 11 years ago
.editorconfig Convert F# examples to F# scripts (interactive); update nuget 13 years ago
.gitattributes Build: fix FAKE build script on mono (so that mono finds FAKE dependencies) 12 years ago
.gitignore Migrate to new official FSharp.Core NuGet package (paket-v20a7) 11 years ago
.mailmap Update contributors, add mailmap 12 years ago
.travis.yml Build: travis should run on Linux instead of OSX 11 years ago
CONTRIBUTING.md Docs: include contributing and contributors 12 years ago
CONTRIBUTORS.md Release v3.3.0 11 years ago
Examples.sln Fix examples 12 years ago
LICENSE.md License: clarify License.md to only include actual MIT license (was confusing) 12 years ago
MAINTAINING.md Release: v3.1.0 12 years ago
Math.Net Master Slides.pptx Added slides on Math.Net which can be used for documentation and presentation purposes. 16 years ago
MathNet.Numerics.All.sln Migrate to new official FSharp.Core NuGet package (paket-v20a7) 11 years ago
MathNet.Numerics.All.sln.DotSettings StyleCop 12 years ago
MathNet.Numerics.Data.sln Cleanup solutions 12 years ago
MathNet.Numerics.Data.sln.DotSettings Data: Matlab: simplify names 12 years ago
MathNet.Numerics.NativeProviders.sln Native: disable ATLAS build 12 years ago
MathNet.Numerics.Net35Only.sln Build: .Net 3.5 support for F# extensions #243 12 years ago
MathNet.Numerics.Net35Only.sln.DotSettings Build: .Net 3.5-only solution 12 years ago
MathNet.Numerics.Portable.sln Build: add PCL profiles 7 and 78, for F# only drop profile 259 11 years ago
MathNet.Numerics.Portable.sln.DotSettings Meta: update Vagrantfile, DotSettings, git attributes 12 years ago
MathNet.Numerics.sln Cleanup solutions 12 years ago
MathNet.Numerics.sln.DotSettings RootFinding: auto zero-crossing bracketing expansion in FindRoots.OfFunction; include missing R# settings, apply 11 years ago
NativeProviders.txt updated ACML instructions 15 years ago
Performance.sln Perf: add performance test project 12 years ago
README.md Migrate to new official FSharp.Core NuGet package (paket-v20a7) 11 years ago
RELEASENOTES-Data.md Release Data Extensions: v3.0.0 12 years ago
RELEASENOTES-Native.md Release Native Providers: v1.6.0 (rev 6) 12 years ago
RELEASENOTES.md Release notes typo 11 years ago
Vagrantfile Vagrant: now with official Ubuntu 14.04 LTS; mono/fsharp apt-provisioning 12 years ago
appveyor.yml Build: disable target dependencies but enable tests in AppVeyor; update readme 12 years ago
build.cmd Paket: update build bootstrap scripts to leverage Paket; upgrade FSharp.Formatting 12 years ago
build.fsx Migrate to new official FSharp.Core NuGet package (paket-v20a7) 11 years ago
build.sh Paket: update build bootstrap scripts to leverage Paket; upgrade FSharp.Formatting 12 years ago
paket.dependencies Migrate to new official FSharp.Core NuGet package (paket-v20a7) 11 years ago
paket.lock Migrate to new official FSharp.Core NuGet package (paket-v20a7) 11 years ago
vagrant-bootstrap.sh Build: force v4 mono runtime, cosmetics 12 years ago

README.md

Math.NET Numerics

Math.NET Numerics is an opensource numerical library for .Net, Silverlight and Mono.

Math.NET Numerics is the numerical foundation of the Math.NET initiative, aiming to provide methods and algorithms for numerical computations in science, engineering and every day use. Covered topics include special functions, linear algebra, probability models, random numbers, statistics, interpolation, integration, regression, curve fitting, integral transforms (FFT) and more.

In addition to the core .NET package (which is written entirely in C#), Numerics specifically supports F# with idiomatic extension modules and maintains mathematical data structures like BigRational that originated in the F# PowerPack. If a performance boost is needed, the managed-code provider backing its linear algebra routines and decompositions can be exchanged with wrappers for optimized native implementations such as Intel MKL.

Math.NET Numerics is covered under the terms of the MIT/X11 license. You may therefore link to it and use it in both opensource and proprietary software projects. We accept contributions!

Current Version

Math.NET Numerics Version Math.NET Numerics
Native Providers Version Native Providers
Data Extensions Version Data Extensions

Installation Instructions

The recommended way to get Math.NET Numerics is to use NuGet. The following packages are provided and maintained in the public NuGet Gallery. Alternatively you can also download the binaries in Zip packages, available on CodePlex.

Core Package:

  • MathNet.Numerics - core package, including .Net 4, .Net 3.5 and portable/PCL builds.
  • MathNet.Numerics.FSharp - optional extensions for a better F# experience. BigRational.
  • MathNet.Numerics.Signed - strong-named version of the core package (not recommended).
  • MathNet.Numerics.FSharp.Signed - strong-named version of the F# package (not recommended).

Alternative Provider Packages (optional):

  • MathNet.Numerics.MKL.Win-x86 - Native Intel MKL Linear Algebra provider (Windows/32-bit).
  • MathNet.Numerics.MKL.Win-x64 - Native Intel MKL Linear Algebra provider (Windows/64-bit).

Data/IO Packages for reading and writing data (optional):

  • MathNet.Numerics.Data.Text - Text-based matrix formats like CSV and MatrixMarket.
  • MathNet.Numerics.Data.Matlab - MATLAB Level-5 matrix file format.

Platform Support and Dependencies

Supported Platforms:

  • .Net 4.0, .Net 3.5 and Mono: Windows, Linux and Mac.
  • PCL Portable Profiles 7, 47, 78, 259 and 328: Windows 8, Silverlight 5, Windows Phone/SL 8, Windows Phone 8.1.
  • Xamarin: Android, iOS

The F# extensions support a slightly reduced platform set:

  • .Net 4.0, .Net 3.5 and Mono: Windows, Linux and Mac.
  • PCL Portable Profile 47: Windows 8, Silverlight 5
  • Xamarin: Android, iOS

Package Dependencies:

Framework Dependencies (part of the .NET Framework):

  • .Net 4.0 and higher, Mono, PCL profiles 7 and 47: System.Numerics
  • .Net 3.5, PCL profiles 78, 259 and 328: None

Platform Discrepancies

Compilation symbols used to deal with platform differences:

  • NET35 - Some framework attributes are not available and we provide our own Tuple types, generic comparer, LINQ Zip routine and thread partitioner. The crypto random source is not disposable.
  • PORTABLE - Some framework attributes are not available and we provide our own parallelization routines and partitioning using TPL Tasks. Reduced globalization and serialization support. Work around some missing routines like Math.DivRem, Array.FindIndex and BitConverter. There is no ICloneable. The crypto random source is not available; simpler random seeding.
  • NOSYSNUMERICS - The System.Numerics framework assembly is not available. We provide our own double-precision complex number type and disable all arbitrary precision numbers support (BigInteger, BigRational).
  • NET45REFLECTION - we use the new .Net 4.5 reflection API where type information is split into Type and TypeInfo.
  • NATIVEMKL - we can support the Intel MKL native provider.
Configuration Net35 Portable NoSysNumerics Net45Reflection NativeMKL
.Net 4.0 - - - - Yes
.Net 3.5 Yes - Yes - -
Portable 7 - Yes - Yes -
Portable 47 - Yes - - -
Portable 78 - Yes Yes Yes -
Portable 259 - Yes Yes Yes -
Portable 328 - Yes Yes - -

Compatibility Matrix:

Configuration Net35 Net40 Net45 SL5 Win8 WP8/SL WP8.1 Xamarin
.Net 4.0 - Best Best - - - - -
.Net 3.5 Best OK OK - - - - -
Portable 7 - - OK - Best - - OK
Portable 47 - - OK Best OK - - OK
Portable 78 - - OK - OK Best - OK
Portable 259 - - OK - OK OK Best OK
Portable 328 - OK OK OK OK OK OK OK

Building Math.NET Numerics

Windows (.Net): AppVeyor build status
Linux (Mono): Travis Build Status

If you do not want to use the official binaries, or if you like to modify, debug or contribute, you can compile Math.NET Numerics locally either using Visual Studio or manually with the build scripts.

  • The Visual Studio solutions should build out of the box, without any preparation steps or package restores.
  • Instead of a compatible IDE you can also build the solutions with msbuild, or on Mono with xbuild.
  • The full build including unit tests, docs, NuGet and Zip packages is using FAKE.

How to build with MSBuild/XBuild

msbuild MathNet.Numerics.sln            # only build for .Net 4 (main solution)
msbuild MathNet.Numerics.Net35Only.sln  # only build for .Net 3.5
msbuild MathNet.Numerics.All.sln        # full build with .Net 4, 3.5 and PCL profiles
xbuild MathNet.Numerics.sln             # build with Mono, e.g. on Linux or Mac

How to build with FAKE

build.cmd    # normal build (.Net 4.0), run unit tests (.Net on Windows)
./build.sh   # normal build (.Net 4.0), run unit tests (Mono on Linux/Mac, .Net on Windows)

build.cmd Build              # normal build (.Net 4.0)
build.cmd Build incremental  # normal build, incremental (.Net 4.0)
build.cmd Build all          # full build (.Net 4.0, 3.5, PCL)
build.cmd Build net35        # compatibility build (.Net 3.5)
build.cmd Build signed       # normal build, signed/strong named (.Net 4.0)

build.cmd Test        # normal build (.Net 4.0), run unit tests
build.cmd Test quick  # normal build (.Net 4.0), run unit tests except long running ones
build.cmd Test all    # full build (.Net 4.0, 3.5, PCL), run all unit tests
build.cmd Test net35  # compatibility build (.Net 3.5), run unit testss

build.cmd Clean  # cleanup build artifacts
build.cmd Docs   # generate documentation
build.cmd Api    # generate api reference

build.cmd NuGet all     # generate normal NuGet packages (.Net 4.0, 3.5, PCL)
build.cmd NuGet signed  # generate signed/strong named NuGet packages (.Net 4.0)

build.cmd NativeBuild      # build native providers for all platforms
build.cmd NativeTest       # test native providers for all platforms

build.cmd All          # build, test, docs, api reference (.Net 4.0)
build.cmd All release  # release build

FAKE itself is not included in the repository but it will download and bootstrap itself automatically when build.cmd is run the first time. Note that this step is not required when using Visual Studio or msbuild directly.