Mir 1.0
Mir application programming interface

Modules

 Allocation and freeing of objects
 
 Resizing of objects
 
 Copying of objects
 
 Moving of objects
 
 Initialization of objects
 
 Basic operations with vectors and matrices
 
 Norms of vectors and matrices
 
 Setters and getters
 

Data Structures

struct  mirml_mh_vector_t_
 
struct  mirml_mh_matrix_t_
 Matrix definition. More...
 
struct  mirml_mh_permutation_t_
 Permutation definition. More...
 
struct  mirml_mh_bandm_t_
 Band matrix definition. More...
 
struct  mirml_mh_ivector_t_
 Vector of integer numbers. More...
 
struct  mirml_mh_i64vector_t_
 Vector of 64-bit integer numbers. More...
 
struct  mirml_mh_row_elt_t_
 Element of row in sparse matrices. More...
 
struct  mirml_mh_sprow_t_
 Row in sparse matrices. More...
 
struct  mirml_mh_spmatrix_t_
 Sparse matrix. More...
 
struct  mirml_mh_iter_t_
 Basic structure for iterative methods. More...
 

Macros

#define mirml_mh_sprow_idx2(r, c, hint)
 
#define mirml_mh_iter_Ax(ip, fun, fun_par)    (ip->Ax=(mirml_mh_Fun_Ax)(fun),ip->A_par=(void *)(fun_par),0)
 
#define mirml_mh_iter_ATx(ip, fun, fun_par)    (ip->ATx=(mirml_mh_Fun_Ax)(fun),ip->AT_par=(void *)(fun_par),0)
 
#define mirml_iter_Bx(ip, fun, fun_par)    (ip->Bx=(mirml_mh_Fun_Ax)(fun),ip->B_par=(void *)(fun_par),0)
 
#define mirml_mh_iter_BTx(ip, fun, fun_par)    (ip->BTx=(mirml_mh_Fun_Ax)(fun),ip->BT_par=(void *)(fun_par),0)
 

Functions

void mirml_mh_m_foutput (FILE *fp, const char *format, const mirml_mh_matrix_t *a)
 
void mirml_mh_px_foutput (FILE *fp, const mirml_mh_permutation_t *px)
 
void mirml_mh_v_foutput (FILE *fp, const char *format, const mirml_mh_vector_t *x)
 
void mirml_mh_iv_foutput (FILE *fp, const char *format, const mirml_mh_ivector_t *x)
 
mirkl_error_tmirml_mh_LUfactor (mirml_mh_matrix_t *A, mirml_mh_permutation_t *pivot)
 
mirkl_error_tmirml_mh_LUsolve (const mirml_mh_matrix_t *LU, mirml_mh_permutation_t *pivot, const mirml_mh_vector_t *b, mirml_mh_vector_t **x)
 
mirkl_error_tmirml_mh_LUTsolve (const mirml_mh_matrix_t *LU, mirml_mh_permutation_t *pivot, const mirml_mh_vector_t *b, mirml_mh_vector_t **x)
 
mirkl_error_tmirml_mh_m_inverse (const mirml_mh_matrix_t *A, mirml_mh_matrix_t **out)
 
mirkl_error_tmirml_mh_LUcondest (const mirml_mh_matrix_t *LU, mirml_mh_permutation_t *pivot, double *cond)
 
mirkl_error_tmirml_mh_Usolve (const mirml_mh_matrix_t *matrix, const mirml_mh_vector_t *b, mirml_mh_vector_t **out, double diag)
 
mirkl_error_tmirml_mh_Lsolve (const mirml_mh_matrix_t *matrix, const mirml_mh_vector_t *b, mirml_mh_vector_t **out, double diag)
 
mirkl_error_tmirml_mh_UTsolve (const mirml_mh_matrix_t *U, const mirml_mh_vector_t *b, mirml_mh_vector_t **out, double diag)
 
mirkl_error_tmirml_mh_Dsolve (const mirml_mh_matrix_t *A, const mirml_mh_vector_t *b, mirml_mh_vector_t **x)
 
mirkl_error_tmirml_mh_LTsolve (const mirml_mh_matrix_t *L, const mirml_mh_vector_t *b, mirml_mh_vector_t **out, double diag)
 
mirkl_error_tmirml_mh_px_inv (const mirml_mh_permutation_t *px, mirml_mh_permutation_t **out)
 
mirkl_error_tmirml_mh_px_mlt (const mirml_mh_permutation_t *px1, const mirml_mh_permutation_t *px2, mirml_mh_permutation_t **out)
 
mirkl_error_tmirml_mh_px_vec (mirml_mh_permutation_t *px, const mirml_mh_vector_t *vector, mirml_mh_vector_t **out)
 
mirkl_error_tmirml_mh_pxinv_vec (mirml_mh_permutation_t *px, const mirml_mh_vector_t *x, mirml_mh_vector_t **out)
 
mirkl_error_tmirml_mh_px_transp (mirml_mh_permutation_t *px, unsigned int i1, unsigned int i2)
 
mirkl_error_tmirml_mh_px_sign (const mirml_mh_permutation_t *px, int *sign)
 
mirkl_error_tmirml_mh_px_cols (const mirml_mh_permutation_t *px, const mirml_mh_matrix_t *A, mirml_mh_matrix_t **out)
 
mirkl_error_tmirml_mh_px_rows (const mirml_mh_permutation_t *px, const mirml_mh_matrix_t *A, mirml_mh_matrix_t **out)
 
mirkl_error_tmirml_mh_trieig (mirml_mh_vector_t *a, mirml_mh_vector_t *b, mirml_mh_matrix_t *Q)
 
mirkl_error_tmirml_mh_symmeig (const mirml_mh_matrix_t *A, mirml_mh_matrix_t *Q, mirml_mh_vector_t **out)
 
void mirml_mh_givens (double x, double y, double *c, double *s)
 
mirkl_error_tmirml_mh_rot_vec (const mirml_mh_vector_t *x, mirkl_size_t i, mirkl_size_t k, double c, double s, mirml_mh_vector_t **out)
 
mirkl_error_tmirml_mh_rot_rows (const mirml_mh_matrix_t *mat, mirkl_size_t i, mirkl_size_t k, double c, double s, mirml_mh_matrix_t **out)
 
mirkl_error_tmirml_mh_rot_cols (const mirml_mh_matrix_t *mat, mirkl_size_t i, mirkl_size_t k, double c, double s, mirml_mh_matrix_t **out)
 
mirkl_error_tmirml_mh_Hfactor (mirml_mh_matrix_t *A, mirml_mh_vector_t *diag, mirml_mh_vector_t *beta)
 
mirkl_error_tmirml_mh_makeHQ (mirml_mh_matrix_t *H, mirml_mh_vector_t *diag, mirml_mh_vector_t *beta, mirml_mh_matrix_t **Qout)
 
mirkl_error_tmirml_mh_makeH (const mirml_mh_matrix_t *H, mirml_mh_matrix_t **Hout)
 
mirkl_error_tmirml_mh_hhvec (const mirml_mh_vector_t *vec, mirkl_size_t i0, double *beta, mirml_mh_vector_t **out, double *newval)
 
mirkl_error_tmirml_mh_hhtrvec (const mirml_mh_vector_t *hh, double beta, mirkl_size_t i0, const mirml_mh_vector_t *in, mirml_mh_vector_t **out)
 
mirkl_error_tmirml_mh_hhtrrows (mirml_mh_matrix_t *M, mirkl_size_t i0, mirkl_size_t j0, const mirml_mh_vector_t *hh, double beta)
 
mirkl_error_tmirml_mh_hhtrcols_ (mirml_mh_matrix_t *M, mirkl_size_t i0, mirkl_size_t j0, const mirml_mh_vector_t *hh, double beta, mirml_mh_vector_t *w)
 
mirkl_error_tmirml_mh_hhtrcols (mirml_mh_matrix_t *M, mirkl_size_t i0, mirkl_size_t j0, const mirml_mh_vector_t *hh, double beta)
 
mirkl_error_tmirml_mh_LDLupdate (mirml_mh_matrix_t *CHmat, mirml_mh_vector_t *w, double alpha)
 
mirkl_error_tmirml_mh_QRupdate (mirml_mh_matrix_t *Q, mirml_mh_matrix_t *R, mirml_mh_vector_t *u, mirml_mh_vector_t *v)
 
mirkl_error_tmirml_mh_fft (mirml_mh_vector_t *x_re, mirml_mh_vector_t *x_im)
 
mirkl_error_tmirml_mh_ifft (mirml_mh_vector_t *x_re, mirml_mh_vector_t *x_im)
 
mirkl_error_tmirml_mh_sp_get_val (const mirml_mh_spmatrix_t *A, int i, int j, double *val)
 
mirkl_error_tmirml_mh_sp_set_val (mirml_mh_spmatrix_t *A, int i, int j, double val)
 
mirkl_error_tmirml_mh_sp_mv_mlt (const mirml_mh_spmatrix_t *A, const mirml_mh_vector_t *x, mirml_mh_vector_t **out)
 
mirkl_error_tmirml_mh_sp_vm_mlt (const mirml_mh_spmatrix_t *A, const mirml_mh_vector_t *x, mirml_mh_vector_t **out)
 
mirkl_error_tmirml_mh_sp_get (int m, int n, int maxlen, mirml_mh_spmatrix_t **spmat)
 
void mirml_mh_sp_free (mirml_mh_spmatrix_t *A)
 
mirkl_error_tmirml_mh_sp_copy (const mirml_mh_spmatrix_t *A, mirml_mh_spmatrix_t **out)
 
mirkl_error_tmirml_mh_sp_col_access (mirml_mh_spmatrix_t *A)
 
mirkl_error_tmirml_mh_sp_diag_access (mirml_mh_spmatrix_t *A)
 
mirkl_error_tmirml_mh_sp_m2dense (const mirml_mh_spmatrix_t *A, mirml_mh_matrix_t **out)
 
mirkl_error_tmirml_mh_sp_add (const mirml_mh_spmatrix_t *A, const mirml_mh_spmatrix_t *B, mirml_mh_spmatrix_t **C)
 
mirkl_error_tmirml_mh_sp_sub (const mirml_mh_spmatrix_t *A, const mirml_mh_spmatrix_t *B, mirml_mh_spmatrix_t **C)
 
mirkl_error_tmirml_mh_sp_mltadd (const mirml_mh_spmatrix_t *A, const mirml_mh_spmatrix_t *B, double alpha, mirml_mh_spmatrix_t **C)
 
mirkl_error_tmirml_mh_sp_smlt (const mirml_mh_spmatrix_t *A, double alpha, mirml_mh_spmatrix_t **B)
 
void mirml_mh_sp_zero (mirml_mh_spmatrix_t *A)
 
mirkl_error_tmirml_mh_sp_copy2 (const mirml_mh_spmatrix_t *A, mirml_mh_spmatrix_t **out)
 
mirkl_error_tmirml_mh_sp_resize (mirml_mh_spmatrix_t **A, int m, int n)
 
mirkl_error_tmirml_mh_sp_compact (mirml_mh_spmatrix_t *A, double tol)
 
mirkl_error_tmirml_mh_sp_mlt (const mirml_mh_spmatrix_t *A, const mirml_mh_spmatrix_t *B, mirml_mh_spmatrix_t **out)
 
mirkl_error_tmirml_mh_sp_get_vars (int m, int n, int deg,...)
 
mirkl_error_tmirml_mh_sp_resize_vars (int m, int n,...)
 
void mirml_mh_sprow_dump (FILE *fp, const mirml_mh_sprow_t *r)
 
void mirml_mh_sprow_foutput (FILE *fp, const mirml_mh_sprow_t *r)
 
int mirml_mh_sprow_idx (const mirml_mh_sprow_t *r, int col)
 
mirkl_error_tmirml_mh_sprow_get (int maxlen, mirml_mh_sprow_t **out)
 
mirkl_error_tmirml_mh_sprow_xpd (mirml_mh_sprow_t **r, int n)
 
mirkl_error_tmirml_mh_sprow_resize (mirml_mh_sprow_t **r, int n)
 
int mirml_mh_sprow_free (mirml_mh_sprow_t *r)
 
mirkl_error_tmirml_mh_sprow_merge (const mirml_mh_sprow_t *r1, const mirml_mh_sprow_t *r2, mirml_mh_sprow_t **r_out)
 
mirkl_error_tmirml_mh_sprow_copy (const mirml_mh_sprow_t *r1, const mirml_mh_sprow_t *r2, mirml_mh_sprow_t **r_out)
 
mirkl_error_tmirml_mh_sprow_mltadd (const mirml_mh_sprow_t *r1, const mirml_mh_sprow_t *r2, double alpha, int j0, mirml_mh_sprow_t **r_out)
 
mirkl_error_tmirml_mh_sprow_add (const mirml_mh_sprow_t *r1, const mirml_mh_sprow_t *r2, int j0, mirml_mh_sprow_t **r_out)
 
mirkl_error_tmirml_mh_sprow_sub (const mirml_mh_sprow_t *r1, const mirml_mh_sprow_t *r2, int j0, mirml_mh_sprow_t **r_out)
 
mirkl_error_tmirml_mh_sprow_smlt (const mirml_mh_sprow_t *r1, double alpha, int j0, mirml_mh_sprow_t **r_out)
 
mirkl_error_tmirml_mh_sprow_set_val (mirml_mh_sprow_t *r, int j, double val)
 
mirkl_error_tmirml_mh_spCHfactor (mirml_mh_spmatrix_t *A)
 
mirkl_error_tmirml_mh_spCHsolve (mirml_mh_spmatrix_t *L, const mirml_mh_vector_t *b, mirml_mh_vector_t **out)
 
mirkl_error_tmirml_mh_spICHfactor (mirml_mh_spmatrix_t *A)
 
mirkl_error_tmirml_mh_spCHsymb (mirml_mh_spmatrix_t *A)
 
mirkl_error_tmirml_mh_sp_comp_AAT (mirml_mh_spmatrix_t *A, mirml_mh_spmatrix_t **out)
 
mirkl_error_tmirml_mh_spLUfactor (mirml_mh_spmatrix_t *A, mirml_mh_permutation_t *px, double alpha)
 
mirkl_error_tmirml_mh_spLUsolve (const mirml_mh_spmatrix_t *A, mirml_mh_permutation_t *pivot, const mirml_mh_vector_t *b, mirml_mh_vector_t **x)
 
mirkl_error_tmirml_mh_spLUTsolve (mirml_mh_spmatrix_t *A, mirml_mh_permutation_t *pivot, const mirml_mh_vector_t *b, mirml_mh_vector_t **x)
 
mirkl_error_tmirml_mh_spILUfactor (mirml_mh_spmatrix_t *A, double alpha)
 
mirkl_error_tmirml_mh_iter_gen_sym (int n, int nrow, int rngt, void *rng, mirml_mh_spmatrix_t **mat)
 
mirkl_error_tmirml_mh_iter_gen_nonsym (int m, int n, int nrow, double diag, int rngt, void *rng, mirml_mh_spmatrix_t **mat)
 
void mirml_mh_iter_dump (FILE *fp, mirml_mh_iter_t *ip)
 

Basic types

typedef struct mirml_mh_vector_t_ mirml_mh_vector_t
 
typedef struct mirml_mh_matrix_t_ mirml_mh_matrix_t
 Matrix definition.
 
typedef struct mirml_mh_permutation_t_ mirml_mh_permutation_t
 Permutation definition.
 
typedef struct mirml_mh_bandm_t_ mirml_mh_bandm_t
 Band matrix definition.
 
typedef struct mirml_mh_ivector_t_ mirml_mh_ivector_t
 Vector of integer numbers.
 
typedef struct mirml_mh_i64vector_t_ mirml_mh_i64vector_t
 Vector of 64-bit integer numbers.
 
typedef struct mirml_mh_row_elt_t_ mirml_mh_row_elt_t
 Element of row in sparse matrices.
 
typedef struct mirml_mh_sprow_t_ mirml_mh_sprow_t
 Row in sparse matrices.
 
typedef struct mirml_mh_spmatrix_t_ mirml_mh_spmatrix_t
 Sparse matrix.
 

For iterative methods.

typedef mirml_mh_vector_t *(* mirml_mh_Fun_Ax) (void *, mirml_mh_vector_t *, mirml_mh_vector_t *)
 type mirml_mh_Fun_Ax for functions to get y = A*x.
 
typedef struct mirml_mh_iter_t_ mirml_mh_iter_t
 Basic structure for iterative methods.
 

Error codes

int MirmlMHSingEC
 Singularity problem in Meschach routines.
 
int MirmlMHNullEC
 Not initialized input structure.
 
int MirmlMHRangeEC
 Object out of range.
 
int MirmlMHBoundsEC
 Index out of bounds.
 
int MirmlMHSizesEC
 Sizes of objects don't match.
 
int MirmlMHInsituEC
 Can't do operation in situ.
 
int MirmlMHSquareEC
 Matrix is not square.
 
int MirmlMHPosdefEC
 Matrix not positive definite.
 
int MirmlMHNegEC
 Negative argument.
 
int MirmlMHMemEC
 Can't allocate memory.
 
int MirmlMHIdxEC
 Error in index/matrix.
 

Detailed Description

Macro Definition Documentation

◆ mirml_mh_sprow_idx2

#define mirml_mh_sprow_idx2 (   r,
  c,
  hint 
)
Value:
( ( (hint) >= 0 && (hint) < (r)->len && \
(r)->elt[hint].col == (c)) ? (hint) : mirml_mh_sprow_idx((r),(c)) )

Function Documentation

◆ mirml_mh_iter_gen_sym()

mirkl_error_t * mirml_mh_iter_gen_sym ( int  n,
int  nrow,
int  rngt,
void *  rng,
mirml_mh_spmatrix_t **  mat 
)

Generate symmetric positive definite n x n matrix,

Parameters
nrowNumber of nonzero entries in a row
trngType of RNG, one of MIRML_MHRNGT_
Pointerto RNG structure.