# Math Library Features

The Extreme Optimization Numerical Libraries for .NET includes classes for the following subject areas. Also see the detailed vector and matrix, data analysis and statistics feature lists.

### General

• Machine floating-point constants.
• Common mathematical constants.
• Extended elementary functions.
• Algorithm support functions: iteration, tolerance, convergence tests.

### Complex numbers

• Double-precision complex number value type.
• Overloaded operators for all arithmetic operations.
• Extension of functions in System.Math to complex argument.
• Support for complex infinity and complex Not-a-Number (NaN).
• Complex vector and matrix classes.

### Numerical integration and differentiation

• Numerical differentiation.
• Numerical integration using Simpson’s rule and Romberg’s method.
• Integration over infinite intervals.
• Optimizations for functions with singularities and/or discontinuities.
• Six integration rules to choose from, or provide your own.
• Integration in 2 or more dimensions. Updated!

### Curve fitting and interpolation

• Interpolation using polynomials, cubic splines, piecewise constant and linear curves.
• Barycentric rational interpolation.
• Linear least squares fit using polynomials or arbitrary functions.
• Nonlinear least squares using predefined functions or your own.
• Predefined nonlinear curves: exponential, rational, Gaussian, Lorentz, 4 and 5 parameter logistic.
• Weighted least squares, with 4 predefined weight functions.
• Scaling of curve parameters.
• Constraints on curve parameters.

### Curves

• Object-oriented approach to working with mathematical curves.
• Methods for: evaluation, derivative, definite integral, tangent, roots.
• Many basic types of curves: constants, lines, quadratics, polynomials, cubic splines, Chebyshev approximations, linear combinations of arbitrary functions.

### Solving equations

• Real and complex roots of polynomials.
• Roots of arbitrary functions: bisection, false positive, Dekker-Brent and Newton-Raphson methods.
• Systems of simultaneous linear equations.
• Systems of nonlinear equations: Powell’s hybrid ‘dogleg’ method, Newton’s method.
• Least squares solutions.

### Optimization

• Optimization in 1 dimension: Brent’s algorithm, Golden Section search.
• Quasi-Newton method in N dimensions: BFGS and DFP variants. Updated!
• Conjugate gradient method in N dimensions: Fletcher-Reeves and Polak-Ribière variants.
• Downhill Simplex method of Nelder and Mead. Updated!
• Levenberg-Marquardt method for nonlinear least squares. New!
• Line search algorithms: Moré-Thuente, quadratic, unit.
• Linear program solver: Based on the Revised Simplex method.
• Linear program solver: Import from MPS files.

### Signal processing

• Real 1D and 2D Fast Fourier Transform
• Complex 2D Fast Fourier Transform
• Special code for factors 2, 3, 4, 5
• Real and complex convolution
• Managed, 32bit and 64bit native implementations

### Special functions

• Over 40 special functions not included in the standard .NET Framework class library.
• Functions from combinatorics: factorial, combinations, variations, more.
• Functions from number theory: greatest common divisor, least common multiple, decomposition into prime factors, primality testing.
• Gamma and related functions, including incomplete and regularized gamma function, digamma function, beta function, harmonic numbers.
• Hyperbolic and inverse hyperbolic functions for real and complex numbers.
• Ordinary and Modified Bessel functions of the first and second kind.
• Airy functions and their derivatives.
• Exponential integral, sine and cosine integral, logarithmic integral.