25 #ifndef _ODE_MATRIX_H_
26 #define _ODE_MATRIX_H_
28 #include <ode/common.h>
38 ODE_API
void dSetZero (dReal *a,
int n);
39 ODE_API
void dSetValue (dReal *a,
int n, dReal value);
46 ODE_API dReal dDot (
const dReal *a,
const dReal *b,
int n);
70 ODE_API
void dMultiply0 (dReal *A,
const dReal *B,
const dReal *C,
int p,
int q,
int r);
71 ODE_API
void dMultiply1 (dReal *A,
const dReal *B,
const dReal *C,
int p,
int q,
int r);
72 ODE_API
void dMultiply2 (dReal *A,
const dReal *B,
const dReal *C,
int p,
int q,
int r);
81 ODE_API
int dFactorCholesky (dReal *A,
int n);
88 ODE_API
void dSolveCholesky (
const dReal *L, dReal *b,
int n);
96 ODE_API
int dInvertPDMatrix (
const dReal *A, dReal *Ainv,
int n);
105 ODE_API
int dIsPositiveDefinite (
const dReal *A,
int n);
115 ODE_API
void dFactorLDLT (dReal *A, dReal *d,
int n,
int nskip);
122 ODE_API
void dSolveL1 (
const dReal *L, dReal *b,
int n,
int nskip);
129 ODE_API
void dSolveL1T (
const dReal *L, dReal *b,
int n,
int nskip);
134 ODE_API
void dVectorScale (dReal *a,
const dReal *d,
int n);
143 ODE_API
void dSolveLDLT (
const dReal *L,
const dReal *d, dReal *b,
int n,
int nskip);
159 ODE_API
void dLDLTAddTL (dReal *L, dReal *d,
const dReal *a,
int n,
int nskip);
179 ODE_API
void dLDLTRemove (dReal **A,
const int *p, dReal *L, dReal *d,
180 int n1,
int n2,
int r,
int nskip);
187 ODE_API
void dRemoveRowCol (dReal *A,
int n,
int nskip,
int r);