liba 0.1.15
An algorithm library based on C/C++
 
Loading...
Searching...
No Matches
linalg.h File Reference

linear algebra functions More...

#include "a.h"
Include dependency graph for linalg.h:

Go to the source code of this file.

Functions

void a_linalg_T1 (a_float *A, a_uint n)
 transpose an n x n square matrix in-place.
 
void a_linalg_T2 (a_float *__restrict T, a_float const *__restrict A, a_uint m, a_uint n)
 transpose a given m x n matrix A into an n x m matrix T.
 
a_float a_linalg_dot (a_float const *X, a_float const *Y, a_size n)
 compute the dot product of two vectors.
 
void a_linalg_mulmm (a_float *__restrict Z, a_float const *__restrict X, a_float const *__restrict Y, a_uint row, a_uint c_r, a_uint col)
 multiply two matrices X and Y, storing the result in Z.
 
void a_linalg_mulTm (a_float *__restrict Z, a_float const *__restrict X, a_float const *__restrict Y, a_uint c_r, a_uint row, a_uint col)
 multiply the transpose of matrix X with matrix Y, storing the result in Z.
 
void a_linalg_mulmT (a_float *__restrict Z, a_float const *__restrict X, a_float const *__restrict Y, a_uint row, a_uint col, a_uint c_r)
 multiply matrix X with the transpose of matrix Y, storing the result in Z.
 
void a_linalg_mulTT (a_float *__restrict Z, a_float const *__restrict X, a_float const *__restrict Y, a_uint row, a_uint c_r, a_uint col)
 multiply the transpose of matrix X with the transpose of matrix Y, storing the result in Z.
 
int a_linalg_plu (a_float *A, a_uint n, a_uint *p, int *sign)
 compute LU decomposition of a square matrix with partial pivoting.
 
void a_linalg_plu_get_P (a_uint const *p, a_uint n, a_float *P)
 construct the permutation matrix P from a permutation vector p.
 
void a_linalg_plu_get_L (a_float const *A, a_uint n, a_float *L)
 extract the lower triangular matrix L from matrix A.
 
void a_linalg_plu_get_U (a_float const *A, a_uint n, a_float *U)
 extract the upper triangular matrix U from matrix A.
 
void a_linalg_plu_apply (a_uint const *p, a_uint n, a_float const *b, a_float *Pb)
 apply the permutation P to the vector b, producing Pb.
 
void a_linalg_plu_lower (a_float const *L, a_uint n, a_float *y)
 solve the lower triangular system Ly = Pb for y.
 
void a_linalg_plu_upper (a_float const *U, a_uint n, a_float *x)
 solve the upper triangular system Ux = y for x.
 
void a_linalg_plu_solve (a_float const *A, a_uint n, a_uint const *p, a_float const *b, a_float *x)
 solve the linear system Ax = b using LU decomposition with partial pivoting.
 
void a_linalg_plu_inv (a_float const *A, a_uint n, a_uint const *p, a_float *b, a_float *I)
 compute the inverse of a matrix using its LU decomposition and permutation matrix.
 
a_float a_linalg_plu_det (a_float const *A, a_uint n, int sign)
 compute the determinant of a matrix using its LU decomposition.
 
a_float a_linalg_plu_lndet (a_float const *A, a_uint n)
 compute the natural logarithm of the absolute value of the determinant of a matrix using its LU decomposition.
 
int a_linalg_plu_sgndet (a_float const *A, a_uint n, int sign)
 compute the sign of the determinant of a matrix using its LU decomposition.
 
int a_linalg_cho (a_float *A, a_uint n)
 compute Cholesky decomposition of a symmetric positive-definite matrix.
 
void a_linalg_cho_get_L (a_float const *A, a_uint n, a_float *L)
 extract the lower triangular matrix L from matrix A.
 
void a_linalg_cho_lower (a_float const *L, a_uint n, a_float *y)
 solve the lower triangular system Ly = b for y.
 
void a_linalg_cho_upper (a_float const *L, a_uint n, a_float *x)
 solve the upper triangular system L^T x = y for x.
 
void a_linalg_cho_solve (a_float const *A, a_uint n, a_float *x)
 solve the linear system Ax = b using the Cholesky factorization A = LL^T.
 
void a_linalg_cho_inv (a_float const *A, a_uint n, a_float *b, a_float *I)
 compute the inverse of a matrix using its Cholesky factorization A = LL^T.
 

Detailed Description

linear algebra functions