BT

Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ

Topics

Choose your language

InfoQ Homepage News .NET Scientific Computing with Meta Numerics

.NET Scientific Computing with Meta Numerics

This item in japanese

Bookmarks

Meta Numerics is a .NET library for scientific computations offering support for complex numbers, matrixes, advanced functions and statistical operations.

Complex Numbers

The library supports complex numbers and 12 related arithmetic operations including advanced functions like: Gamma, Faddeeva and Riemann Zeta.

Matrixes

Meta Numerics permits the following computations with generic and square matrixes:

Operation Generic Square
Arithmetic

Y

Y

Decomposition  

Y

Determinant  

Y

Inverse  

Y

Eigenvalues and Eigenvectors  

Y

Advanced Functions

The library also contains the following advanced functions: Gamma, Psi, Beta, Incomplete Gamma, Incomplete Beta, Erf, Fresnel, Integrals, Exponential Integrals, Cylindrical Bessel J and Y, Spherical Bessel j and y, Reimann Zeta, Hermite H, Laguerre L, Legendre P, Chebyshev T.

Statistics and Analysis

The library allows to perform a large number of tests on data including t-tests, Mann-Whitney, F-Tests, Kolmogorov-Smirnov, Kuiper, Pearson's R, Spearman's R and Kendall's τ.  It also can be used for regressions “including fitting to a constant, fitting to a line, and fitting to aribitrary, parameterized functions. All fits return a χ2 statistic and error bars on all parameters.”. Distributions: “Uniform, Normal, Exponential, χ2, t, F, and Kolmogorov-Smirnov. You can easily obtain PDF values, CDF values, arbitrary central and raw moments, and probit values.” Analysis of “contingency tables using odds ratios, χ2 tests, Fisher exact tests”. Others.

The library can be downloaded from CodePlex under Microsoft Public License (Ms-PL).

Rate this Article

Adoption
Style

Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Community comments

  • Matrix representation

    by C Curl,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    A quick comment on the matrix implementation.

    You should seriously consider using a one-dimensional array to represent the matrices (and index this through offsets), otherwise it would be difficult to use the library for more than the very simplest problems. There's a ton of literature you can find on this.

    Multi-dimensional (or jagged arrays) are very textbook, but have terrible performance characteristics for pretty much every matrix operation, and especially so for matrix multiplication. By itself you should expect a performance improvement up to an order of magnitude for matrices with more than a few hundred rows/cols, but it also opens up other avenues that can give it another 10x boost.

    It's a bit more work to implement, but you can find some good examples of this in e.g. the Java CERN Colt library. Worth benchmarking against this first though.

  • Re: Matrix representation

    by David Wright,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    C Curl: Thanks for the suggestion. I have created a bug to track this issue. Please feel free to create others or use the discussion forum to bring up issues. Thanks for giving Meta.Numerics a look.

    Abel: Thanks for publicizing Meta.Numerics.

  • Other Open Source .NET scientific libraries: ILNumerics and dnAnalytics

    by Alex Buer,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    Nice to see more choice among open source .NET scientific libraries; other libraries include:

    ILNumerics is a LGPL .NET library with support for linear algebra, complex, and import/export of MATLAB files. It also includes a GPL library for visualization.

    dnAnalytics is a Microsoft Public License .NET library with support for sparse matrices, statistics and a F#-friendly syntax.

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

BT