# hippodraw::Numeric Namespace Reference

## Detailed Description

Collection of linear algebra functions.

## Functions

int allocateMatrix (std::vector< std::vector< double > > &A, int m, int n)
Allocates a matrix of size m x n.
int allocateVector (std::vector< double > &x, int n)
Allocates a vector of size n.
int cholBackSolve (const std::vector< std::vector< double > > &L, std::vector< double > &x, const std::vector< double > &b)
Solves the equation LL'x = b where L is lower triangular matrix.
int cholFactor (std::vector< std::vector< double > > &A)
The subroutine which does cholesky factorization of a given Symmetric positive definite matrix (say) A.
int eye (std::vector< std::vector< double > > &M, int n)
Creates an n x n identity matrix for M.
double gammln (double xx)
Calculates natural log of a gamma function.
double gammq (double a, double x)
Calculates Q, the probability that the chi2 should exceed a particilar chi2 (input) by chance.
void gcf (double *gammcf, double a, double x, double *gln)
Calculates Q, the probability that the chi2 should exceed a particilar chi2 (input) by chance, by using continued fractions.
void gser (double *gamser, double a, double x, double *gln)
Calculates Q, the probability that the chi2 should exceed a particilar chi2 (input) by chance, by using series approximation.
double innerProduct (const std::vector< double > &a, const std::vector< double > &b)
Computes the dot or the inner product of two vectors(i.e.
int invertMatrix (const std::vector< std::vector< double > > &A, std::vector< std::vector< double > > &Ainv)
Inverts a SPD matrix a to get inverse Ainv using the cholesky factorization.
double norm (const std::vector< double > &a)
Computes the two norm of the vector.
std::vector< vector< double > > operator * (const std::vector< std::vector< double > > &A, const std::vector< std::vector< double > > &B)
Computes Matrix Matrix Product C=A*B.
std::vector< double > operator * (const std::vector< double > &x, const std::vector< std::vector< double > > &A)
Computes the vector matrix product y = x'A.
std::vector< double > operator * (const std::vector< std::vector< double > > &A, const std::vector< double > &x)
Computes the Matrix vector product y = Ax.
std::vector< std::vector<
double > >
operator * (double a, const std::vector< std::vector< double > > &A)
Computes the scalar matrix product B = aA.
std::vector< double > operator * (double a, const std::vector< double > &x)
Given a scalar a and a vector x this function performs operation y = ax.
std::vector< vector< double > > operator+ (const std::vector< std::vector< double > > &A, const std::vector< std::vector< double > > &B)
Given two matrices A and B this function performs operation C = A + B.
std::vector< double > operator+ (const std::vector< double > &x, const std::vector< double > &y)
Given two vectors x and y this function performs operation z = x + y.
std::vector< vector< double > > operator- (const std::vector< std::vector< double > > &A, const std::vector< std::vector< double > > &B)
Given two matrices A and B this function performs operation C = A - B.
std::vector< double > operator- (const std::vector< double > &y)
Given a vector y this function performs operation z = - y.
std::vector< double > operator- (const std::vector< double > &x, const std::vector< double > &y)
Given two vectors x and y this function performs operation z = x - y.
std::vector< std::vector<
double > >
operator/ (const std::vector< std::vector< double > > &A, double a)
Computes the scalar matrix product B = A/a.
std::vector< double > operator/ (const std::vector< double > &x, double a)
Given a scalar and a vector x this function performs operation y = x/a.
vector< vector< double > > outerProduct (const std::vector< double > &a, const std::vector< double > &b)
Computes the outer product of two vectors (i.e.
double quadraticProduct (const std::vector< std::vector< double > > &A, const std::vector< double > x)
Calculates the vector-matrix-vector product x'*A*x.
int write (const std::vector< std::vector< double > > &A)
Given the matrix it writes it to std stream.
int write (const std::vector< double > &x)
Given the vector it writes it to std stream.

## Function Documentation

 int allocateMatrix ( std::vector< std::vector< double > > & A, int m, int n )

Allocates a matrix of size m x n.

Definition at line 450 of file NumLinAlg.cxx.

 int allocateVector ( std::vector< double > & x, int n )

Allocates a vector of size n.

Definition at line 465 of file NumLinAlg.cxx.

 int cholBackSolve ( const std::vector< std::vector< double > > & L, std::vector< double > & x, const std::vector< double > & b )

Solves the equation LL'x = b where L is lower triangular matrix.

Definition at line 323 of file NumLinAlg.cxx.

Referenced by invertMatrix().

 int cholFactor ( std::vector< std::vector< double > > & A )

The subroutine which does cholesky factorization of a given Symmetric positive definite matrix (say) A.

It over-writes A by resulting lower triangular matrix

Definition at line 290 of file NumLinAlg.cxx.

Referenced by BFGSFitter::calcCovariance(), and invertMatrix().

 int eye ( std::vector< std::vector< double > > & I, int n )

Creates an n x n identity matrix for M.

Definition at line 403 of file NumLinAlg.cxx.

Referenced by BFGSFitter::calcBestFit().

 double gammln ( double xx )

Calculates natural log of a gamma function.

Definition at line 24 of file Gammaq.cxx.

Referenced by gcf(), and gser().

 double gammq ( double a, double x )

Calculates Q, the probability that the chi2 should exceed a particilar chi2 (input) by chance.

It internally calls gser and gcf depending on the input range.

Definition at line 116 of file Gammaq.cxx.

References gcf(), and gser().

Referenced by FunctionController::ellipsoidNTuple().

 void gcf ( double * gammcf, double a, double x, double * gln )

Calculates Q, the probability that the chi2 should exceed a particilar chi2 (input) by chance, by using continued fractions.

Definition at line 78 of file Gammaq.cxx.

References EPS, FPMIN, gammln(), and ITMAX.

Referenced by gammq().

 void gser ( double * gamser, double a, double x, double * gln )

Calculates Q, the probability that the chi2 should exceed a particilar chi2 (input) by chance, by using series approximation.

Definition at line 43 of file Gammaq.cxx.

References EPS, gammln(), and ITMAX.

Referenced by gammq().

 double innerProduct ( const std::vector< double > & a, const std::vector< double > & b )

Computes the dot or the inner product of two vectors(i.e.

a'b)

Definition at line 237 of file NumLinAlg.cxx.

Referenced by BFGSFitter::calcBestFit(), and norm().

 int invertMatrix ( const std::vector< std::vector< double > > & A, std::vector< std::vector< double > > & Ainv )

Inverts a SPD matrix a to get inverse Ainv using the cholesky factorization.

It inverts the matrix by repeatedly solving Ax = ei

Definition at line 354 of file NumLinAlg.cxx.

References cholBackSolve(), and cholFactor().

Referenced by LMFitter::calcCovariance(), and FunctionController::ellipsoidNTuple().

 double norm ( const std::vector< double > & a )

Computes the two norm of the vector.

Definition at line 283 of file NumLinAlg.cxx.

References innerProduct().

 std::vector< std::vector< double > > operator * ( const std::vector< std::vector< double > > & A, const std::vector< std::vector< double > > & B )

Computes Matrix Matrix Product C=A*B.

Definition at line 217 of file NumLinAlg.cxx.

 std::vector< double > operator * ( const std::vector< double > & x, const std::vector< std::vector< double > > & A )

Computes the vector matrix product y = x'A.

Definition at line 200 of file NumLinAlg.cxx.

 std::vector< double > operator * ( const std::vector< std::vector< double > > & A, const std::vector< double > & x )

Computes the Matrix vector product y = Ax.

Definition at line 183 of file NumLinAlg.cxx.

 std::vector< std::vector< double > > operator * ( double a, const std::vector< std::vector< double > > & A )

Computes the scalar matrix product B = aA.

Definition at line 147 of file NumLinAlg.cxx.

 std::vector< double > operator * ( double a, const std::vector< double > & x )

Given a scalar a and a vector x this function performs operation y = ax.

Definition at line 117 of file NumLinAlg.cxx.

 std::vector< std::vector< double > > operator+ ( const std::vector< std::vector< double > > & A, const std::vector< std::vector< double > > & B )

Given two matrices A and B this function performs operation C = A + B.

Definition at line 80 of file NumLinAlg.cxx.

 std::vector< double > operator+ ( const std::vector< double > & x, const std::vector< double > & y )

Given two vectors x and y this function performs operation z = x + y.

Definition at line 36 of file NumLinAlg.cxx.

 std::vector< std::vector< double > > operator- ( const std::vector< std::vector< double > > & A, const std::vector< std::vector< double > > & B )

Given two matrices A and B this function performs operation C = A - B.

Definition at line 98 of file NumLinAlg.cxx.

 std::vector< double > operator- ( const std::vector< double > & y )

Given a vector y this function performs operation z = - y.

Definition at line 66 of file NumLinAlg.cxx.

 std::vector< double > operator- ( const std::vector< double > & x, const std::vector< double > & y )

Given two vectors x and y this function performs operation z = x - y.

Definition at line 51 of file NumLinAlg.cxx.

 std::vector< std::vector< double > > operator/ ( const std::vector< std::vector< double > > & A, double a )

Computes the scalar matrix product B = A/a.

Definition at line 164 of file NumLinAlg.cxx.

 std::vector< double > operator/ ( const std::vector< double > & x, double a )

Given a scalar and a vector x this function performs operation y = x/a.

Definition at line 131 of file NumLinAlg.cxx.

 std::vector< std::vector< double > > outerProduct ( const std::vector< double > & a, const std::vector< double > & b )

Computes the outer product of two vectors (i.e.

C = ab')

Definition at line 250 of file NumLinAlg.cxx.

Referenced by BFGSFitter::calcBestFit().

 double quadraticProduct ( const std::vector< std::vector< double > > & A, const std::vector< double > x )

Calculates the vector-matrix-vector product x'*A*x.

Definition at line 266 of file NumLinAlg.cxx.

Referenced by FunctionController::ellipsoidNTuple().

 int write ( const std::vector< std::vector< double > > & A )

Given the matrix it writes it to std stream.

Definition at line 432 of file NumLinAlg.cxx.

 int write ( const std::vector< double > & a )

Given the vector it writes it to std stream.

Definition at line 419 of file NumLinAlg.cxx.

Generated for HippoDraw Class Library by 