Recommendation for C# Matrix Library [closed]
I need a C# library to deal with matrices. It should implement singular value decomposition, matrix inversion, etc
I've used CSML before, but this does not implement some of the features i need.
Some of the features are:
Singular value decomposition
Matrix inversion
Trace
Determinants
Suggested Libraries (from answers)
(most of them implement the features stated above)
- Math .NET Numerics for .NET, Silverlight and Mono (opensource)
- Extreme Optimization Numerical Libraries (commercial, very complete)
- IL Numerics (commercial)
- Deltix's FinMath numerical library (commercial, uses the Intel® Math Kernel Library (MKL) and Intel® Integrated Performance Primitives (IPP))
- Lightweight fast matrix class in C# (Strassen algorithm, LU decomposition)
Solution 1:
Math.NET Numerics is very nice, if it supports the operations you want. The older Math.Net Iridium still supports more options. Also, dnAnalytics is quite nice, but no longer being developed. (It, as well as Iridium, are being merged into Math.NET Numerics.)
On the commercial side, there are some very good, robust options. The Extreme Optimization Numerical Libraries work very well. The Visual Numerics library also works very well (although with a royalty-based distribution...).
Solution 2:
I believe that Math.NET has most of the features you mention. Yuu may want to look at it and see if it fits your needs.
You can take a look at the Iridium samples to see the syntax and example code.
Solution 3:
I have been using ILNumerics a lot. Also did some contributions to the project. It by know is the only library I know of, which does not spend half the CPU time in GC for serious computations. Its fast and mature. See the full feature list.
Solution 4:
In addition to the libraries mentioned in other posts I can say a few warm words about FinMath library. It is rather new library, but according to my experience it has several advantages. It is very easy to use this library. First, it has only one executable file (*.dll) for both 32-bit and 64-bit operating systems. Second, it is build on top of well-known Intel Math Kernel Library and therefore it provides very good performance. Managed .NET API provided by this library is also very extensive and flexible. But, it is proprietary software and costs considerable amount of money. It also lacks some functionality (e.g. compared to NMath from CenterSpace Software). Anyway, it worth time to try it.