# ldmat Class Reference

Matrix stored in LD form, (commonly known as UD). More...

`#include <square_mat.h>`

List of all members.

## Public Member Functions
| ldmat (const mat &L, const vec &D)
| Construct by copy of L and D.
| ldmat (const mat &V)
| Construct by decomposition of full matrix V.
| ldmat (const ldmat &V0, const ivec &perm)
| Construct by restructuring of V0 accordint to permutation vector perm.
| ldmat (vec D0)
| Construct diagonal matrix with diagonal D0.
| ldmat ()
| Default constructor.
| ldmat (const int dim0)
| Default initialization with proper size.
virtual | ~ldmat ()
| Destructor for future use;.
void | opupdt (const vec &v, double w)
mat | to_mat () const
| Conversion to full matrix.
void | mult_sym (const mat &C)
| Inplace symmetric multiplication by a SQUARE matrix , i.e. .
void | mult_sym_t (const mat &C)
| Inplace symmetric multiplication by a SQUARE transpose of matrix , i.e. .
void | add (const ldmat &ld2, double w=1.0)
| Add another matrix in LD form with weight w.
double | logdet () const
| Logarithm of a determinant.
double | qform (const vec &v) const
| Evaluates quadratic form ;.
double | invqform (const vec &v) const
| Evaluates quadratic form ;.
void | clear ()
| Clearing matrix so that it corresponds to zeros.
vec | sqrt_mult (const vec &v) const
| Multiplies square root of by vector .
void | inv (ldmat &Inv) const
| Matrix inversion preserving the chosen form.
void | mult_sym (const mat &C, ldmat &U) const
| Symmetric multiplication of by a general matrix , result of which is stored in the current class.
void | mult_sym_t (const mat &C, ldmat &U) const
| Symmetric multiplication of by a transpose of a general matrix , result of which is stored in the current class.
void | ldform (const mat &A, const vec &D0)
| Transforms general into pure .
void | setD (const vec &nD)
| Access functions.
void | setD (const vec &nD, int i)
| Access functions.
void | setL (const vec &nL)
| Access functions.
const vec & | _D () const
| Access functions.
const mat & | _L () const
| Access functions.
ldmat & | operator+= (const ldmat &ldA)
| add another ldmat matrix
ldmat & | operator-= (const ldmat &ldA)
| subtract another ldmat matrix
ldmat & | operator*= (double x)
| multiply by a scalar
int | cols () const
| Reimplementing common functions of mat: cols().
int | rows () const
| Reimplementing common functions of mat: rows().
## Protected Attributes
vec | D
| Positive vector .
mat | L
| Lower-triangular matrix .
int | dim
| dimension of the square matrix
## Friends
std::ostream & | operator<< (std::ostream &os, const ldmat &sq)
| print both `L` and `D`

## Detailed Description

Matrix stored in LD form, (commonly known as UD).

Matrix is decomposed as follows:

where only and matrices are stored. All inplace operations modifies only these and the need to compose and decompose the matrix is avoided.

## Member Function Documentation

void ldmat::inv | ( | ldmat & | Inv | ) | const

Matrix inversion preserving the chosen form.

Parameters:

  | Inv | a space where the inverse is stored.

References clear(), D, L, and ldform().

Referenced by bdm::egiw::variance().

void ldmat::ldform | ( | const mat & | A,
|  | const vec & | D0 |
| ) |  |  |

Transforms general into pure .

The new decomposition fullfills:

Parameters:

  | A | general matrix
  | D0 | general vector

References D, sqmat::dim, and L.

Referenced by inv(), ldmat(), mult_sym(), and mult_sym_t().

void ldmat::mult_sym | ( | const mat & | C,
|  | ldmat & | U |
| ) |  |  | const

Symmetric multiplication of by a general matrix , result of which is stored in the current class.

Parameters:

  | C | matrix to multiply with
  | U | a space where the inverse is stored.

References D, L, and ldform().

void ldmat::mult_sym | ( | const mat & | C | ) | `[virtual]`

Inplace symmetric multiplication by a SQUARE matrix , i.e. .

Parameters:

  | C | multiplying matrix,

Implements sqmat.

References D, L, and ldform().

void ldmat::mult_sym_t | ( | const mat & | C,
|  | ldmat & | U |
| ) |  |  | const

Symmetric multiplication of by a transpose of a general matrix , result of which is stored in the current class.

Parameters:

  | C | matrix to multiply with
  | U | a space where the inverse is stored.

References D, L, and ldform().

void ldmat::mult_sym_t | ( | const mat & | C | ) | `[virtual]`

Inplace symmetric multiplication by a SQUARE transpose of matrix , i.e. .

Parameters:

  | C | multiplying matrix,

Implements sqmat.

References D, L, and ldform().

ldmat & ldmat::operator+= | ( | const ldmat & | ldA | ) | `[inline]`

add another ldmat matrix

Operations: mapping of add operation to operators

References add().

ldmat & ldmat::operator-= | ( | const ldmat & | ldA | ) | `[inline]`

subtract another ldmat matrix

mapping of negative add operation to operators

References add().

void ldmat::opupdt | ( | const vec & | v,
|  | double | w |
| ) |  |  | `[virtual]`

Perfroms a rank-1 update by outer product of vectors: .

Parameters:

  | v | Vector forming the outer product to be added
  | w | weight of updating; can be negative

BLAS-2b operation.

Implements sqmat.

References D, sqmat::dim, and L.

Referenced by add(), bdm::ARX::bayes(), and bdm::ARX::logpred().

vec ldmat::sqrt_mult | ( | const vec & | v | ) | const`[virtual]`

Multiplies square root of by vector .

Used e.g. in generating normal samples.

Implements sqmat.

References D, sqmat::dim, and L.

The documentation for this class was generated from the following files:

- square_mat.h
- square_mat.cpp