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!

Implement the Studentized range distribution
https://en.wikipedia.org/wiki/Studentized_range_distribution
This distribution is used in the Tukey test for post hoc analysis of an ANOVA test.
6 votes 
Implement finding extrema for cubic splines
I wanted to find extrema for a spline and had to implement it by myself, using the CubicSpline.cs of MathNet.Numerics. Unfortunately the Class is constructes thus, that I could not access the spline parameters which would have allowed my to simply write an extension method.
I propose the following addition to the class "CubicSpline":
public enum eExtremePointType
{
Minimum, Maximum
}public class cExtremePointResult
{
public eExtremePointType Type { get; private set; }
public double x { get; private set; }
public double y [get;private set;}public cExtremePointResult(double in_x, double in_y, eExtremePointType in_type)
{
x=in_x;
y=in_y;
Type=in_type;
}
}///…
3 votes 
Eiganvalues and Eiganvectors
A function that can evaluate a square matrix for eiganvalues and eiganvectors similar to MATLAB's eig() function.
1 vote 
Quasi Random Number Generation
Otherwise known as low discrepancy sequences:
https://en.m.wikipedia.org/wiki/Lowdiscrepancy_sequence1 vote 
Valuation of top eigenvalues/eigenvectors only
Hi,
CPU time to perform Matrix diagonalization scales like n^3 where n is the size of the matrix. In many applications, however, one needs to know the top eigenvalues/eigenvectors only.
MKL provides this: "LAPACKE_dsyevr" where one can select how many eigenvalues one wants to compute.
Would be great if this functionality was available in mathnet!1 vote 
Implement Selected MATLAB Core Functionality
Implement a new class which is intended to provide syntax matched core MATLAB functionalities, such as flip(), linspace(), etc. I know linspace() and logspace() are already present with reordered inputs, but matching MATLAB syntax would prevent a lot of rewriting. Some of these could simply be wrappers for existing Math.NET functions, just so syntax matches.
Validation of this functionality would be such that inputs/outputs match the MATLAB implementation. Simple functions at the start, and more complex ones as time goes on.
3 votes 
Add trigonometrical functions for degrees
For most cases it can be overcome with multiplying pi/180 and using loops, but it would make code simpler. Coming from Octave/Matlab it is something I am used to have
1 vote 
Add Matrix indexing using int arrays for row and columns indices to give sub matrix
Allow the following A[row, cols] where each of rows and cols are int arrays.
1 vote 
Implement SetSubMatrix(int[] rowIndices, int[] columnIndices, Matrix<T> subMatrix)
Implement method:
Matrix<T>.SetSubMatrix(int[] rowIndices, int[] columnIndices, Matrix<T> subMatrix)
where
int[] rowIndices
The row indices to copy to.int[] columnIndices
The column indices to copy to.Matrix<T> subMatrix
The submatrix to copy from.This would enable us to set a larger number of entries at the same time.
1 vote 
Geometric Problems  Like Adjacent Points
Where's the namespace for geometric problems?
1 vote 
4 votes

support infinite precision
I really love the infinite precision feature of Google's Android Calculator. If you enter a number like π, e, φ, √2, √3, √5, etc., you can scroll to the right to get an infinite number of digits.
Such calculations should be supported by Math.NET Numerics, where results can get queried to get more (decimal) digits. Something like an IEnumerable<DecimalDigit> interface.
1 vote 
1 vote

12 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 
PCG Random support
Implement support for the PCG random routine as specified here:
PCG, A Family of Better Random Number Generators
http://www.pcgrandom.org/6 votes 
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
 Don't see your idea?