#include <libDC.h>

Matrix is decomposed as follows:
![\[M = L'DL\]](form_20.png) 
 where only  and
 and  matrices are stored. All inplace operations modifies only these and the need to compose and decompose the matrix is avoided.
 matrices are stored. All inplace operations modifies only these and the need to compose and decompose the matrix is avoided. 
| 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. | |
| int | cols () const | 
| access function | |
| int | rows () const | 
| access function | |
| vec | sqrt_mult (const vec &v) const | 
| Multiplies square root of  by vector  . | |
| virtual 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 | |
| Protected Attributes | |
| vec | D | 
| Positive vector  . | |
| mat | L | 
| Lower-triangular matrix  . | |
| Friends | |
| std::ostream & | operator<< (std::ostream &os, const ldmat &sq) | 
| print both LandD | |
| void ldmat::opupdt | ( | const vec & | v, | |
| double | w | |||
| ) |  [virtual] | 
Perfroms a rank-1 update by outer product of vectors:  .
. 
| v | Vector forming the outer product to be added | |
| w | weight of updating; can be negative | 
Implements sqmat.
References D, sqmat::dim, dydr(), and L.
Referenced by add(), bdm::ARX::bayes(), and bdm::ARX::logpred().
| void ldmat::mult_sym | ( | const mat & | C | ) |  [virtual] | 
| void ldmat::mult_sym_t | ( | const mat & | C | ) |  [virtual] | 
| vec ldmat::sqrt_mult | ( | const vec & | v | ) | const  [virtual] | 
Multiplies square root of  by vector
 by vector  .
. 
Used e.g. in generating normal samples.
Implements sqmat.
References D, sqmat::dim, and L.
| void ldmat::inv | ( | ldmat & | Inv | ) | const  [virtual] | 
| void ldmat::mult_sym | ( | const mat & | C, | |
| ldmat & | U | |||
| ) | const | 
| void ldmat::mult_sym_t | ( | const mat & | C, | |
| ldmat & | U | |||
| ) | const | 
| void ldmat::ldform | ( | const mat & | A, | |
| const vec & | D0 | |||
| ) | 
Transforms general  into pure
 into pure  .
. 
The new decomposition fullfills:  
 
| A | general matrix | |
| D0 | general vector | 
References D, sqmat::dim, and L.
Referenced by inv(), ldmat(), mult_sym(), and mult_sym_t().
 1.5.6
 1.5.6