Breaking changes

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, too.

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.

New Functionality

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.

Last edited Aug 12, 2013 at 10:48 PM by ichbin, version 7


roederja Oct 27, 2014 at 1:20 PM 
Are there also plans to let users create read-only samples so that the original data does not need to be copied?

PILLET Sep 2, 2014 at 7:54 PM 
Each new version of metanumerics is a very good day!!!!!!
have you information about the D-Day fo the 3.0

cureos May 14, 2014 at 1:14 PM 
Jack, while PCL is not yet implemented in the library here on CodePlex, I have created a Portable Class Library fork of Meta Numerics on Github, .
The fork is completely up-to-date with the CodePlex repository, and the PCL can target Win RT (i.e. Windows Store/Metro/8 applications) as well as Windows Phone, Silverlight and Xamarin.
All functionality of the original M.N. library, except binary serialization and ADO.NET support is available in the PCL.
Best regards, Anders @ Cureos

JackDetrick Apr 8, 2014 at 3:52 PM 
Will it run under winRT ?. The present version fails Windows App certification (4/8/2014).