.NET Math and Statistics Library
Works with all .NET languages, including C#, Visual Basic, and F#.
The NMathTM .NET math and statistics library from CenterSpace Software provides numerical components for financial, engineering, and scientific applications on the .NET platform.
[Released 2019 – Changelog]
The foundational .NET math and statistics library, NMath, includes complex number classes, general vector and matrix classes, structured sparse matrix classes and factorizations, general sparse matrix classes and factorizations, general matrix decompositions, least squares solutions, random number generators, Fast Fourier Transforms (FFTs), numerical integration and differentiation methods, function minimization, curve fitting, root-finding, linear and nonlinear programming.
Additionally, hundreds of statistical routines are supported including dozens of probability density functions (PDF), descriptive statistics, linear regression, hypothesis tests, analysis of variance (ANOVA), principle component analysis, non-negative matrix factorization (NMF), partial least squares (PLS), data filtering, Savitzy-Golay fitting and smoothing along with many other routines.
Learn More About NMath Topics
All NMath routines are callable from any .NET language, including C#, Visual Basic.NET, and F#.
For many computations, NMath uses the Intel® Math Kernel Library (MKL), which contains highly-optimized, extensively-threaded versions of the C and FORTRAN public domain computing packages known as the BLAS (Basic Linear Algebra Subroutines) and LAPACK (Linear Algebra PACKage). This gives NMath routines accuracy you can trust, and performance levels comparable to C or Fortran. Our state of the art, object-oriented interfaces are easy to use and leverage the full power of the .NET platform.
Orders may be placed through our secure online store. Our sales staff is available to help you with any questions that you may have about our products. Please also see our list of frequently asked questions.
Summary of NMath Features
- Single- and double-precision complex number classes.
- Random number generators for various probability distributions, independent streams of random numbers using skip-ahead and leapfrog methods, and quasirandom sequences using Niederreiter and Sobol methods.
- Fast Fourier Transforms (FFTs), Wavelets, and linear convolution and correlation.
- Special functions, such factorial, binomial, the gamma function and related functions, Bessel functions, elliptic integrals, and many more.
- Full-featured vector and matrix classes for four datatypes: single- and double-precision floating point numbers, and single- and double-precision complex numbers.
- Flexible indexing using slices and ranges.
- Overloaded arithmetic operators with their conventional meanings for those .NET languages that support them, and equivalent named methods (
Subtract(), and so on) for those that do not.
- Full-featured structured sparse matrix classes, including triangular, symmetric, Hermitian, banded, tridiagonal, symmetric banded, and Hermitian banded.
- Functions for converting between general matrices and structured sparse matrix types.
- Functions for transposing structured sparse matrices, computing inner products, and calculating matrix norms.
- Classes for factoring structured sparse matrices, including LU factorization for banded and tridiagonal matrices, Bunch-Kaufman factorization for symmetric and Hermitian matrices, and Cholesky decomposition for symmetric and Hermitian positive definite matrices. Once constructed, matrix factorizations can be used to solve linear systems and compute determinants, inverses, and condition numbers.
- General sparse vector and matrix classes, and matrix factorizations.
- Orthogonal decomposition classes for general matrices, including QR decomposition and singular value decomposition (SVD).
- Advanced least squares factorization classes for general matrices, including Cholesky, QR, and SVD.
- LU factorization for general matrices, as well as functions for solving linear systems, computing determinants, inverses, and condition numbers.
- Classes for solving symmetric, Hermitian, and nonsymmetric eigenvalue problems.
- Extension of standard mathematical functions, such as Cos(), Sqrt(), and Exp(), to work with vectors, matrices, and complex number classes.
- Classes for encapsulating functions of one variable, with support for numerical integration (Romberg and Gauss-Kronrod methods), differentiation (Ridders’ method), and algebraic manipulation of functions.
- Polynomial encapsulation, interpolation, and exact differentiation and integration.
- Classes for minimizing univariate functions using golden section search and Brent’s method.
- Classes for minimizing multivariate functions using the downhill simplex method, Powell’s direction set method, the conjugate gradient method, and the variable metric (or quasi-Newton) method.
- Simulated annealing.
- Linear Programming (LP), Non-Linear Programming (NLP), and Quadratic Programming (QP) using the Microsoft Solver Foundation.
- Least squares polynomial fitting.
- Nonlinear least squares minimization, curve fitting, and surface fitting.
- Classes for finding roots of univariate functions using the secant method, Ridders’ method, and the Newton-Raphson method.
- Numerical methods for double integration of functions of two variables.
- Nonlinear least squares minimization using the Trust-Region method, a variant of the Levenberg-Marquardt method.
- Curve and surface fitting by nonlinear least squares.
- Classes for solving first order initial value differential equations by the Runge-Kutta method.
Integration with .NET Standard Libraries
- Fully persistable data classes using standard .NET mechanisms.
- Integration with ADO.NET.
Summary of NMath Statistics Features
- A data frame class for holding data of various types (numeric, string, boolean, datetime, and generic), with methods for appending, inserting, removing, sorting, and permuting rows and columns.
- Functions for computing descriptive statistics, such as mean, variance, standard deviation, percentile, median, quartiles, geometric mean, harmonic mean, RMS, kurtosis, skewness, and many more.
- Special functions, such as factorial, log factorial, binomial coefficient, log binomial, log gamma, incomplete gamma, beta, and incomplete beta.
- Probability density function (PDF), cumulative distribution function (CDF), inverse CDF, and random variable moments for a variety of probability distributions, including beta, binomial, chi-square, exponential, F, gamma, geometric, logistic, log-normal, negative binomial, normal (Gaussian), Poisson, Student’s t, triangular, and Weibull distributions.
- Multiple linear regression.
- Basic hypothesis tests, such as z test, t-test, and F-test, with calculation of p-values, critical values, and confidence intervals.
- One-way and two-way analysis of variance (ANOVA) and analysis of variance with repeated measures (RANOVA).
- Non-parametric tests, such as the Kolmogorov-Smirnov test and Kruskal-Wallis rank sum test.
- Multivariate statistical analyses, including principal component analysis, factor analysis, hierarchical cluster analysis, and k-means cluster analysis.
- Nonnegative matrix factorization (NMF), and data clustering using NMF.
- Partial least squares (PLS), including cross validation and the SIMPLS and NIPALS algorithms.
- Data filtering, including a moving average filter and a Savitzky-Golay smoothing filter.