# Mathematics in C#

## General

### Complex Numbers

Illustrates how to work with complex numbers using the DoubleComplex structure.

### Elementary Functions

Illustrates how to use additional elementary functions.

### BigNumbers

Illustrates the basic use of the arbitrary precision classes: BigInteger, BigRational, BigFloat.

### Prime Numbers

Illustrates working with prime numbers and the IntegerMath class in the Extreme.Mathematics namespace.

### FFT/Fourier Transforms

Illustrates how to compute the forward and inverse Fourier transform of a real or complex signal using classes in the Extreme.Mathematics.SignalProcessing namespace.

### Generic Algorithms

Illustrates how to write algorithms that are generic over the numerical type of the arguments.

## Calculus

### Basic Integration

Illustrates the basic numerical integration classes.

### Higher Dimensional Numerical Integration

Illustrates numerical integration of functions in higher dimensions using classes in the Extreme.Mathematics.Calculus namespace.

### Numerical Differentiation

Illustrates how to approximate the derivative of a function.

### Differential Equations

Illustrates integrating systems of ordinary differential equations (ODE's).

## Curves

### Basic Polynomials

Illustrates the basic use of the Polynomial class .

Illustrates more advanced uses of the Polynomial class, including real and complex root finding, calculating least squares polynomials and polynomial arithmetic.

### Chebyshev Series

Illustrates the basic use of the ChebyshevSeries class .

## Curve Fitting and Interpolation

### Linear Curve Fitting

Illustrates how to fit linear combinations of curves to data using the LinearCurveFitter class and other classes in the Extreme.Mathematics.Curves namespace.

### Nonlinear Curve Fitting

Illustrates nonlinear least squares curve fitting of predefined and user-defined curves using the NonlinearCurveFitter class.

### Piecewise Curves

Illustrates working with piecewise constant and piecewise linear curves using classes from the Extreme.Mathematics.Curves namespace.

### Cubic Splines

Illustrates using natural and clamped cubic splines for interpolation using classes in the Extreme.Mathematics.LinearAlgebra namespace.

## Solving Equations

### Newton-Raphson Equation Solver

Illustrates the use of the NewtonRaphsonSolver class for solving equations in one variable and related functions for numerical differentiation.

### Root Bracketing Solvers

Illustrates the use of the root bracketing solvers for solving equations in one variable.

### Nonlinear Systems

Illustrates the use of the NewtonRaphsonSystemSolver and DoglegSystemSolver classes for solving systems of nonlinear equations.

## Optimization

### Optimization In One Dimension

Illustrates the use of the Brent and Golden Section optimizer classes in the Extreme.Mathematics.Optimization namespace for one-dimensional optimization.

### Optimization In Multiple Dimensions

Illustrates the use of the multi-dimensional optimizer classes in the Extreme.Mathematics.Optimization namespace for optimization in multiple dimensions.

### Linear Programming

Illustrates solving linear programming (LP) problems using classes in the Extreme.Mathematics.Optimization.LinearProgramming namespace.

### Mixed Integer Programming

Illustrates how to solve mixed integer programming by solving Sudoku puzzles using the linear programming solver.

Illustrates how to solve optimization problems a quadratic objective function and linear constraints using classes in the Extreme.Mathematics.Optimization namespace.

### Nonlinear Programming

Illustrates solving nonlinear programs (optimization problems with linear or nonlinear constraints) using the NonlinearProgram and related classes.

## Random numbers and Quasi-Random Sequences

### Random Number Generators

Illustrates how to use specialized random number generator classes in the Extreme.Statistics.Random namespace.

### Non-Uniform Random Numbers

Illustrates how to generate random numbers from a non-uniform distribution.

### Quasi-Random Sequences

Illustrates how to generate quasi-random sequences like FaurÃ© and Sobol sequences using classes in the Extreme.Statistics.Random namespace.