
174 votes

105 votes

Provide principle component analysis
Extend the linear algebra part with PCA using either Singular Value Decomposition or Eigenvalue Decomposition. Easy implementation, great value!
72 votes 
Add methods for linear and quadratic programming
Linear and quadratic programming methods are great techniques for minimization problems. Other, more complicated methodologies  such as MPC  can built on top of them fairly easily.
68 votes 
67 votes

implement a machine learning library
For modern datascience we need machine learning. Hence for .NET a modern machine learning library would be very welcome, especially one with a good F# interface. It should contain the most used standard algorithms & models like
 clustering: kmeans, spectral clustering, kernel kmeans, gaussian mixture, ...
 classification & regression: (regularized) generalized linear models , neural networks (classic & deep learning), kernel models (SVM, kernel logistic regression,...), probabilistic (max likelihood) & Bayesian methods/graphical models/gaussian processes, decision trees & random forests,...
 ensemble methods (bagging, boosting,...)
 dim reduction (SVD, kernel SVD, manifold learning, sparse representations (L1 regularization),...)
 probabilistic programming (cf. infer.NET) ?
 ... …
57 votes 
Add support for surface interpolation (2D, mesh)
Extend the interpolation methods to support 2D surface interpolation, i.e. on a mesh. See http://community.opensourcedotnet.info/forums/t/565.aspx
48 votes 
Add Rotation Matrix and Vector classes for 2D, 3D and generic sized spaces
2D and 3D calculations could benefit from optimized functions for Rotation Matrices, 2D and 3D vectors, Solving for Transformation or Rotation Matrices, using Quaternions, and more.
45 votes 
Implement MATLAB's pchip interpolation algorithm
Piecewise Cubic Hermite Interpolating Polynomial
36 votes 
Solve a system of nonlinear equations
aka fsolve of matlab
33 votes 
Add row echelon and reduced row echelon form computation
Computing reduced row echelon and row echelon form of a Matrix could be used with Gaussian and GaussJordan elimination techniques.
32 votes 
Investigate Mono.Simd
The upcoming Mono.Simd assembly is nearing release. Using these functions in certain areas could give massive performance gains.
28 votes 
24 votes

Performance increase using structs instead of classes?
Hi,
First, congratulations for this ongoing work! I came to Math.Net after attempting to create my own libraries, so here is an idea which my be of a help.The idea would be to use Structs to define matrices instead of Classes to improve performance.
As mentioned above, I did a check with a homemade matrix class and another one being a matrix struct, and for matrices up to 5000X5000 structs are circa 10 times faster for matrix multiplication.
I compared Math.Net with MKL against matlab and it appears to be circa 2 times slower for such matrix sizes. This…
21 votes 
Add stochastic processes
Almost all modern financial analysis are built around stochastic processes. There are many processes, some general like time series and some more specific. It would be very useful for people working in the finance field.
20 votes 
Add support for cuda
Is this possible to split the matrix multiplication algorithms to use processor and gpgpu all at the same time?
It would be an amazing feature to be added.
19 votes 
VSLab
I think this is a great project. I am suggesting your library for VSLab (http://www.codeplex.com/vslab). I think that an F# wrapper would be great. Are you interested in contribute with your math library in creating a Matlab like environment? Have a look to the project!
19 votes 
12 votes

11 votes

Implement 2D FFT
Extend the FFT class to allow for 2d array. Use MKL to accelerate this.
11 votes
 Don't see your idea?