An important library in the C# and F# open source communities is the Math.NET Numerics library. I blogged the first part in a (slow) series on using the library from F# back in June and there is another tutorial as part of the Numerical Libraries for F# and the .NET Framework overview from early last year. We also use this library in Expert F# 3.0, Chapter 10, in the chapter on “Programming With Numbers”, and the library is also used in the new Try F# 3.0 website.
The library has received a scrub recently, with a much simplified website and moving to the pull-request model of open-source development, and v2.3.0 is now released. Here are the release notes from one of the contributors, Christoph Rüegg. The parts specifically related to F# support are highlighted, though of course all of it is goodness to the open-source-oriented, math-oriented F# programmer.
If you’re interested in this space you might like to consider contributing to the F# support in Math.NET Numerics (or the core C# library itself). The folks at the F# Software Foundation like the library too and are working on including information about it, something you can also contribute to. There has also been some discussion about F# math types on GitHub recently (also here), including the possibility of copying the F# matrix types from the F# power pack into MathNet.Numerics.FSharp and adding them to the family of matrix representations supported by Math.NET Numerics. This would give a more centralized home to open-source math support for F# and would avoid duplication in the long term.
Portable Library Build:
- Adds support for WP8 (.Net 4.0 and higher, SL5, WP8 and .NET for Windows Store apps)
- New: portable build also for F# extensions (.Net 4.5, SL5 and .NET for Windows Store apps)
- NuGet: portable builds are now included in the main packages, no more need for special portable packages
- Continued major storage rework, in this release focusing on vectors (previous release was on matrices)
- Thin QR decomposition (in addition to existing full QR)
- Static CreateRandom for all dense matrix and vector types
- F#: slicing support for matrices and vectors
Random and Probability Distributions:
- Consistent static Sample methods for all continuous and discrete distributions (was previously missing on a few)
- F#: better usability for random numbers and distributions.
- F# extensions are now using F# 3.0
- Updated Intel MKL references for our native linear algebra providers
- Various bug, performance and usability fixes
Also available as NuGet packages:
PM> Install-Package MathNet.Numerics
PM> Install-Package MathNet.Numerics.FSharp
Note: The portable package MathNet.Numerics.Portable has been dropped, as NuGet 2.1 properly supports portable builds in the main package.