52 #define MATD_ALLOC(name, nrows, ncols) double name ## _storage [nrows*ncols]; matd_t name = { .nrows = nrows, .ncols = ncols, .data = &name ## _storage }; 65 #define MATD_EL(m, row, col) (m)->data[((row)*(m)->ncols + (col))] 274 return (a->
ncols == 1 && a->
nrows == (
unsigned int)len) || (a->
ncols == (
unsigned int)len && a->
nrows == 1);
377 #define MATD_SVD_NO_WARNINGS 1 matd_t * matd_create_scalar(double v)
void matd_print_transpose(const matd_t *m, const char *fmt)
matd_svd_t matd_svd(matd_t *A)
void matd_destroy(matd_t *m)
double matd_err_inf(const matd_t *a, const matd_t *b)
matd_t * matd_plu_l(const matd_plu_t *lu)
matd_t * matd_inverse(const matd_t *a)
matd_t * matd_op(const char *expr,...)
void matd_ltriangle_solve(matd_t *u, const double *b, double *x)
double matd_get_scalar(const matd_t *m)
matd_t * matd_plu_solve(const matd_plu_t *mlu, const matd_t *b)
void matd_utriangle_solve(matd_t *u, const double *b, double *x)
matd_t * matd_chol_inverse(matd_t *a)
matd_t * matd_create_dataf(int rows, int cols, const float *data)
matd_t * matd_solve(matd_t *A, matd_t *b)
double matd_vec_dot_product(const matd_t *a, const matd_t *b)
matd_t * matd_identity(int dim)
matd_t * matd_subtract(const matd_t *a, const matd_t *b)
matd_t * matd_create(int rows, int cols)
double matd_vec_dist_n(const matd_t *a, const matd_t *b, int n)
void matd_plu_destroy(matd_plu_t *mlu)
void matd_put_scalar(matd_t *m, double value)
double matd_vec_mag(const matd_t *a)
static int matd_is_scalar(const matd_t *a)
matd_t * matd_scale(const matd_t *a, double s)
void matd_put(matd_t *m, int row, int col, double value)
matd_t * matd_add(const matd_t *a, const matd_t *b)
matd_svd_t matd_svd_flags(matd_t *A, int flags)
matd_t * matd_copy(const matd_t *m)
static int matd_is_vector(const matd_t *a)
double matd_vec_dist(const matd_t *a, const matd_t *b)
matd_plu_t * matd_plu(const matd_t *a)
double matd_plu_det(const matd_plu_t *lu)
matd_t * matd_plu_u(const matd_plu_t *lu)
matd_t * matd_select(const matd_t *a, int r0, int r1, int c0, int c1)
matd_t * matd_vec_normalize(const matd_t *a)
matd_t * matd_multiply(const matd_t *a, const matd_t *b)
matd_t * matd_plu_p(const matd_plu_t *lu)
matd_t * matd_crossproduct(const matd_t *a, const matd_t *b)
void matd_add_inplace(matd_t *a, const matd_t *b)
void matd_ltransposetriangle_solve(matd_t *u, const double *b, double *x)
matd_t * matd_transpose(const matd_t *a)
void matd_scale_inplace(matd_t *a, double s)
double matd_det(const matd_t *a)
matd_t * matd_create_data(int rows, int cols, const double *data)
double matd_max(matd_t *m)
static void matd_set_data(matd_t *m, const double *data)
void matd_subtract_inplace(matd_t *a, const matd_t *b)
void matd_chol_destroy(matd_chol_t *chol)
matd_chol_t * matd_chol(matd_t *A)
void matd_print(const matd_t *m, const char *fmt)
static int matd_is_vector_len(const matd_t *a, int len)
matd_t * matd_chol_solve(const matd_chol_t *chol, const matd_t *b)
double matd_get(const matd_t *m, int row, int col)