Is there stable linear algebra (more specifically, vectors, matrices, multidimensional arrays and basic operations on them) library for C#?
Search yielded a few open source libraries which are either not updated for couple of years or are in an early beta stage - and Centerspace NMath. Which alternatives are worth checking?
Math.NET. We're using it in production.
See: http://en.wikipedia.org/wiki/List_of_numerical_libraries
http://www.alglib.net/ - Open source. Multi-language library.
http://www.mathdotnet.com/ - Open source. As mentioned by others. dnAnalytics is replaced by http://numerics.mathdotnet.com/ in this.
http://www.lutzroeder.com/dotnet/ - Lutz Roeder has a open source port Mapack.Net of LAPACK.
http://www.extremeoptimization.com/ - Commercial.
I am using ILNumerics.NET
www.ilnumerics.net
Very good support and stable. I don't have any comparison though.
We have evaluated nMath and were quite pleased with its programmability and speed. Their support staff even worked over a weekend to figure out a bug we found. We liked that they used Intel's Kernel Math library instead of rolling their own numerics. [Edited to add: have been using in production for years]
Few weeks ago I found a new c# library FinMath contains implementations of many various methods and techniques including basic linear algebra, such as:
- Vector and Matrix implementations (easy to use high-level interfaces covering most of all BLAS functionality)
- Algorithms of matrix factorizations (LU, QR, SVD, Cholesky).
And many other useful things like statistics, factor and cluster analysis, linear and quadratic programming solver and etc.
Unfortunately, it's not free, but it's extremely fast, because it uses MKL for most complex computations and at the same time it distributed as single library supports both 32bit and 64bit modes and requires no special maintenance to use, like taking care about native libraries.
Have you looked into dnAnalytics?
.Net Matrix is a similar question that you may want to look at the answers for other ideas.
Although it is not updated, not open source, and not for commercial usage, one might want to check out D* from Microsoft Research. It's a very cool symbolic math library, especially for doing derivatives, but really it's a little matlab in the hands of a .NET programmer.
http://research.microsoft.com/en-us/downloads/4714703d-782c-4e37-830d-0e3b7662f743