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!

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 
3 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 
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…36 votes
 Don't see your idea?