# Fundamental Objects

*Matrix* is a

*Vector<RealVector>*.

*RealVector* is a

*Vector<Real>*.

*Real* is used as an alias for

*System.Double* throughout the project.

*
Vector<T>* inherits from

*List<T>*.

## Matrix and Vector Factories

Classes

Matrix and

RealVector both have factories that can be used to make it easy to generate arbitrary matrices.

### Matrix and Vector Factories Example

//create a 25 row by 70 column matrix with random integer elements between [0, 1000 )
Matrix A = Matrix.Random( 25, 70, 36, 0, 1000 );
RealVector vec = RealVector.Random( 70, 36, 0, 1000 );
A.Add( vec ); //dimension checking is not done for you, this is to improve efficiency

## Algorithms

The

*Matrix*,

*RealVector*, and

*Vector<T>* classes have several fairly efficient general purpose operations implemented already.

These operations are fundamental to linear algebra and I suspect that most of the library will be implemented through the clever usage of these algorithms.