Math.NET Numerics
Welcome to our official feedback forum. Do you have an idea? Do you recognize a good idea when you see one? We want to hear from you!

Histogram should allow custom bucket definition
The existing constructors of the Histogram function allow for a defined number of buckets or a defined number of buckets with a lower and upper bound. It is also useful to specifically define the buckets. For example, I need to do a histogram of a double[] array in increments of 0.5.
1 vote 
Vector Autoregression
I am a finance professional who is currently using python to run vector autogression. I would prefer to implement in a .NET stack.
The python library is called statstools and there is a similar package in R called VAR.
https://github.com/statsmodels/statsmodels/blob/master/docs/source/vector_ar.rst#id5
I am happy to get involved in adding this feature but may need support.
1 vote 
estimate
I love the Estimate function on some of the distributions in the statistical namespace. Chould we try to expand it to be included in IDistribution or IContinuousDistribution and all distributions. I have the code for some more.
1 vote 
Fix a dimensionality bug in the SparseMatrix solve method
I am using the solve method on a DenseMatrix and two vectors. When I try to use the same method but with a SparseMatrix, I get a dimensionality error saying that all vectors must be the same dimensions.
I believe the method asserts that the input vector is of the same length as the matrix's number of columns, and probably should check against the matrix's number of rows.
2 votes 
Introduce support for homogeneous coordinates
The usage of homogeneous coordinates is quite natural.in drawing software, so support for vector manipulations using homogeneous coordinates would be intersting.
4 votes 
1 vote

Implement the Gumbel ContinuousDistribution
Implement the Gumbel ContinuousDistribution
2 votes 
Implement 2D FFT
Extend the FFT class to allow for 2d array. Use MKL to accelerate this.
11 votes 
add a distributed multidimensional array type (or at least matrix)
Languages like Fortran 2008, Julia & Spark framework have a distributed array type. This allows to describe distributed algorithms in a natural way close to the underlying mathematics instead in a convoluted way (map reduce like Hadoop). I'd like to have the same in .NET.
3 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…51 votes 
Please consider implementing excel functions PPMT,IPMT,PMT,CUMIPMT,CUMPRINC
These are the financial functions used by banks. The applications using math.net will be more richer if it can have below functions PPMT,IPMT,PMT,CUMIPMT,CUMPRINC
4 votes 
10 votes

To match and provide formulas for statistical and engineering capabilities as in Excel...
Can provide the calculation abilities of what excel inbuilt formula does as a part of framework This include formula related to statistical and engineering capabilities.
1 vote 
Levinson Decomposition
Levinnson Decomposition (both symmetric and non symmetric) was available in dnAnalytics 0.2 and are highly popular in signal processing. (via alibeirami)
1 vote 
Matrix multiplyadd, like DGEMM
BLAS has something like DGEMM which does X = a*A*B + b*X in one loop. This can be very fast, so allowing direct use of this would be handy.
2 votes 
Add the "Periodic" to "SplineBoundaryCondition" on MathNet.Numerics.Interpolation
Currently, the condition Natural/ParaboricallyTerminated/FirstDerivative/SecondDerivative are on "SplineBoundaryCondition", but I'd like to add Periodic on it(I guess this is equivalent to "csape" on MATLAB).
1 vote 
Add full multigrid solver (FMG) for boundary value problems, e.g. the Poisson equation.
Many simluation and some image processing tasks require solving differential equations, such as heat equation and linear elliptic equation (Poisson equation).
In case of 2D data (images), these become partial differential equations (PDEs).
These can be solved in linear time using multigrid preconditioner with some relaxation scheme (GaussSeidel, CG, biCG).
Some reference, including source code, can be found in Press et al.: "Numerical Recipes, 3rd edition".
1 vote 
Add an FFTSHIFT and iFFTSHIFT on a matrix similar to MATLAB
Add an FFTSHIFT and iFFTSHIFT on a matrix similar to MATLAB
9 votes 
Add a FixedPoint Numeric Type
A fixedpoint numeric type is essential for deterministic calculations with fractional parts. This is essential for running accurate simulations across different machines with various CPUs, OSes, because the IEEE standard for floatingpoint math doesn't guarantee reproducibility across machines (http://stackoverflow.com/a/328651/154766).
Authors of realtime strategy games in .NET have typically come up with their own fixedpoint math class or found some workaround. There is no fixedpoint type in the BCL even though the documentation for System.Decimal at some point labeled it so, erroneously.
6 votes 
Optimized DenseLU solve
/// <summary>
/// Solves A*X=B for X using LU factorization.
/// </summary>
/// <param name="columnsOfB">The number of columns of B.</param>
/// <param name="a">The square matrix A.</param>
/// <param name="order">The order of the square matrix <paramref name="a"/>.</param>
/// <param name="b">On entry the B matrix; on exit the X matrix.</param>
/// <remarks>This is equivalent to the GETRF and GETRS LAPACK routines.</remarks>
public static unsafe void LUSolveUnsafe(int columnsOfB, double[] aIn, int order, double[] bIn)
{
#region Initialize
if (aIn == null)
throw new ArgumentNullException("a");
if (bIn == null)
throw new ArgumentNullException("b");int i;
int j;
int k;double* a = stackalloc double[aIn.Length];
double*…6 votes
 Don't see your idea?