Change to Portable Class Library compatible with .NET 4.0.
Replace our Complex with .NET's Complex, assuming its performance is adaquate.
Accept Tuple<double,double> in BivariateSample and make BiVariateSample IEnumerable<Tuple<double,double>>. Make a cast between Tuple<double,double> and Interval so intervals can be specified as (a,b). Perhaps use tuples in other places,
Reorganize some namespaces. Split Meta.Numerics.Functions into Meta.Numerics.Analysis (calculus operations) and Meta.Numerics.AdvancedFunctions (for special functions). Move Meta.Numerics.Spin types under Meta.Numerics.AdvancedFunctions. Move optimization stuff
to Meta.Numerics.Optimization if it gets big enough.
Right now, methods that return a vector or matrix copy in the values into new storage before returning them. This ensures that any changes made to the returned object do not unexpectedly affect the original. If we introduce read-only vectors and matrices, then
we can speed up these methods by avoiding the copy. For read-only purposes, which are quite common, that's great. Users who want to write to the returned object would have to call a Copy to get a writable copy, but their overall performance wouldn't
be any worse. We have already done this in the statistics namespace, e.g. with a Sample obtained from a MultivariateSample.
The Func delegates in the 4.0 framework use the in and out keywords, so for the FuntionMath methods that operate on multivariate functions, we can use IList<double> in place of double. This will allow functions that return arrays, lists, vectors to
be passed directly to these methods.
Change DiscreteDistribution's LeftProbability and RightProbability to both be exclusive for consistency.
Change maximum likelihood fitting to use a distribution factory instead of IParameterizedDistribution.
Give a way to get residuals from fits. Make it easy to do two-sided statistical tests when appropriate. Add histogram and time-series analysis. Add multivariate logistic regression.
Offer LDL^T factorization of symmetric indefinite matrices.
Improve multi-dimensional optimization, including constrained optimization.
Add 2D FFT and optimized code for real FFTs.
Add elliptic functions of 3rd kind, Kelvin functions, special code for very high order Bessel functions.
Use parallel task framework for easily parallelizable algorithms, e.g. matrix multiplication.