liba 0.1.15
An algorithm library based on C/C++
 
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Modules Pages
Loading...
Searching...
No Matches
linalg.h
Go to the documentation of this file.
1
5
6#ifndef LIBA_LINALG_H
7#define LIBA_LINALG_H
8
9#include "a.h"
10
16
17#if defined(__cplusplus)
18extern "C" {
19#endif /* __cplusplus */
20
26A_EXTERN void a_real_T1(a_uint n, a_real *A);
27
35A_EXTERN void a_real_T2(a_uint m, a_uint n, a_real const *__restrict A, a_real *__restrict T);
36
42A_EXTERN void a_real_eye1(a_uint n, a_real *E);
43
50A_EXTERN void a_real_eye2(a_uint m, a_uint n, a_real *E);
51
57A_EXTERN void a_real_tri1(a_uint n, a_real *L);
58
65A_EXTERN void a_real_tri2(a_uint m, a_uint n, a_real *L);
66
73A_EXTERN void a_real_diag(a_uint n, a_real const *__restrict a, a_real *__restrict A);
74
81A_EXTERN void a_real_diag1(a_uint n, a_real const *__restrict A, a_real *__restrict a);
82
90A_EXTERN void a_real_diag2(a_uint m, a_uint n, a_real const *__restrict A, a_real *__restrict a);
91
98A_EXTERN void a_real_triL(a_uint n, a_real const *__restrict A, a_real *__restrict L);
99
106A_EXTERN void a_real_triL1(a_uint n, a_real const *__restrict A, a_real *__restrict L);
107
115A_EXTERN void a_real_triL2(a_uint m, a_uint n, a_real const *__restrict A, a_real *__restrict L);
116
123A_EXTERN void a_real_triU(a_uint n, a_real const *__restrict A, a_real *__restrict U);
124
131A_EXTERN void a_real_triU1(a_uint n, a_real const *__restrict A, a_real *__restrict U);
132
140A_EXTERN void a_real_triU2(a_uint m, a_uint n, a_real const *__restrict A, a_real *__restrict U);
141
171A_EXTERN void a_real_mulmm(a_uint row, a_uint c_r, a_uint col, a_real const *__restrict X, a_real const *__restrict Y, a_real *__restrict Z);
172
213A_EXTERN void a_real_mulTm(a_uint c_r, a_uint row, a_uint col, a_real const *__restrict X, a_real const *__restrict Y, a_real *__restrict Z);
214
244A_EXTERN void a_real_mulmT(a_uint row, a_uint col, a_uint c_r, a_real const *__restrict X, a_real const *__restrict Y, a_real *__restrict Z);
245
275A_EXTERN void a_real_mulTT(a_uint row, a_uint c_r, a_uint col, a_real const *__restrict X, a_real const *__restrict Y, a_real *__restrict Z);
276
293A_EXTERN int a_real_plu(a_uint n, a_real *A, a_uint *p, int *sign);
294
301A_EXTERN void a_real_plu_P(a_uint n, a_uint const *__restrict p, a_real *__restrict P);
302A_EXTERN void a_real_plu_P_(a_uint n, a_uint const *__restrict p, a_real *__restrict P);
303
310A_EXTERN void a_real_plu_L(a_uint n, a_real const *__restrict A, a_real *__restrict L);
311
318A_EXTERN void a_real_plu_U(a_uint n, a_real const *__restrict A, a_real *__restrict U);
319
327A_EXTERN void a_real_plu_apply(a_uint n, a_uint const *__restrict p, a_real const *__restrict b, a_real *__restrict Pb);
328
335A_EXTERN void a_real_plu_lower(a_uint n, a_real const *L, a_real *y);
336A_EXTERN void a_real_plu_lower_(a_uint n, a_real const *L, a_real *y);
337
344A_EXTERN void a_real_plu_upper(a_uint n, a_real const *U, a_real *x);
345A_EXTERN void a_real_plu_upper_(a_uint n, a_real const *U, a_real *x);
346
355A_EXTERN void a_real_plu_solve(a_uint n, a_real const *A, a_uint const *p, a_real const *b, a_real *x);
356
365A_EXTERN void a_real_plu_inv(a_uint n, a_real const *A, a_uint const *p, a_real *b, a_real *I);
366A_EXTERN void a_real_plu_inv_(a_uint n, a_real const *A, a_uint const *p, a_real *I);
367
375A_EXTERN a_real a_real_plu_det(a_uint n, a_real const *A, int sign);
376
383A_EXTERN a_real a_real_plu_lndet(a_uint n, a_real const *A);
384
392A_EXTERN int a_real_plu_sgndet(a_uint n, a_real const *A, int sign);
393
405A_EXTERN int a_real_ldl(a_uint n, a_real *A);
406
413A_EXTERN void a_real_ldl_L(a_uint n, a_real const *__restrict A, a_real *__restrict L);
414
421A_EXTERN void a_real_ldl_D(a_uint n, a_real const *__restrict A, a_real *__restrict d);
422
429A_EXTERN void a_real_ldl_lower(a_uint n, a_real const *L, a_real *y);
430A_EXTERN void a_real_ldl_lower_(a_uint n, a_real const *L, a_real *y);
431
438A_EXTERN void a_real_ldl_upper(a_uint n, a_real const *L, a_real *x);
439A_EXTERN void a_real_ldl_upper_(a_uint n, a_real const *L, a_real *x);
440
447A_EXTERN void a_real_ldl_solve(a_uint n, a_real const *A, a_real *x);
448
456A_EXTERN void a_real_ldl_inv(a_uint n, a_real const *A, a_real *b, a_real *I);
457A_EXTERN void a_real_ldl_inv_(a_uint n, a_real const *A, a_real *I);
458
465A_EXTERN a_real a_real_ldl_det(a_uint n, a_real const *A);
466
473A_EXTERN a_real a_real_ldl_lndet(a_uint n, a_real const *A);
474
481A_EXTERN int a_real_ldl_sgndet(a_uint n, a_real const *A);
482
491A_EXTERN int a_real_llt(a_uint n, a_real *A);
492
499A_EXTERN void a_real_llt_L(a_uint n, a_real const *__restrict A, a_real *__restrict L);
500
507A_EXTERN void a_real_llt_lower(a_uint n, a_real const *L, a_real *y);
508A_EXTERN void a_real_llt_lower_(a_uint n, a_real const *L, a_real *y);
509
516A_EXTERN void a_real_llt_upper(a_uint n, a_real const *L, a_real *x);
517A_EXTERN void a_real_llt_upper_(a_uint n, a_real const *L, a_real *x);
518
525A_EXTERN void a_real_llt_solve(a_uint n, a_real const *A, a_real *x);
526
534A_EXTERN void a_real_llt_inv(a_uint n, a_real const *A, a_real *b, a_real *I);
535A_EXTERN void a_real_llt_inv_(a_uint n, a_real const *A, a_real *I);
536
543A_EXTERN a_real a_real_llt_det(a_uint n, a_real const *A);
544
551A_EXTERN a_real a_real_llt_lndet(a_uint n, a_real const *A);
552
553#if defined(__cplusplus)
554} /* extern "C" */
555#endif /* __cplusplus */
556
558
559#endif /* a/linalg.h */
algorithm library
void a_real_llt_solve(a_uint n, a_real const *A, a_real *x)
solve the linear system Ax = b using the Cholesky factorization A = LL^T.
void a_real_ldl_L(a_uint n, a_real const *__restrict A, a_real *__restrict L)
extract the lower triangular matrix L from matrix A.
void a_real_tri2(a_uint m, a_uint n, a_real *L)
generate an m x n matrix with ones in the lower triangular part and zeros elsewhere.
void a_real_triL(a_uint n, a_real const *__restrict A, a_real *__restrict L)
extract the lower triangular part of a square matrix, including the diagonal.
int a_real_ldl_sgndet(a_uint n, a_real const *A)
compute the sign of the determinant of a matrix using its LDL decomposition.
void a_real_T2(a_uint m, a_uint n, a_real const *__restrict A, a_real *__restrict T)
transpose a given m x n matrix A into an n x m matrix T.
void a_real_plu_solve(a_uint n, a_real const *A, a_uint const *p, a_real const *b, a_real *x)
solve the linear system Ax = b using LU decomposition with partial pivoting.
void a_real_eye2(a_uint m, a_uint n, a_real *E)
generate an m x n matrix with ones on the diagonal and zeros elsewhere.
void a_real_T1(a_uint n, a_real *A)
transpose an n x n square matrix in-place.
void a_real_ldl_upper(a_uint n, a_real const *L, a_real *x)
solve the upper triangular system D L^T x = y for x.
void a_real_ldl_inv(a_uint n, a_real const *A, a_real *b, a_real *I)
compute the inverse of a matrix using its LDL factorization A = LDL^T.
void a_real_diag2(a_uint m, a_uint n, a_real const *__restrict A, a_real *__restrict a)
extract a diagonal vector from a given diagonal matrix.
void a_real_plu_inv(a_uint n, a_real const *A, a_uint const *p, a_real *b, a_real *I)
compute the inverse of a matrix using its LU decomposition and permutation matrix.
int a_real_plu(a_uint n, a_real *A, a_uint *p, int *sign)
compute LU decomposition of a square matrix with partial pivoting.
void a_real_plu_L(a_uint n, a_real const *__restrict A, a_real *__restrict L)
extract the lower triangular matrix L from matrix A.
void a_real_plu_U(a_uint n, a_real const *__restrict A, a_real *__restrict U)
extract the upper triangular matrix U from matrix A.
int a_real_llt(a_uint n, a_real *A)
compute Cholesky decomposition of a symmetric positive-definite matrix.
a_real a_real_plu_lndet(a_uint n, a_real const *A)
compute the natural logarithm of the absolute value of the determinant of a matrix using its LU decom...
a_real a_real_ldl_lndet(a_uint n, a_real const *A)
compute the natural logarithm of the absolute value of the determinant of a matrix using its LDL deco...
int a_real_plu_sgndet(a_uint n, a_real const *A, int sign)
compute the sign of the determinant of a matrix using its LU decomposition.
void a_real_tri1(a_uint n, a_real *L)
generate an m x n matrix with ones in the lower triangular part and zeros elsewhere.
a_real a_real_plu_det(a_uint n, a_real const *A, int sign)
compute the determinant of a matrix using its LU decomposition.
void a_real_llt_L(a_uint n, a_real const *__restrict A, a_real *__restrict L)
extract the lower triangular matrix L from matrix A.
int a_real_ldl(a_uint n, a_real *A)
compute LDL decomposition of a symmetric matrix.
void a_real_plu_upper(a_uint n, a_real const *U, a_real *x)
solve the upper triangular system Ux = y for x.
void a_real_eye1(a_uint n, a_real *E)
generate an m x n matrix with ones on the diagonal and zeros elsewhere.
void a_real_triU1(a_uint n, a_real const *__restrict A, a_real *__restrict U)
extract the upper triangular part of a square matrix, set the diagonal to 1.
void a_real_ldl_D(a_uint n, a_real const *__restrict A, a_real *__restrict d)
extract the diagonal vector D from matrix A.
void a_real_diag1(a_uint n, a_real const *__restrict A, a_real *__restrict a)
extract a diagonal vector from a given diagonal matrix.
void a_real_ldl_lower(a_uint n, a_real const *L, a_real *y)
solve the lower triangular system Ly = b for y.
void a_real_mulmT(a_uint row, a_uint col, a_uint c_r, a_real const *__restrict X, a_real const *__restrict Y, a_real *__restrict Z)
multiply matrix X with the transpose of matrix Y, storing the result in Z.
void a_real_plu_lower(a_uint n, a_real const *L, a_real *y)
solve the lower triangular system Ly = Pb for y.
a_real a_real_ldl_det(a_uint n, a_real const *A)
compute the determinant of a matrix using its LDL decomposition.
void a_real_mulTm(a_uint c_r, a_uint row, a_uint col, a_real const *__restrict X, a_real const *__restrict Y, a_real *__restrict Z)
multiply the transpose of matrix X with matrix Y, storing the result in Z.
void a_real_triL2(a_uint m, a_uint n, a_real const *__restrict A, a_real *__restrict L)
extract the lower triangular part of a square matrix, including the diagonal.
a_real a_real_llt_det(a_uint n, a_real const *A)
compute the determinant of a matrix using its Cholesky decomposition.
void a_real_ldl_solve(a_uint n, a_real const *A, a_real *x)
solve the linear system Ax = b using the LDL factorization A = LDL^T.
a_real a_real_llt_lndet(a_uint n, a_real const *A)
compute the natural logarithm of the absolute value of the determinant of a matrix using its Cholesky...
void a_real_llt_inv(a_uint n, a_real const *A, a_real *b, a_real *I)
compute the inverse of a matrix using its Cholesky factorization A = LL^T.
void a_real_llt_lower(a_uint n, a_real const *L, a_real *y)
solve the lower triangular system Ly = b for y.
void a_real_mulTT(a_uint row, a_uint c_r, a_uint col, a_real const *__restrict X, a_real const *__restrict Y, a_real *__restrict Z)
multiply the transpose of matrix X with the transpose of matrix Y, storing the result in Z.
void a_real_llt_upper(a_uint n, a_real const *L, a_real *x)
solve the upper triangular system L^T x = y for x.
void a_real_triL1(a_uint n, a_real const *__restrict A, a_real *__restrict L)
extract the lower triangular part of a square matrix, set the diagonal to 1.
void a_real_plu_apply(a_uint n, a_uint const *__restrict p, a_real const *__restrict b, a_real *__restrict Pb)
apply the permutation P to the vector b, producing Pb.
void a_real_triU(a_uint n, a_real const *__restrict A, a_real *__restrict U)
extract the upper triangular part of a square matrix, including the diagonal.
void a_real_diag(a_uint n, a_real const *__restrict a, a_real *__restrict A)
compute a diagonal matrix from a given diagonal vector.
void a_real_mulmm(a_uint row, a_uint c_r, a_uint col, a_real const *__restrict X, a_real const *__restrict Y, a_real *__restrict Z)
multiply two matrices X and Y, storing the result in Z.
void a_real_plu_P(a_uint n, a_uint const *__restrict p, a_real *__restrict P)
construct the permutation matrix P from a permutation vector p.
void a_real_triU2(a_uint m, a_uint n, a_real const *__restrict A, a_real *__restrict U)
extract the upper triangular part of a square matrix, including the diagonal.
double a_real
compiler built-in floating-point number type
Definition a.h:1006
unsigned int a_uint
unsigned integer type is guaranteed to be at least 16 bits
Definition a.h:337