# Build financial, engineering and scientific applications faster

Numerics.NET (formerly Extreme Optimization Numerical Libraries for .NET) is a collection of general-purpose mathematical and statistical classes built for Microsoft .NET.

Numerics.NET provides the first complete platform for technical and statistical computing built on and for the Microsoft .NET platform. It combines a math library, a vector and matrix library, a data analysis library, and a statistics library in one convenient package.

## At a glance:

### Mathematics

• Seamless parallelism using the Task Parallel Library.
• Basic math: Complex numbers, `Decimal` math, 'special functions' like Gamma and Bessel functions, numerical differentiation.
• Automatic differentiation: eliminate tedious and error-prone manual derivative calculations.
• Solving equations: Solve equations in one variable, or solve systems of linear or nonlinear equations.
• Curve fitting: Linear and nonlinear curve fitting, cubic splines, polynomials, orthogonal polynomials.
• Optimization: State of the art algorithms for finding the minimum or maximum of a function in one or more variables, linear programming (LP), mixed integer programming (MIP), quadratic programming (QP) and nonlinear programming (NLP).
• Genetic Optimization: Flexible framework for finding good solutions to hard problems.
• Numerical integration: Compute integrals over finite or infinite intervals. Integrate over 2D and higher dimensional regions. Integrate systems of ordinary differential equations (ODE's).
• Fast Fourier Transforms: 1D and 2D FFT’s using 100% managed or fast native code (32 and 64 bit)
• BigInteger, BigRational, and BigFloat: Perform operations with arbitrary precision.
• Generic arithmetic framework: Write the code once and use it with any numerical type.
• Random numbers: Random variates from any distribution, 4 high-quality random number generators, low discrepancy sequences, shufflers.

### Vector and Matrix Library

• Real and complex vectors and matrices.
• Single, double and quadruple precision for elements.
• Structured matrix types: including triangular, symmetrical and band matrices.
• Sparse matrices.
• Iterative sparse solvers and preconditioners.
• Matrix factorizations: LU decomposition, QR decomposition, singular value decomposition, Cholesky decomposition, eigenvalue decomposition.
• Portability and performance: Calculations can be done in 100% managed code, or in hand-optimized processor-specific native code (32 and 64 bit).
• Generic library: Use built-in .NET types or any of the new arbitrary precision types to do matrix calculations.
• Row and column labels: Add labels to your data and take advantage of automatic alignment on labels.

### Data Analysis

• Data frame: Advanced data analysis, manipulation and transformation.
• Data munging: Sort and filter data, process missing values, remove outliers, etc. Supports .NET data binding.
• Data manipulation: Reshape data frames, database-like joins, join to nearest, stacking and unstacking.
• Grouping and Aggregation: Efficient aggregation over groupings by value or quantile, moving and expanding windows, partitions.

### Statistics

• Statistical Models: Simple, multiple, nonlinear, logistic, Poisson regression. Generalized Linear Models. One and two-way ANOVA.
• Time Series Models: ARIMA and GARCH.
• Multivariate Statistics: K-means cluster analysis, hierarchical cluster analysis, principal component analysis (PCA), factor analysis.
• Statistical Distributions: 39 45 continuous and discrete statistical distributions, including uniform, Poisson, normal, lognormal, Weibull and Gumbel (extreme value) distributions and various multivariate distributions.
• Hypothesis Tests: 15 hypothesis tests, including the z-test, t-test, F-test, runs test, and more advanced tests, such as the Anderson-Darling test for normality, one and two-sample Kolmogorov-Smirnov test, and Levene’s test for homogeneity of variances, Ljung-Box test for auto-correlation, Kruskal-Wallis test.

### General features

• Parallel computing. Take advantage of all the CPU and GPU power in your machine. Full support for Task Parallel Library features including cancellation. Support for CUDA based GPU calculations.
• Great performance. We implemented the best algorithms available today to provide you with a robust, fast toolset.
• Intuitive object model. The classes in Extreme Numerics.NET and the relationships between them match our every-day concepts.
• Ground-breaking usability for numerical software development. The math itself is hard enough.
• Broad base of algorithms covering a wide range of numerical techniques, including: linear algebra (BLAS and LAPACK routines), numerical integration and differentiation, solving equations, complex numbers, and more.

Whether you develop applications in C#, Visual Basic .NET, F#, C++/CLI, IronPython or any of the other .NET Framework languages, Numerics.NET provides the reliable foundation and the building blocks developers need.