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 an FFTSHIFT and iFFTSHIFT on a matrix similar to MATLAB
Add an FFTSHIFT and iFFTSHIFT on a matrix similar to MATLAB
9 votes 
6 votes
spike in a fork

Allow interpolation over complex numbers
Currently interpolation only supports real numbers. Consider also to provide special schemes like Laurent interpolation around the unit circle.
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 
6 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 
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 
5 votes

4 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 
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 
3 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 
Add primality test
Add a fast primality test, for example based on MillerRabin or similar efficient method.
3 votes 
3 votes
We do some computations in parallel, however, in practice parallel execution is often not very efficient (other than e.g. concurrent execution at application level). However, we should review places where parallelization would be interesting for v3

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 
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 
Implement the Gumbel ContinuousDistribution
Implement the Gumbel ContinuousDistribution
2 votes 
Provide extremal values for interpolated splines
Provide extremal points and values and thus also min/max for interpolated splines.
2 votes 
Add interchange/swap function to Matrix class
Add interchange/swap function to Matrix class which would allow swapping two rows or columns in the matrix (i.e. m.swapRows(2,3)).
2 votes
 Don't see your idea?