meta numerics

Performance Testing

We have run several benchmarks comparing Meta.Numerics to the GNU scientific library (GSL). The GSL is a widely-used, open-source, native C++ library. As you can see, Meta.Numerics performs very well!

Task Meta.Numerics GSL
LU decompose a random 1000 X 1000 matrix 1800 ms 5900 ms
Fourier transform a length-10,000 complex series 2 ms 2 ms
Fourier transform a length-11,117 complex series (length is a large prime number) 8 ms 1000 ms
Compute 100,000 Bessel function values 300 ms 1100 ms

These tests were run on the same computer (a commodity desktop) running the same operating system (Windows 7) under the same conditions. The GSL benchmark is purely native. We didn't make the GSL "look slow" by writing a managed benchmark application that had to make externals call to the native GSL library routines. GSL really is slower for the benchmarked tasks. (If you purchase the Intel Math Kernel Library, currently retailing for $399 per developer, GSL can use it for linear algebra operations, which would significantly speed up LU decomposition.)

Correctness Testing

Our unit tests verify more than 1000 mathematical relationships, most for scores of different arguments ranging over many orders of magnitude. If there is a relationship in Abromiwitz and Stegun expressible involving our library functions, we have probably tested it. If the distribution of a test statistic arises from some null hypothesis, we have probably verified via simulation that our framework accurately reproduces it.

Our test cases achieve code coverage in excess of 85%. They can be obtained from our source code repository and used or modified for your own purposes.