**Chapter
2. **** The Core Namespace** (.NET, C#, CSharp, VB, Visual Basic, F#)

The CenterSpace.NMath.Core
namespace is the foundational **NMath****
namespace. **It provides:

● Single- and double-precision complex number classes.

● 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 (Add(), Subtract(), and so on) for those that do not.

● Extension of standard mathematical functions, such as Cos(), Sqrt(), and Exp(), to work with vectors, matrices, and complex number classes.

● LU factorization for a matrix, as well as functions for solving linear systems, computing determinants, inverses, and condition numbers.

● Least Squares solutions.

● Random number generation from various probability distributions.

● Fast Fourier Transforms (FFTs), and linear convolution and correlation.

● Discrete Wavelet Transforms (DWTs).

● 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.

● Data filtering, including a moving average filter and a Savitzky-Golay smoothing filter.

● Special functions, such factorial, binomial, the gamma function and related functions, Bessel functions, elliptic integrals, and many more.

To avoid using fully qualified names, preface your code with an appropriate namespace statement. For example:

Code Example – C#

using CenterSpace.NMath.Core;

Code Example – VB

imports CenterSpace.NMath.Core