HLIBpro  3.0
Compatibility Layer

Typedefs

typedef hpro_ acc_fixed_eps_t hlib_ acc_fixed_eps_t
 
typedef hpro_ acc_fixed_rank_t hlib_ acc_fixed_rank_t
 
typedef hpro_ acc_blocked_t hlib_ acc_blocked_t
 
typedef hpro_ acc_t hlib_ acc_t
 
typedef void(* hlib_) (const size_t n, const int *rowidx, const size_t m, const int *colidx, hlib_ real_t *matrix, void *arg)
 

Enumerations

enum  hlib_ {
  HLIB_MATOP_NORM = 'N' , HLIB_MATOP_TRANS = 'T' , HLIB_MATOP_ADJ = 'C' , HLIB_BSP_AUTO = 0 ,
  HLIB_BSP_GEOM_MAX = 1 , HLIB_BSP_GEOM_REG = 2 , HLIB_BSP_CARD_MAX = 3 , HLIB_BSP_CARD_REG = 4 ,
  HLIB_BSP_PCA = 5 , HLIB_BSP_GEOM = 1 , HLIB_BSP_CARD = 3 , HLIB_BSP_REGULAR = 2 ,
  HLIB_ALG_AUTO = 0 , HLIB_ALG_BFS = 1 , HLIB_ALG_ML = 2 , HLIB_ALG_METIS = 3 ,
  HLIB_ALG_SCOTCH = 4 , HLIB_ADM_AUTO = 0 , HLIB_ADM_STD_MIN = 1 , HLIB_ADM_STD_MAX = 2 ,
  HLIB_ADM_WEAK = 3 , HLIB_ACC_FIXED_EPS = 0 , HLIB_ACC_FIXED_RANK = 1 , HLIB_ACC_BLOCKED = 2 ,
  HLIB_ACC_STRING = 3 , HLIB_LRAPX_SVD = 0 , HLIB_LRAPX_ACA = 1 , HLIB_LRAPX_ACAPLUS = 2 ,
  HLIB_LRAPX_ACAFULL = 3 , HLIB_LRAPX_HCA = 4 , HLIB_LRAPX_ZERO = 5 , HLIB_LRAPX_RANDSVD = 6 ,
  HLIB_LRAPX_RRQR = 7
}
 
enum  hlib_ {
  HLIB_MATOP_NORM = 'N' , HLIB_MATOP_TRANS = 'T' , HLIB_MATOP_ADJ = 'C' , HLIB_BSP_AUTO = 0 ,
  HLIB_BSP_GEOM_MAX = 1 , HLIB_BSP_GEOM_REG = 2 , HLIB_BSP_CARD_MAX = 3 , HLIB_BSP_CARD_REG = 4 ,
  HLIB_BSP_PCA = 5 , HLIB_BSP_GEOM = 1 , HLIB_BSP_CARD = 3 , HLIB_BSP_REGULAR = 2 ,
  HLIB_ALG_AUTO = 0 , HLIB_ALG_BFS = 1 , HLIB_ALG_ML = 2 , HLIB_ALG_METIS = 3 ,
  HLIB_ALG_SCOTCH = 4 , HLIB_ADM_AUTO = 0 , HLIB_ADM_STD_MIN = 1 , HLIB_ADM_STD_MAX = 2 ,
  HLIB_ADM_WEAK = 3 , HLIB_ACC_FIXED_EPS = 0 , HLIB_ACC_FIXED_RANK = 1 , HLIB_ACC_BLOCKED = 2 ,
  HLIB_ACC_STRING = 3 , HLIB_LRAPX_SVD = 0 , HLIB_LRAPX_ACA = 1 , HLIB_LRAPX_ACAPLUS = 2 ,
  HLIB_LRAPX_ACAFULL = 3 , HLIB_LRAPX_HCA = 4 , HLIB_LRAPX_ZERO = 5 , HLIB_LRAPX_RANDSVD = 6 ,
  HLIB_LRAPX_RRQR = 7
}
 
enum  hlib_ {
  HLIB_MATOP_NORM = 'N' , HLIB_MATOP_TRANS = 'T' , HLIB_MATOP_ADJ = 'C' , HLIB_BSP_AUTO = 0 ,
  HLIB_BSP_GEOM_MAX = 1 , HLIB_BSP_GEOM_REG = 2 , HLIB_BSP_CARD_MAX = 3 , HLIB_BSP_CARD_REG = 4 ,
  HLIB_BSP_PCA = 5 , HLIB_BSP_GEOM = 1 , HLIB_BSP_CARD = 3 , HLIB_BSP_REGULAR = 2 ,
  HLIB_ALG_AUTO = 0 , HLIB_ALG_BFS = 1 , HLIB_ALG_ML = 2 , HLIB_ALG_METIS = 3 ,
  HLIB_ALG_SCOTCH = 4 , HLIB_ADM_AUTO = 0 , HLIB_ADM_STD_MIN = 1 , HLIB_ADM_STD_MAX = 2 ,
  HLIB_ADM_WEAK = 3 , HLIB_ACC_FIXED_EPS = 0 , HLIB_ACC_FIXED_RANK = 1 , HLIB_ACC_BLOCKED = 2 ,
  HLIB_ACC_STRING = 3 , HLIB_LRAPX_SVD = 0 , HLIB_LRAPX_ACA = 1 , HLIB_LRAPX_ACAPLUS = 2 ,
  HLIB_LRAPX_ACAFULL = 3 , HLIB_LRAPX_HCA = 4 , HLIB_LRAPX_ZERO = 5 , HLIB_LRAPX_RANDSVD = 6 ,
  HLIB_LRAPX_RRQR = 7
}
 
enum  hlib_ {
  HLIB_MATOP_NORM = 'N' , HLIB_MATOP_TRANS = 'T' , HLIB_MATOP_ADJ = 'C' , HLIB_BSP_AUTO = 0 ,
  HLIB_BSP_GEOM_MAX = 1 , HLIB_BSP_GEOM_REG = 2 , HLIB_BSP_CARD_MAX = 3 , HLIB_BSP_CARD_REG = 4 ,
  HLIB_BSP_PCA = 5 , HLIB_BSP_GEOM = 1 , HLIB_BSP_CARD = 3 , HLIB_BSP_REGULAR = 2 ,
  HLIB_ALG_AUTO = 0 , HLIB_ALG_BFS = 1 , HLIB_ALG_ML = 2 , HLIB_ALG_METIS = 3 ,
  HLIB_ALG_SCOTCH = 4 , HLIB_ADM_AUTO = 0 , HLIB_ADM_STD_MIN = 1 , HLIB_ADM_STD_MAX = 2 ,
  HLIB_ADM_WEAK = 3 , HLIB_ACC_FIXED_EPS = 0 , HLIB_ACC_FIXED_RANK = 1 , HLIB_ACC_BLOCKED = 2 ,
  HLIB_ACC_STRING = 3 , HLIB_LRAPX_SVD = 0 , HLIB_LRAPX_ACA = 1 , HLIB_LRAPX_ACAPLUS = 2 ,
  HLIB_LRAPX_ACAFULL = 3 , HLIB_LRAPX_HCA = 4 , HLIB_LRAPX_ZERO = 5 , HLIB_LRAPX_RANDSVD = 6 ,
  HLIB_LRAPX_RRQR = 7
}
 
enum  hlib_ {
  HLIB_MATOP_NORM = 'N' , HLIB_MATOP_TRANS = 'T' , HLIB_MATOP_ADJ = 'C' , HLIB_BSP_AUTO = 0 ,
  HLIB_BSP_GEOM_MAX = 1 , HLIB_BSP_GEOM_REG = 2 , HLIB_BSP_CARD_MAX = 3 , HLIB_BSP_CARD_REG = 4 ,
  HLIB_BSP_PCA = 5 , HLIB_BSP_GEOM = 1 , HLIB_BSP_CARD = 3 , HLIB_BSP_REGULAR = 2 ,
  HLIB_ALG_AUTO = 0 , HLIB_ALG_BFS = 1 , HLIB_ALG_ML = 2 , HLIB_ALG_METIS = 3 ,
  HLIB_ALG_SCOTCH = 4 , HLIB_ADM_AUTO = 0 , HLIB_ADM_STD_MIN = 1 , HLIB_ADM_STD_MAX = 2 ,
  HLIB_ADM_WEAK = 3 , HLIB_ACC_FIXED_EPS = 0 , HLIB_ACC_FIXED_RANK = 1 , HLIB_ACC_BLOCKED = 2 ,
  HLIB_ACC_STRING = 3 , HLIB_LRAPX_SVD = 0 , HLIB_LRAPX_ACA = 1 , HLIB_LRAPX_ACAPLUS = 2 ,
  HLIB_LRAPX_ACAFULL = 3 , HLIB_LRAPX_HCA = 4 , HLIB_LRAPX_ZERO = 5 , HLIB_LRAPX_RANDSVD = 6 ,
  HLIB_LRAPX_RRQR = 7
}
 
enum  hlib_ {
  HLIB_MATOP_NORM = 'N' , HLIB_MATOP_TRANS = 'T' , HLIB_MATOP_ADJ = 'C' , HLIB_BSP_AUTO = 0 ,
  HLIB_BSP_GEOM_MAX = 1 , HLIB_BSP_GEOM_REG = 2 , HLIB_BSP_CARD_MAX = 3 , HLIB_BSP_CARD_REG = 4 ,
  HLIB_BSP_PCA = 5 , HLIB_BSP_GEOM = 1 , HLIB_BSP_CARD = 3 , HLIB_BSP_REGULAR = 2 ,
  HLIB_ALG_AUTO = 0 , HLIB_ALG_BFS = 1 , HLIB_ALG_ML = 2 , HLIB_ALG_METIS = 3 ,
  HLIB_ALG_SCOTCH = 4 , HLIB_ADM_AUTO = 0 , HLIB_ADM_STD_MIN = 1 , HLIB_ADM_STD_MAX = 2 ,
  HLIB_ADM_WEAK = 3 , HLIB_ACC_FIXED_EPS = 0 , HLIB_ACC_FIXED_RANK = 1 , HLIB_ACC_BLOCKED = 2 ,
  HLIB_ACC_STRING = 3 , HLIB_LRAPX_SVD = 0 , HLIB_LRAPX_ACA = 1 , HLIB_LRAPX_ACAPLUS = 2 ,
  HLIB_LRAPX_ACAFULL = 3 , HLIB_LRAPX_HCA = 4 , HLIB_LRAPX_ZERO = 5 , HLIB_LRAPX_RANDSVD = 6 ,
  HLIB_LRAPX_RRQR = 7
}
 
enum  { HLIB_MATIO_SVD = 0x1 , HLIB_MATIO_ENTRY = 0x2 , HLIB_MATIO_PATTERN = 0x4 }
 
enum  {
  HLIB_NO_ERROR = 0 , HLIB_ERR_INIT = 100 , HLIB_ERR_LICENSE = 101 , HLIB_ERR_NOT_IMPL = 102 ,
  HLIB_ERR_CONSISTENCY = 103 , HLIB_ERR_COMM = 104 , HLIB_ERR_PERM = 105 , HLIB_ERR_EXCEPTION = 106 ,
  HLIB_ERR_REAL = 200 , HLIB_ERR_NREAL = 201 , HLIB_ERR_COMPLEX = 202 , HLIB_ERR_NCOMPLEX = 203 ,
  HLIB_ERR_REAL_CMPLX = 204 , HLIB_ERR_DIV_ZERO = 205 , HLIB_ERR_NEG_SQRT = 206 , HLIB_ERR_INF = 207 ,
  HLIB_ERR_NAN = 208 , HLIB_ERR_NCONVERGED = 209 , HLIB_ERR_ARG = 300 , HLIB_ERR_MEM = 301 ,
  HLIB_ERR_NULL = 302 , HLIB_ERR_SIZE = 303 , HLIB_ERR_INDEXSET = 304 , HLIB_ERR_DIM = 305 ,
  HLIB_ERR_ARR_BOUND = 306 , HLIB_ERR_DIAG_ENTRY = 307 , HLIB_ERR_COORD_INVALID = 400 , HLIB_ERR_CT_INVALID = 500 ,
  HLIB_ERR_CT_TYPE = 501 , HLIB_ERR_CT_STRUCT = 502 , HLIB_ERR_CT_INCOMP = 503 , HLIB_ERR_CT_SPARSE = 504 ,
  HLIB_ERR_BCT_INVALID = 600 , HLIB_ERR_BCT_STRUCT = 601 , HLIB_ERR_VEC_INVALID = 700 , HLIB_ERR_VEC_TYPE = 701 ,
  HLIB_ERR_VEC_STRUCT = 702 , HLIB_ERR_VEC_SIZE = 703 , HLIB_ERR_VEC_INCOMP = 704 , HLIB_ERR_VEC_NSCALAR = 705 ,
  HLIB_ERR_MAT_TYPE = 800 , HLIB_ERR_MAT_STRUCT = 801 , HLIB_ERR_MAT_SIZE = 802 , HLIB_ERR_MAT_SINGULAR = 803 ,
  HLIB_ERR_MAT_NSPARSE = 804 , HLIB_ERR_MAT_NDENSE = 805 , HLIB_ERR_MAT_NHMAT = 806 , HLIB_ERR_MAT_INCOMP_TYPE = 807 ,
  HLIB_ERR_MAT_INCOMP_CT = 808 , HLIB_ERR_MAT_INVALID = 809 , HLIB_ERR_MAT_NSYM = 810 , HLIB_ERR_MAT_NHERM = 811 ,
  HLIB_ERR_MAT_NPOSDEF = 812 , HLIB_ERR_FMT_UNKNOWN = 900 , HLIB_ERR_FMT_HFORMAT = 901 , HLIB_ERR_FMT_SAMG = 902 ,
  HLIB_ERR_FMT_MATLAB = 903 , HLIB_ERR_FMT_PLTMG = 904 , HLIB_ERR_FMT_HB = 905 , HLIB_ERR_FMT_MTX = 906 ,
  HLIB_ERR_FMT_PLY = 907 , HLIB_ERR_GRID_FORMAT = 1000 , HLIB_ERR_GRID_DATA = 1001 , HLIB_ERR_FOPEN = 1100 ,
  HLIB_ERR_FCLOSE = 1101 , HLIB_ERR_FWRITE = 1102 , HLIB_ERR_FREAD = 1103 , HLIB_ERR_FSEEK = 1104 ,
  HLIB_ERR_FNEXISTS = 1105 , HLIB_ERR_BS_SIZE = 1200 , HLIB_ERR_BS_WRITE = 1201 , HLIB_ERR_BS_READ = 1202 ,
  HLIB_ERR_BS_TYPE = 1203 , HLIB_ERR_BS_DATA = 1204 , HLIB_ERR_NOZLIB = 1300 , HLIB_ERR_ZLIB_UNZIP = 1301 ,
  HLIB_ERR_NOMETIS = 1302 , HLIB_ERR_NOSCOTCH = 1303 , HLIB_ERR_SCOTCH = 1304 , HLIB_ERR_NOCHACO = 1305 ,
  HLIB_ERR_NOLIBGRAPH = 1306 , HLIB_ERR_NOFFTW3 = 1307 , HLIB_ERR_NOCAIRO = 1308 , HLIB_ERR_NOHDF5 = 1309 ,
  HLIB_ERR_NOMONGOOSE = 1310 , HLIB_ERR_MPI = 1400 , HLIB_ERR_SOLVER_INVALID = 1500 , HLIB_ERR_LRAPX_INVALID = 1501 ,
  HLIB_ERR_GRID_INVALID = 1502 , HLIB_ERR_FNSPACE_INVALID = 1503
}
 
enum  { HLIB_PROGRESS_MIN = 0 , HLIB_PROGRESS_MAX = 1 , HLIB_PROGRESS_VAL = 2 }
 

Functions

void hlib_ init (int *info)
 
void hlib_ done (int *info)
 
int hlib_ is_init ()
 
void hlib_ error_desc (char *desc, const size_t size)
 
void hlib_ use_single_prec ()
 
void hlib_ use_double_prec ()
 

Coordinates

hlib_ coord_t hlib_ coord_import (const size_t n, const unsigned int dim, double **coord, const double *period, int *info)
 
size_t hlib_ coord_ncoord (const hlib_ coord_t coord, int *info)
 
unsigned int hlib_ coord_dim (const hlib_ coord_t coord, int *info)
 
double *hlib_ coord_get (const hlib_ coord_t coord, const size_t i, int *info)
 
double *hlib_ coord_bbmin (const hlib_ coord_t coord, const size_t i, int *info)
 
double *hlib_ coord_bbmax (const hlib_ coord_t coord, const size_t i, int *info)
 
int hlib_ coord_has_bbox (const hlib_ coord_t coord, int *info)
 
void hlib_ coord_set_period (hlib_ coord_t coord, const double period[], int *info)
 
void hlib_ coord_get_period (hlib_ coord_t coord, double period[], int *info)
 
void hlib_ coord_free (hlib_ coord_t coord, int *info)
 
size_t hlib_ coord_bytesize (const hlib_ coord_t coord, int *info)
 
void hlib_ coord_print_vrml (const hlib_ coord_t coord, const char *filename, int *info)
 
void hlib_ coord_print_vtk (const hlib_ coord_t coord, const char *filename, int *info)
 

Admissibility condition

hlib_ admcond_t hlib_ admcond_geom (const hlib_ adm_t crit, const double eta, int *info)
 
hlib_ admcond_t hlib_ admcond_geom_period (const hlib_ adm_t crit, const double eta, const double *period, const unsigned int dim, int *info)
 
hlib_ admcond_t hlib_ admcond_geom_hilo (const hlib_ complex_t kappa, const unsigned int nwaves, const double eta, int *info)
 
hlib_ admcond_t hlib_ admcond_alg (const hlib_ adm_t crit, const double eta, const hlib_ matrix_t S, const hlib_ permutation_t row_perm, const hlib_ permutation_t col_perm, int *info)
 
void hlib_ admcond_free (const hlib_ admcond_t ac, int *info)
 

Clusters

Nodes and sub trees in a cluster tree.

int hlib_ cl_first (const hlib_ cluster_t cl, int *info)
 
int hlib_ cl_last (const hlib_ cluster_t cl, int *info)
 
size_t hlib_ cl_size (const hlib_ cluster_t cl, int *info)
 
size_t hlib_ cl_nsons (const hlib_ cluster_t cl, int *info)
 
hlib_ cluster_t hlib_ cl_son (const hlib_ cluster_t cl, const unsigned int i, int *info)
 
int hlib_ cl_is_leaf (const hlib_ cluster_t cl, int *info)
 
size_t hlib_ cl_nnodes (const hlib_ cluster_t cl, int *info)
 
size_t hlib_ cl_depth (const hlib_ cluster_t cl, int *info)
 
hlib_ cluster_t hlib_ cl_copy (const hlib_ cluster_t cl, int *info)
 
void hlib_ cl_free (hlib_ cluster_t cl, int *info)
 
size_t hlib_ cl_bytesize (const hlib_ cluster_t cl, int *info)
 
void hlib_ cl_print_ps (const hlib_ cluster_t cl, const char *filename, int *info)
 

Cluster Trees

Root of a cluster tree with stored index permutations.

hlib_ clustertree_t hlib_ clt_build_bsp (const hlib_ coord_t coord, const hlib_ bsp_t bsptype, const unsigned int nmin, int *info)
 
hlib_ clustertree_t hlib_ clt_build_bsp_nd (const hlib_ coord_t coord, const hlib_ matrix_t S, const hlib_ bsp_t bsptype, const unsigned int nmin, int *info)
 
hlib_ clustertree_t hlib_ clt_build_bsp_part (const hlib_ coord_t coord, const unsigned int *partition, const int eq_depth, const hlib_ bsp_t bsptype, const unsigned int nmin, int *info)
 
hlib_ clustertree_t hlib_ clt_build_alg (const hlib_ matrix_t S, const hlib_ alg_t algtype, const unsigned int nmin, int *info)
 
hlib_ clustertree_t hlib_ clt_build_alg_nd (const hlib_ matrix_t S, const hlib_ alg_t algtype, const unsigned int nmin, int *info)
 
hlib_ clustertree_t hlib_ clt_build_alg_part (const hlib_ matrix_t S, const unsigned int *partition, const hlib_ alg_t algtype, const unsigned int nmin, int *info)
 
hlib_ cluster_t hlib_ clt_root (hlib_ clustertree_t ct, int *info)
 
hlib_ permutation_t hlib_ clt_perm_i2e (hlib_ clustertree_t ct, int *info)
 
hlib_ permutation_t hlib_ clt_perm_e2i (hlib_ clustertree_t ct, int *info)
 
void hlib_ clt_free (hlib_ clustertree_t ct, int *info)
 
size_t hlib_ clt_bytesize (const hlib_ clustertree_t ct, int *info)
 
size_t hlib_ clt_nnodes (const hlib_ clustertree_t ct, int *info)
 
size_t hlib_ clt_depth (const hlib_ clustertree_t ct, int *info)
 
void hlib_ clt_print_ps (const hlib_ clustertree_t ct, const char *filename, int *info)
 

Block Clusters

Nodes and sub trees of block cluster trees.

hlib_ blockcluster_t hlib_ bc_parent (const hlib_ blockcluster_t bc, int *info)
 
size_t hlib_ bc_nsons (const hlib_ blockcluster_t bc, int *info)
 
hlib_ blockcluster_t hlib_ bc_son (const hlib_ blockcluster_t bc, const unsigned int i, const unsigned int j, int *info)
 
int hlib_ bc_is_leaf (const hlib_ blockcluster_t bc, int *info)
 
int hlib_ bc_is_adm (const hlib_ blockcluster_t bc, int *info)
 
size_t hlib_ bc_nnodes (const hlib_ blockcluster_t bc, int *info)
 
size_t hlib_ bc_depth (const hlib_ blockcluster_t bc, int *info)
 
hlib_ cluster_t hlib_ bc_rowcl (const hlib_ blockcluster_t bc, int *info)
 
hlib_ cluster_t hlib_ bc_colcl (const hlib_ blockcluster_t bc, int *info)
 
hlib_ blockcluster_t hlib_ bc_copy (const hlib_ blockcluster_t bc, int *info)
 
void hlib_ bc_free (hlib_ blockcluster_t bc, int *info)
 
size_t hlib_ bc_bytesize (const hlib_ blockcluster_t bc, int *info)
 
int hlib_ bc_csp (const hlib_ blockcluster_t bc, int *info)
 
void hlib_ bc_print_ps (const hlib_ blockcluster_t bc, const char *filename, int *info)
 

Block Cluster Trees

Root of block cluster trees with access to index permutations.

hlib_ blockclustertree_t hlib_ bct_build (const hlib_ clustertree_t rowct, const hlib_ clustertree_t colct, const hlib_ admcond_t ac, int *info)
 
size_t hlib_ bct_nnodes (const hlib_ blockclustertree_t bct, int *info)
 
size_t hlib_ bct_depth (const hlib_ blockclustertree_t bct, int *info)
 
hlib_ clustertree_t hlib_ bct_rowct (const hlib_ blockclustertree_t bct, int *info)
 
hlib_ clustertree_t hlib_ bct_colct (const hlib_ blockclustertree_t bct, int *info)
 
void hlib_ bct_free (hlib_ blockclustertree_t bct, int *info)
 
size_t hlib_ bct_bytesize (const hlib_ blockclustertree_t bct, int *info)
 
void hlib_ bct_distribute_block (hlib_ blockclustertree_t bct, const unsigned int p, const unsigned int min_lvl, const int symmetric, int *info)
 
int hlib_ bct_csp (const hlib_ blockclustertree_t bct, int *info)
 
void hlib_ bct_print_ps (const hlib_ blockclustertree_t bct, const char *filename, int *info)
 

Vectors

size_t hlib_ vector_size (const hlib_ vector_t v, int *info)
 
hlib_ vector_t hlib_ vector_copy (const hlib_ vector_t v, int *info)
 
size_t hlib_ vector_bytesize (const hlib_ vector_t v, int *info)
 
void hlib_ vector_free (hlib_ vector_t v, int *info)
 
hlib_ real_t hlib_ vector_entry_get (const hlib_ vector_t x, const size_t i, int *info)
 
hlib_ complex_t hlib_ vector_centry_get (const hlib_ vector_t x, const size_t i, int *info)
 
void hlib_ vector_entry_set (const hlib_ vector_t x, const size_t i, const hlib_ real_t f, int *info)
 
void hlib_ vector_centry_set (const hlib_ vector_t x, const size_t i, const hlib_ complex_t f, int *info)
 
hlib_ vector_t hlib_ vector_build (const size_t size, int *info)
 
hlib_ vector_t hlib_ vector_cbuild (const size_t size, int *info)
 
void hlib_ vector_import (hlib_ vector_t v, const hlib_ real_t *arr, int *info)
 
void hlib_ vector_cimport (hlib_ vector_t v, const hlib_ complex_t *arr, int *info)
 
void hlib_ vector_export (const hlib_ vector_t v, hlib_ real_t *arr, int *info)
 
void hlib_ vector_cexport (const hlib_ vector_t v, hlib_ complex_t *arr, int *info)
 
void hlib_ vector_fill (hlib_ vector_t x, const hlib_ real_t f, int *info)
 
void hlib_ vector_cfill (hlib_ vector_t x, const hlib_ complex_t f, int *info)
 
void hlib_ vector_fill_rand (hlib_ vector_t x, int *info)
 
void hlib_ vector_assign (hlib_ vector_t y, const hlib_ vector_t x, int *info)
 
void hlib_ vector_scale (hlib_ vector_t x, const hlib_ real_t f, int *info)
 
void hlib_ vector_cscale (hlib_ vector_t x, const hlib_ complex_t f, int *info)
 
void hlib_ vector_axpy (const hlib_ real_t alpha, const hlib_ vector_t x, hlib_ vector_t y, int *info)
 
void hlib_ vector_caxpy (const hlib_ complex_t alpha, const hlib_ vector_t x, hlib_ vector_t y, int *info)
 
hlib_ complex_t hlib_ vector_dot (const hlib_ vector_t x, const hlib_ vector_t y, int *info)
 
hlib_ real_t hlib_ vector_norm2 (const hlib_ vector_t x, int *info)
 
hlib_ real_t hlib_ vector_norm_inf (const hlib_ vector_t x, int *info)
 
hlib_ vector_t hlib_ vector_restrict_re (const hlib_ vector_t v, int *info)
 
hlib_ vector_t hlib_ vector_restrict_im (const hlib_ vector_t v, int *info)
 
void hlib_ vector_permute (hlib_ vector_t v, const hlib_ permutation_t perm, int *info)
 
void hlib_ vector_fft (const hlib_ vector_t v, int *info)
 
void hlib_ vector_ifft (const hlib_ vector_t v, int *info)
 

Matrices

void hlib_ linearoperator_free (hlib_ linearoperator_t A, int *info)
 
hlib_ vector_t hlib_ linearoperator_range_vector (const hlib_ linearoperator_t A, int *info)
 
hlib_ vector_t hlib_ linearoperator_domain_vector (const hlib_ linearoperator_t A, int *info)
 
hlib_ linearoperator_t hlib_ perm_linearoperator (const hlib_ permutation_t P, const hlib_ linearoperator_t A, const hlib_ permutation_t R, int *info)
 
void hlib_ linearoperator_apply (const hlib_ linearoperator_t A, const hlib_ vector_t x, hlib_ vector_t y, const hlib_ matop_t matop, int *info)
 
void hlib_ linearoperator_apply_add (const hlib_ real_t alpha, const hlib_ linearoperator_t A, const hlib_ vector_t x, hlib_ vector_t y, const hlib_ matop_t matop, int *info)
 
void hlib_ linearoperator_capply_add (const hlib_ complex_t alpha, const hlib_ linearoperator_t A, const hlib_ vector_t x, hlib_ vector_t y, const hlib_ matop_t matop, int *info)
 
size_t hlib_ matrix_rows (const hlib_ matrix_t A, int *info)
 
size_t hlib_ matrix_cols (const hlib_ matrix_t A, int *info)
 
hlib_ matrix_t hlib_ matrix_copy (const hlib_ matrix_t A, int *info)
 
hlib_ matrix_t hlib_ matrix_copy_acc (const hlib_ matrix_t A, const hlib_ acc_t acc, const int coarsen, int *info)
 
void hlib_ matrix_copyto (const hlib_ matrix_t A, hlib_ matrix_t B, int *info)
 
void hlib_ matrix_copyto_acc (const hlib_ matrix_t A, hlib_ matrix_t B, const hlib_ acc_t acc, const int coarsen, int *info)
 
hlib_ matrix_t hlib_ matrix_copy_blockdiag (const hlib_ matrix_t A, const unsigned int lvl, const size_t blocksize, int *info)
 
hlib_ matrix_t hlib_ matrix_copy_blockdiag_acc (const hlib_ matrix_t A, const hlib_ acc_t acc, const unsigned int lvl, const size_t blocksize, int *info)
 
hlib_ matrix_t hlib_ matrix_copy_nearfield (const hlib_ matrix_t A, const int without_farfield, int *info)
 
void hlib_ matrix_restrict_nearfield (hlib_ matrix_t A, const int delete_farfield, int *info)
 
void hlib_ matrix_nearfield_to_crs (const hlib_ matrix_t A, size_t *nnz, int **rowptr, int **colind, hlib_ real_t **coeffs, int *info)
 
void hlib_ matrix_nearfield_to_ccrs (const hlib_ matrix_t A, size_t *nnz, int **rowptr, int **colind, hlib_ complex_t **coeffs, int *info)
 
size_t hlib_ matrix_bytesize (const hlib_ matrix_t A, int *info)
 
void hlib_ matrix_free (hlib_ matrix_t A, int *info)
 
int hlib_ matrix_is_sym (const hlib_ matrix_t A, int *info)
 
int hlib_ matrix_is_herm (const hlib_ matrix_t A, int *info)
 
int hlib_ matrix_is_complex (const hlib_ matrix_t A, int *info)
 
void hlib_ matrix_to_real (const hlib_ matrix_t A, const int force, int *info)
 
void hlib_ matrix_to_complex (const hlib_ matrix_t A, const int force, int *info)
 
hlib_ real_t hlib_ matrix_entry_get (const hlib_ matrix_t A, const size_t i, const size_t j, int *info)
 
hlib_ complex_t hlib_ matrix_centry_get (const hlib_ matrix_t A, const size_t i, const size_t j, int *info)
 
hlib_ vector_t hlib_ matrix_row_vector (const hlib_ matrix_t A, int *info)
 
hlib_ vector_t hlib_ matrix_col_vector (const hlib_ matrix_t A, int *info)
 
hlib_ matrix_t hlib_ matrix_import_crs (const size_t rows, const size_t cols, const size_t nnz, const int *rowptr, const int *colind, const hlib_ real_t *coeffs, const int sym, int *info)
 
hlib_ matrix_t hlib_ matrix_import_ccrs (const size_t rows, const size_t cols, const size_t nnz, const int *rowptr, const int *colind, const hlib_ complex_t *coeffs, const int sym, int *info)
 
hlib_ matrix_t hlib_ matrix_import_ccs (const size_t rows, const size_t cols, const size_t nnz, const int *colptr, const int *rowind, const hlib_ real_t *coeffs, const int sym, int *info)
 
hlib_ matrix_t hlib_ matrix_import_cccs (const size_t rows, const size_t cols, const size_t nnz, const int *colptr, const int *rowind, const hlib_ complex_t *coeffs, const int sym, int *info)
 
hlib_ matrix_t hlib_ matrix_import_dense (const size_t rows, const size_t cols, const hlib_ real_t *D, const int sym, int *info)
 
hlib_ matrix_t hlib_ matrix_import_cdense (const size_t rows, const size_t cols, const hlib_ complex_t *D, const int sym, int *info)
 
hlib_ matrix_t hlib_ matrix_build_sparse (const hlib_ blockclustertree_t bct, const hlib_ matrix_t S, const hlib_ acc_t acc, int *info)
 
hlib_ matrix_t hlib_ matrix_build_dense (const hlib_ blockclustertree_t bct, const hlib_ matrix_t D, const hlib_ lrapx_t lrapx, const hlib_ acc_t acc, int *info)
 
hlib_ matrix_t hlib_ matrix_build_coeff (const hlib_ blockclustertree_t bct, const hlib_ coeff_t f, void *arg, const hlib_ lrapx_t lrapx, const hlib_ acc_t acc, const int sym, int *info)
 
hlib_ matrix_t hlib_ matrix_build_ccoeff (const hlib_ blockclustertree_t bct, const hlib_ ccoeff_t f, void *arg, const hlib_ lrapx_t lrapx, const hlib_ acc_t acc, const int sym, int *info)
 
hlib_ matrix_t hlib_ matrix_build_identity (const hlib_ blockclustertree_t bct, int *info)
 
hlib_ matrix_t hlib_ matrix_assemble_block (const size_t brows, const size_t bcols, hlib_ matrix_t *submat, const int copy, int *info)
 
hlib_ permutation_t hlib_ matrix_row_perm_i2e (const hlib_ matrix_t A, int *info)
 
hlib_ permutation_t hlib_ matrix_col_perm_i2e (const hlib_ matrix_t A, int *info)
 
hlib_ permutation_t hlib_ matrix_row_perm_e2i (const hlib_ matrix_t A, int *info)
 
hlib_ permutation_t hlib_ matrix_col_perm_e2i (const hlib_ matrix_t A, int *info)
 
void hlib_ matrix_permute (hlib_ matrix_t A, const hlib_ permutation_t row_perm, const hlib_ permutation_t col_perm, int *info)
 
hlib_ linearoperator_t hlib_ perm_matrix (const hlib_ permutation_t P, const hlib_ matrix_t A, const hlib_ permutation_t R, int *info)
 
hlib_ linearoperator_t hlib_ matrix_product2 (const hlib_ matop_t matop1, const hlib_ linearoperator_t A1, const hlib_ matop_t matop2, const hlib_ linearoperator_t A2, int *info)
 
hlib_ linearoperator_t hlib_ matrix_product3 (const hlib_ matop_t matop1, const hlib_ linearoperator_t A1, const hlib_ matop_t matop2, const hlib_ linearoperator_t A2, const hlib_ matop_t matop3, const hlib_ linearoperator_t A3, int *info)
 
hlib_ linearoperator_t hlib_ matrix_sum2 (const hlib_ real_t alpha1, const hlib_ matop_t matop1, const hlib_ linearoperator_t A1, const hlib_ real_t alpha2, const hlib_ matop_t matop2, const hlib_ linearoperator_t A2, int *info)
 
hlib_ linearoperator_t hlib_ matrix_sum3 (const hlib_ real_t alpha1, const hlib_ matop_t matop1, const hlib_ linearoperator_t A1, const hlib_ real_t alpha2, const hlib_ matop_t matop2, const hlib_ linearoperator_t A2, const hlib_ real_t alpha3, const hlib_ matop_t matop3, const hlib_ linearoperator_t A3, int *info)
 
hlib_ matrix_t hlib_ matrix_to_dense (const hlib_ matrix_t A, int *info)
 
hlib_ matrix_t hlib_ matrix_to_rank (const hlib_ matrix_t A, const hlib_ acc_t acc, int *info)
 
hlib_ matrix_t hlib_ matrix_approx_rank_aca (const hlib_ matrix_t A, const hlib_ acc_t acc, int *info)
 
void hlib_ matrix_print_ps (const hlib_ matrix_t A, const char *filename, const int options, int *info)
 

Algebra

void hlib_ matrix_mulvec (const hlib_ real_t alpha, const hlib_ matrix_t A, const hlib_ vector_t x, const hlib_ real_t beta, hlib_ vector_t y, const hlib_ matop_t matop, int *info)
 
void hlib_ matrix_cmulvec (const hlib_ complex_t alpha, const hlib_ matrix_t A, const hlib_ vector_t x, const hlib_ complex_t beta, hlib_ vector_t y, const hlib_ matop_t matop, int *info)
 
void hlib_ matrix_transpose (const hlib_ matrix_t A, int *info)
 
void hlib_ matrix_conjugate (const hlib_ matrix_t A, int *info)
 
void hlib_ matrix_scale (const hlib_ real_t f, const hlib_ matrix_t A, int *info)
 
void hlib_ matrix_cscale (const hlib_ complex_t f, const hlib_ matrix_t A, int *info)
 
void hlib_ matrix_add (const hlib_ real_t alpha, const hlib_ matrix_t A, const hlib_ real_t beta, hlib_ matrix_t B, const hlib_ acc_t acc, int *info)
 
void hlib_ matrix_cadd (const hlib_ complex_t alpha, const hlib_ matrix_t A, const hlib_ complex_t beta, hlib_ matrix_t B, const hlib_ acc_t acc, int *info)
 
void hlib_ matrix_mul (const hlib_ real_t alpha, const hlib_ matop_t matop_A, const hlib_ matrix_t A, const hlib_ matop_t matop_B, const hlib_ matrix_t B, const hlib_ real_t beta, hlib_ matrix_t C, const hlib_ acc_t acc, int *info)
 
void hlib_ matrix_cmul (const hlib_ complex_t alpha, const hlib_ matop_t matop_A, const hlib_ matrix_t A, const hlib_ matop_t matop_B, const hlib_ matrix_t B, const hlib_ complex_t beta, hlib_ matrix_t C, const hlib_ acc_t acc, int *info)
 
hlib_ matrix_t hlib_ matrix_inv (hlib_ matrix_t A, const hlib_ acc_t acc, int *info)
 
hlib_ vector_t hlib_ matrix_inv_diag (hlib_ matrix_t A, const hlib_ acc_t acc, int *info)
 
hlib_ linearoperator_t hlib_ matrix_factorise (hlib_ matrix_t A, const hlib_ acc_t acc, int *info)
 
hlib_ linearoperator_t hlib_ matrix_factorise_inv (hlib_ matrix_t A, const hlib_ acc_t acc, int *info)
 
hlib_ linearoperator_t hlib_ matrix_lu (hlib_ matrix_t A, const hlib_ acc_t acc, int *info)
 
hlib_ linearoperator_t hlib_ matrix_ldl (hlib_ matrix_t A, const hlib_ acc_t acc, int *info)
 
hlib_ linearoperator_t hlib_ matrix_ll (hlib_ matrix_t A, const hlib_ acc_t acc, int *info)
 
hlib_ linearoperator_t hlib_ matrix_chol (hlib_ matrix_t A, const hlib_ acc_t acc, int *info)
 
hlib_ linearoperator_t hlib_ matrix_waz (hlib_ matrix_t A, const hlib_ acc_t acc, int *info)
 
hlib_ linearoperator_t hlib_ matrix_lu_inv (hlib_ matrix_t A, const hlib_ acc_t acc, int *info)
 
hlib_ linearoperator_t hlib_ matrix_ldl_inv (hlib_ matrix_t A, const hlib_ acc_t acc, int *info)
 
hlib_ linearoperator_t hlib_ matrix_ll_inv (hlib_ matrix_t A, const hlib_ acc_t acc, int *info)
 
hlib_ linearoperator_t hlib_ matrix_chol_inv (hlib_ matrix_t A, const hlib_ acc_t acc, int *info)
 
void hlib_ matrix_solve_lower_left (const hlib_ matrix_t L, const hlib_ matop_t op_L, hlib_ matrix_t A, const hlib_ acc_t acc, const int pointwise, const int unit_diag, int *info)
 
void hlib_ matrix_solve_lower_right (hlib_ matrix_t A, const hlib_ matrix_t L, const hlib_ matop_t op_L, const hlib_ acc_t acc, const int pointwise, const int unit_diag, int *info)
 
void hlib_ matrix_solve_upper_right (hlib_ matrix_t A, const hlib_ matrix_t U, const hlib_ acc_t acc, const int pointwise, const int unit_diag, int *info)
 
void hlib_ matrix_solve_diag_left (const hlib_ matrix_t D, const hlib_ matop_t op_D, hlib_ matrix_t A, const hlib_ acc_t acc, const int pointwise, int *info)
 
void hlib_ matrix_solve_diag_right (hlib_ matrix_t A, const hlib_ matrix_t D, const hlib_ matop_t op_D, const hlib_ acc_t acc, const int pointwise, int *info)
 
void hlib_ matrix_add_identity (hlib_ matrix_t A, const hlib_ real_t lambda, int *info)
 
void hlib_ matrix_cadd_identity (hlib_ matrix_t A, const hlib_ complex_t lambda, int *info)
 
hlib_ real_t hlib_ matrix_norm_frobenius (const hlib_ matrix_t A, int *info)
 
hlib_ real_t hlib_ matrix_norm_frobenius_diff (const hlib_ matrix_t A, const hlib_ matrix_t B, int *info)
 
hlib_ real_t hlib_ matrix_norm_spectral (const hlib_ matrix_t A, int *info)
 
hlib_ real_t hlib_ matrix_norm_spectral_inv (const hlib_ matrix_t A, int *info)
 
hlib_ real_t hlib_ matrix_norm_spectral_diff (const hlib_ matrix_t A, const hlib_ matrix_t B, int *info)
 
hlib_ real_t hlib_ matrix_norm_inv_approx (const hlib_ matrix_t A, const hlib_ matrix_t B, int *info)
 
hlib_ real_t hlib_ linearoperator_norm_spectral (const hlib_ linearoperator_t A, int *info)
 
hlib_ real_t hlib_ linearoperator_norm_spectral_inv (const hlib_ linearoperator_t A, int *info)
 
hlib_ real_t hlib_ linearoperator_norm_spectral_diff (const hlib_ linearoperator_t A, const hlib_ linearoperator_t B, int *info)
 
hlib_ real_t hlib_ linearoperator_norm_inv_approx (const hlib_ linearoperator_t A, const hlib_ linearoperator_t B, int *info)
 

Solver

hlib_ solver_t hlib_ solver_auto (int *info)
 
hlib_ solver_t hlib_ solver_linear_iteration (int *info)
 
hlib_ solver_t hlib_ solver_richardson (int *info)
 
hlib_ solver_t hlib_ solver_cg (int *info)
 
hlib_ solver_t hlib_ solver_cgs (int *info)
 
hlib_ solver_t hlib_ solver_bicgstab (int *info)
 
hlib_ solver_t hlib_ solver_tfqmr (int *info)
 
hlib_ solver_t hlib_ solver_minres (int *info)
 
hlib_ solver_t hlib_ solver_gmres (const int restart, int *info)
 
void hlib_ solver_solve (const hlib_ solver_t solver, const hlib_ linearoperator_t A, hlib_ vector_t x, const hlib_ vector_t b, const hlib_ linearoperator_t W, hlib_ solve_info_t *solve_info, int *info)
 
void hlib_ solver_stopcrit (hlib_ solver_t solver, const int maxit, const hlib_ real_t abs_red, const hlib_ real_t rel_red, int *info)
 
void hlib_ solver_initialise_start_value (hlib_ solver_t solver, const int flag, int *info)
 
void hlib_ solver_use_exact_residual (hlib_ solver_t solver, const int flag, int *info)
 
void hlib_ solver_free (hlib_ solver_t solver, int *info)
 

Input/Output

hlib_ matrix_t hlib_ hformat_load_matrix (const char *filename, int *info)
 
hlib_ linearoperator_t hlib_ hformat_load_linearoperator (const char *filename, int *info)
 
hlib_ vector_t hlib_ hformat_load_vector (const char *filename, int *info)
 
void hlib_ hformat_save_linearoperator (const hlib_ linearoperator_t A, const char *filename, int *info)
 
void hlib_ hformat_save_matrix (const hlib_ matrix_t A, const char *filename, int *info)
 
void hlib_ hformat_save_vector (const hlib_ vector_t v, const char *filename, int *info)
 
hlib_ coord_t hlib_ hformat_load_coord (const char *filename, int *info)
 
void hlib_ hformat_save_coord (const hlib_ coord_t coord, const char *filename, int *info)
 
hlib_ matrix_t hlib_ samg_load_matrix (const char *filename, int *info)
 
void hlib_ samg_save_matrix (const hlib_ matrix_t A, const char *filename, int *info)
 
hlib_ vector_t hlib_ samg_load_vector (const char *filename, int *info)
 
void hlib_ samg_save_vector (const hlib_ vector_t x, const char *filename, int *info)
 
void hlib_ samg_save_coord (const hlib_ coord_t coord, const char *filename, int *info)
 
hlib_ coord_t hlib_ samg_load_coord (const char *filename, int *info)
 
hlib_ matrix_t hlib_ matlab_load_matrix (const char *filename, const char *matname, int *info)
 
void hlib_ matlab_save_matrix (const hlib_ matrix_t M, const char *filename, const char *matname, int *info)
 
hlib_ vector_t hlib_ matlab_load_vector (const char *filename, const char *vecname, int *info)
 
void hlib_ matlab_save_vector (const hlib_ vector_t v, const char *filename, const char *vecname, int *info)
 
hlib_ matrix_t hlib_ pltmg_load_matrix (const char *filename, int *info)
 
hlib_ matrix_t hlib_ hb_load_matrix (const char *filename, int *info)
 
void hlib_ hb_save_matrix (const hlib_ matrix_t M, const char *filename, int *info)
 
hlib_ matrix_t hlib_ mm_load_matrix (const char *filename, int *info)
 
hlib_ matrix_t hlib_ load_matrix (const char *filename, int *info)
 
hlib_ vector_t hlib_ load_vector (const char *filename, int *info)
 
hlib_ coord_t hlib_ load_coord (const char *filename, int *info)
 

Accuracy Management

hlib_ acc_t hlib_ acc_fixed_eps (const hlib_ real_t eps)
 
hlib_ acc_t hlib_ acc_fixed_rank (const unsigned int k)
 
hlib_ acc_t hlib_ acc_blocked (const hlib_ acc_t *blockacc)
 

Misc.

double hlib_ walltime ()
 
double hlib_ cputime ()
 
void hlib_ set_n_min (const unsigned int n)
 
void hlib_ set_verbosity (const unsigned int verb)
 
void hlib_ set_abs_eps (const hlib_ real_t eps)
 
void hlib_ set_coarsening (const int build, const int arith)
 
void hlib_ set_recompress (const int recompress)
 
void hlib_ set_diag_scale (const int scale)
 
void hlib_ set_nthreads (const unsigned int p)
 
void hlib_ set_progress_cb (hlib_ progressfn_t fn, void *arg)
 
void hlib_ set_config (const char *option, const char *value, int *info)
 
void hlib_ get_config (const char *option, char *value, const size_t len, int *info)
 
void hlib_ print_parameters ()
 
void hlib_ set_error_fn (const hlib_ errorfn_t errorfn)
 
void hlib_ set_warning_fn (const hlib_ errorfn_t warnfn)
 
unsigned int hlib_ major_version ()
 
unsigned int hlib_ minor_version ()
 

Functions for hlib_complex_t

hlib_ complex_t hlib_ complex (const hlib_ real_t re, const hlib_ real_t im)
 
hlib_ complex_t hlib_ cmplx_add (const hlib_ complex_t a, const hlib_ complex_t b)
 
hlib_ complex_t hlib_ cmplx_sub (const hlib_ complex_t a, const hlib_ complex_t b)
 
hlib_ complex_t hlib_ cmplx_mul (const hlib_ complex_t a, const hlib_ complex_t b)
 
hlib_ complex_t hlib_ cmplx_div (const hlib_ complex_t a, const hlib_ complex_t b)
 
hlib_ complex_t hlib_ cmplx_conj (const hlib_ complex_t a)
 
hlib_ real_t hlib_ cmplx_abs (const hlib_ complex_t a)
 
hlib_ complex_t hlib_ cmplx_sqrt (const hlib_ complex_t a)
 
hlib_ complex_t hlib_ cmplx_exp (const hlib_ complex_t a)
 

Detailed Description

Compatibility types and functions for HLIBpro 2.x interface.

Typedef Documentation

◆ acc_blocked_t

accuracy type for block-wise accuracy

◆ acc_fixed_eps_t

accuracy type for fixed accuracy

◆ acc_fixed_rank_t

accuracy type for fixed rank

◆ acc_t

general accuracy description type

◆ hlib_

typedef void(* hlib_)(const double *values, int *cancel, void *arg)

error/warning handler function types

callback function for progress information

Enumeration Type Documentation

◆ anonymous enum

anonymous enum

fields in value array progress bar callback function

Enumerator
HLIB_PROGRESS_MIN 

minimal value of progress bar

HLIB_PROGRESS_MAX 

maximal value of progress bar

HLIB_PROGRESS_VAL 

current value of progress bar

◆ anonymous enum

anonymous enum

matrix printing options (can be combined)

Enumerator
HLIB_MATIO_SVD 

print singular value decomposition in each block

HLIB_MATIO_ENTRY 

print each entry of matrix

HLIB_MATIO_PATTERN 

print sparsity pattern (non-zero entries)

◆ anonymous enum

anonymous enum

list of error codes

Enumerator
HLIB_NO_ERROR 

no error occured

HLIB_ERR_INIT 

not initialised

HLIB_ERR_LICENSE 

invalid license

HLIB_ERR_NOT_IMPL 

functionality not implemented

HLIB_ERR_CONSISTENCY 

general consistency error

HLIB_ERR_COMM 

communication error

HLIB_ERR_PERM 

permission denied

HLIB_ERR_EXCEPTION 

general exception error

HLIB_ERR_REAL 

data is real valued

HLIB_ERR_NREAL 

data is not real valued

HLIB_ERR_COMPLEX 

data is complex valued

HLIB_ERR_NCOMPLEX 

data is not complex valued

HLIB_ERR_REAL_CMPLX 

invalid mixing of real and complex data

HLIB_ERR_DIV_ZERO 

division by zero

HLIB_ERR_NEG_SQRT 

sqrt of negative number

HLIB_ERR_INF 

infinity occured

HLIB_ERR_NAN 

not-a-number occured

HLIB_ERR_NCONVERGED 

iteration did not converge

HLIB_ERR_ARG 

error with argument

HLIB_ERR_MEM 

insufficient memory available

HLIB_ERR_NULL 

null pointer encountered

HLIB_ERR_SIZE 

size of data incorrect

HLIB_ERR_INDEXSET 

size of data incorrect

HLIB_ERR_DIM 

invalid or incompatible dimension

HLIB_ERR_ARR_BOUND 

out-of-bound error in array

HLIB_ERR_DIAG_ENTRY 

entry is not on diagonal

HLIB_ERR_COORD_INVALID 

invalid coordinates

HLIB_ERR_CT_INVALID 

invalid cluster tree

HLIB_ERR_CT_TYPE 

wrong type of cluster tree

HLIB_ERR_CT_STRUCT 

invalid structure of cluster tree

HLIB_ERR_CT_INCOMP 

given cluster trees are incompatible

HLIB_ERR_CT_SPARSE 

missing sparse matrix for given cluster tree

HLIB_ERR_BCT_INVALID 

invalid block cluster tree

HLIB_ERR_BCT_STRUCT 

invalid block cluster tree structure

HLIB_ERR_VEC_INVALID 

invalid vector

HLIB_ERR_VEC_TYPE 

wrong vector type

HLIB_ERR_VEC_STRUCT 

invalid vector structure

HLIB_ERR_VEC_SIZE 

invalid size of vector

HLIB_ERR_VEC_INCOMP 

vector with incompatible dimension

HLIB_ERR_VEC_NSCALAR 

vector is not a scalar vector

HLIB_ERR_MAT_TYPE 

invalid matrix type

HLIB_ERR_MAT_STRUCT 

invalid structure of matrix

HLIB_ERR_MAT_SIZE 

invalid size of matrix

HLIB_ERR_MAT_SINGULAR 

singular matrix detected

HLIB_ERR_MAT_NSPARSE 

matrix not a sparse matrix

HLIB_ERR_MAT_NDENSE 

matrix not a dense matrix

HLIB_ERR_MAT_NHMAT 

matrix not an H-matrix

HLIB_ERR_MAT_INCOMP_TYPE 

matrices with incompatible type

HLIB_ERR_MAT_INCOMP_CT 

matrices with incompatible cluster tree

HLIB_ERR_MAT_INVALID 

invalid matrix

HLIB_ERR_MAT_NSYM 

matrix not symmetric

HLIB_ERR_MAT_NHERM 

matrix not hermitian

HLIB_ERR_MAT_NPOSDEF 

matrix not positiv definite

HLIB_ERR_FMT_UNKNOWN 

error while parsing HLIBpro format

HLIB_ERR_FMT_HFORMAT 

error while parsing HLIBpro format

HLIB_ERR_FMT_SAMG 

error while parsing SAMG format

HLIB_ERR_FMT_MATLAB 

error while parsing Matlab format

HLIB_ERR_FMT_PLTMG 

error while parsing PLTMG format

HLIB_ERR_FMT_HB 

error while parsing Harwell Boeing format

HLIB_ERR_FMT_MTX 

error while parsing Matrix Market format

HLIB_ERR_FMT_PLY 

error while parsing Ply format

HLIB_ERR_GRID_FORMAT 

invalid format of grid file

HLIB_ERR_GRID_DATA 

invalid data in grid file

HLIB_ERR_FOPEN 

could not open file

HLIB_ERR_FCLOSE 

could not close file

HLIB_ERR_FWRITE 

could not write to file

HLIB_ERR_FREAD 

could not read from file

HLIB_ERR_FSEEK 

could not seek in file

HLIB_ERR_FNEXISTS 

file does not exists

HLIB_ERR_BS_SIZE 

size of bytestream too small

HLIB_ERR_BS_WRITE 

error while writing to bytestream

HLIB_ERR_BS_READ 

error while reading from bytestream

HLIB_ERR_BS_TYPE 

type error in bytestream

HLIB_ERR_BS_DATA 

general data error in bytestream

HLIB_ERR_NOZLIB 

no zlib support compiled in

HLIB_ERR_ZLIB_UNZIP 

error during zlib uncompression

HLIB_ERR_NOMETIS 

no METIS support compiled in

HLIB_ERR_NOSCOTCH 

no Scotch support compiled in

HLIB_ERR_SCOTCH 

error in call to Scotch function

HLIB_ERR_NOCHACO 

no Chaco support compiled in

HLIB_ERR_NOLIBGRAPH 

no libGraph support compiled in

HLIB_ERR_NOFFTW3 

no FFTW3 support compiled in

HLIB_ERR_NOCAIRO 

no Cairo support compiled in

HLIB_ERR_NOHDF5 

no HDF5 support compiled in

HLIB_ERR_NOMONGOOSE 

no Mongoose support compiled in

HLIB_ERR_MPI 

error in call to MPI function

HLIB_ERR_SOLVER_INVALID 

invalid solver

HLIB_ERR_LRAPX_INVALID 

invalid low-rank approximation type

HLIB_ERR_GRID_INVALID 

invalid grid

HLIB_ERR_FNSPACE_INVALID 

invalid function space

◆ hlib_ [1/6]

enum hlib_

defines operation on matrices

Enumerator
HLIB_MATOP_NORM 

normal matrix, no modification

HLIB_MATOP_TRANS 

transposed matrix

HLIB_MATOP_ADJ 

adjoint operator: transpose (real) or conjugate transpose (complex)

HLIB_BSP_AUTO 

automatic choice

HLIB_BSP_GEOM_MAX 

geometrically balanced clustering

HLIB_BSP_GEOM_REG 

w.r.t. maximal dimension or regularly

HLIB_BSP_CARD_MAX 

cardinality balanced clustering

HLIB_BSP_CARD_REG 

w.r.t. maximal dimension or regularly

HLIB_BSP_PCA 

clustering based on principle component

HLIB_BSP_GEOM 

deprecated, now HLIB_BSP_GEOM_MAX

HLIB_BSP_CARD 

deprecated, now HLIB_BSP_CARD_MAX

HLIB_BSP_REGULAR 

deprecated, now HLIB_BSP_GEOM_REG

HLIB_ALG_AUTO 

automatic choice

HLIB_ALG_BFS 

BFS graph partitioning

HLIB_ALG_ML 

MultiLevel graph partitioning

HLIB_ALG_METIS 

METIS library

HLIB_ALG_SCOTCH 

SCOTCH library

HLIB_ADM_AUTO 

automatically decide suitable adm. condition

HLIB_ADM_STD_MIN 

standard admissibility with min. of diameters

HLIB_ADM_STD_MAX 

standard admissibility with max. of diameters

HLIB_ADM_WEAK 

weak admissibility

HLIB_ACC_FIXED_EPS 

fixed accuracy for all blocks

HLIB_ACC_FIXED_RANK 

fixed rank for all blocks

HLIB_ACC_BLOCKED 

different accuracy for one block level

HLIB_ACC_STRING 

arbitrary accuracy description

HLIB_LRAPX_SVD 

use singular value decomposition

HLIB_LRAPX_ACA 

use adaptive cross approximation

HLIB_LRAPX_ACAPLUS 

use advanced adaptive cross approximation

HLIB_LRAPX_ACAFULL 

use adaptive cross approximation with
full pivot search

HLIB_LRAPX_HCA 

use hybrid cross approximation

HLIB_LRAPX_ZERO 

build empty low-rank blocks (nearfield only)

HLIB_LRAPX_RANDSVD 

use randomized SVD

HLIB_LRAPX_RRQR 

uses rank revealing QR

◆ hlib_ [2/6]

enum hlib_

partitioning algorithms for binary sparse partitioning

Enumerator
HLIB_MATOP_NORM 

normal matrix, no modification

HLIB_MATOP_TRANS 

transposed matrix

HLIB_MATOP_ADJ 

adjoint operator: transpose (real) or conjugate transpose (complex)

HLIB_BSP_AUTO 

automatic choice

HLIB_BSP_GEOM_MAX 

geometrically balanced clustering

HLIB_BSP_GEOM_REG 

w.r.t. maximal dimension or regularly

HLIB_BSP_CARD_MAX 

cardinality balanced clustering

HLIB_BSP_CARD_REG 

w.r.t. maximal dimension or regularly

HLIB_BSP_PCA 

clustering based on principle component

HLIB_BSP_GEOM 

deprecated, now HLIB_BSP_GEOM_MAX

HLIB_BSP_CARD 

deprecated, now HLIB_BSP_CARD_MAX

HLIB_BSP_REGULAR 

deprecated, now HLIB_BSP_GEOM_REG

HLIB_ALG_AUTO 

automatic choice

HLIB_ALG_BFS 

BFS graph partitioning

HLIB_ALG_ML 

MultiLevel graph partitioning

HLIB_ALG_METIS 

METIS library

HLIB_ALG_SCOTCH 

SCOTCH library

HLIB_ADM_AUTO 

automatically decide suitable adm. condition

HLIB_ADM_STD_MIN 

standard admissibility with min. of diameters

HLIB_ADM_STD_MAX 

standard admissibility with max. of diameters

HLIB_ADM_WEAK 

weak admissibility

HLIB_ACC_FIXED_EPS 

fixed accuracy for all blocks

HLIB_ACC_FIXED_RANK 

fixed rank for all blocks

HLIB_ACC_BLOCKED 

different accuracy for one block level

HLIB_ACC_STRING 

arbitrary accuracy description

HLIB_LRAPX_SVD 

use singular value decomposition

HLIB_LRAPX_ACA 

use adaptive cross approximation

HLIB_LRAPX_ACAPLUS 

use advanced adaptive cross approximation

HLIB_LRAPX_ACAFULL 

use adaptive cross approximation with
full pivot search

HLIB_LRAPX_HCA 

use hybrid cross approximation

HLIB_LRAPX_ZERO 

build empty low-rank blocks (nearfield only)

HLIB_LRAPX_RANDSVD 

use randomized SVD

HLIB_LRAPX_RRQR 

uses rank revealing QR

◆ hlib_ [3/6]

enum hlib_

partitioning algorithms for algebraic clustering

Enumerator
HLIB_MATOP_NORM 

normal matrix, no modification

HLIB_MATOP_TRANS 

transposed matrix

HLIB_MATOP_ADJ 

adjoint operator: transpose (real) or conjugate transpose (complex)

HLIB_BSP_AUTO 

automatic choice

HLIB_BSP_GEOM_MAX 

geometrically balanced clustering

HLIB_BSP_GEOM_REG 

w.r.t. maximal dimension or regularly

HLIB_BSP_CARD_MAX 

cardinality balanced clustering

HLIB_BSP_CARD_REG 

w.r.t. maximal dimension or regularly

HLIB_BSP_PCA 

clustering based on principle component

HLIB_BSP_GEOM 

deprecated, now HLIB_BSP_GEOM_MAX

HLIB_BSP_CARD 

deprecated, now HLIB_BSP_CARD_MAX

HLIB_BSP_REGULAR 

deprecated, now HLIB_BSP_GEOM_REG

HLIB_ALG_AUTO 

automatic choice

HLIB_ALG_BFS 

BFS graph partitioning

HLIB_ALG_ML 

MultiLevel graph partitioning

HLIB_ALG_METIS 

METIS library

HLIB_ALG_SCOTCH 

SCOTCH library

HLIB_ADM_AUTO 

automatically decide suitable adm. condition

HLIB_ADM_STD_MIN 

standard admissibility with min. of diameters

HLIB_ADM_STD_MAX 

standard admissibility with max. of diameters

HLIB_ADM_WEAK 

weak admissibility

HLIB_ACC_FIXED_EPS 

fixed accuracy for all blocks

HLIB_ACC_FIXED_RANK 

fixed rank for all blocks

HLIB_ACC_BLOCKED 

different accuracy for one block level

HLIB_ACC_STRING 

arbitrary accuracy description

HLIB_LRAPX_SVD 

use singular value decomposition

HLIB_LRAPX_ACA 

use adaptive cross approximation

HLIB_LRAPX_ACAPLUS 

use advanced adaptive cross approximation

HLIB_LRAPX_ACAFULL 

use adaptive cross approximation with
full pivot search

HLIB_LRAPX_HCA 

use hybrid cross approximation

HLIB_LRAPX_ZERO 

build empty low-rank blocks (nearfield only)

HLIB_LRAPX_RANDSVD 

use randomized SVD

HLIB_LRAPX_RRQR 

uses rank revealing QR

◆ hlib_ [4/6]

enum hlib_

admissibility criteria

Enumerator
HLIB_MATOP_NORM 

normal matrix, no modification

HLIB_MATOP_TRANS 

transposed matrix

HLIB_MATOP_ADJ 

adjoint operator: transpose (real) or conjugate transpose (complex)

HLIB_BSP_AUTO 

automatic choice

HLIB_BSP_GEOM_MAX 

geometrically balanced clustering

HLIB_BSP_GEOM_REG 

w.r.t. maximal dimension or regularly

HLIB_BSP_CARD_MAX 

cardinality balanced clustering

HLIB_BSP_CARD_REG 

w.r.t. maximal dimension or regularly

HLIB_BSP_PCA 

clustering based on principle component

HLIB_BSP_GEOM 

deprecated, now HLIB_BSP_GEOM_MAX

HLIB_BSP_CARD 

deprecated, now HLIB_BSP_CARD_MAX

HLIB_BSP_REGULAR 

deprecated, now HLIB_BSP_GEOM_REG

HLIB_ALG_AUTO 

automatic choice

HLIB_ALG_BFS 

BFS graph partitioning

HLIB_ALG_ML 

MultiLevel graph partitioning

HLIB_ALG_METIS 

METIS library

HLIB_ALG_SCOTCH 

SCOTCH library

HLIB_ADM_AUTO 

automatically decide suitable adm. condition

HLIB_ADM_STD_MIN 

standard admissibility with min. of diameters

HLIB_ADM_STD_MAX 

standard admissibility with max. of diameters

HLIB_ADM_WEAK 

weak admissibility

HLIB_ACC_FIXED_EPS 

fixed accuracy for all blocks

HLIB_ACC_FIXED_RANK 

fixed rank for all blocks

HLIB_ACC_BLOCKED 

different accuracy for one block level

HLIB_ACC_STRING 

arbitrary accuracy description

HLIB_LRAPX_SVD 

use singular value decomposition

HLIB_LRAPX_ACA 

use adaptive cross approximation

HLIB_LRAPX_ACAPLUS 

use advanced adaptive cross approximation

HLIB_LRAPX_ACAFULL 

use adaptive cross approximation with
full pivot search

HLIB_LRAPX_HCA 

use hybrid cross approximation

HLIB_LRAPX_ZERO 

build empty low-rank blocks (nearfield only)

HLIB_LRAPX_RANDSVD 

use randomized SVD

HLIB_LRAPX_RRQR 

uses rank revealing QR

◆ hlib_ [5/6]

enum hlib_

different types of accuracy

Enumerator
HLIB_MATOP_NORM 

normal matrix, no modification

HLIB_MATOP_TRANS 

transposed matrix

HLIB_MATOP_ADJ 

adjoint operator: transpose (real) or conjugate transpose (complex)

HLIB_BSP_AUTO 

automatic choice

HLIB_BSP_GEOM_MAX 

geometrically balanced clustering

HLIB_BSP_GEOM_REG 

w.r.t. maximal dimension or regularly

HLIB_BSP_CARD_MAX 

cardinality balanced clustering

HLIB_BSP_CARD_REG 

w.r.t. maximal dimension or regularly

HLIB_BSP_PCA 

clustering based on principle component

HLIB_BSP_GEOM 

deprecated, now HLIB_BSP_GEOM_MAX

HLIB_BSP_CARD 

deprecated, now HLIB_BSP_CARD_MAX

HLIB_BSP_REGULAR 

deprecated, now HLIB_BSP_GEOM_REG

HLIB_ALG_AUTO 

automatic choice

HLIB_ALG_BFS 

BFS graph partitioning

HLIB_ALG_ML 

MultiLevel graph partitioning

HLIB_ALG_METIS 

METIS library

HLIB_ALG_SCOTCH 

SCOTCH library

HLIB_ADM_AUTO 

automatically decide suitable adm. condition

HLIB_ADM_STD_MIN 

standard admissibility with min. of diameters

HLIB_ADM_STD_MAX 

standard admissibility with max. of diameters

HLIB_ADM_WEAK 

weak admissibility

HLIB_ACC_FIXED_EPS 

fixed accuracy for all blocks

HLIB_ACC_FIXED_RANK 

fixed rank for all blocks

HLIB_ACC_BLOCKED 

different accuracy for one block level

HLIB_ACC_STRING 

arbitrary accuracy description

HLIB_LRAPX_SVD 

use singular value decomposition

HLIB_LRAPX_ACA 

use adaptive cross approximation

HLIB_LRAPX_ACAPLUS 

use advanced adaptive cross approximation

HLIB_LRAPX_ACAFULL 

use adaptive cross approximation with
full pivot search

HLIB_LRAPX_HCA 

use hybrid cross approximation

HLIB_LRAPX_ZERO 

build empty low-rank blocks (nearfield only)

HLIB_LRAPX_RANDSVD 

use randomized SVD

HLIB_LRAPX_RRQR 

uses rank revealing QR

◆ hlib_ [6/6]

enum hlib_

different types of low rank approximation

Enumerator
HLIB_MATOP_NORM 

normal matrix, no modification

HLIB_MATOP_TRANS 

transposed matrix

HLIB_MATOP_ADJ 

adjoint operator: transpose (real) or conjugate transpose (complex)

HLIB_BSP_AUTO 

automatic choice

HLIB_BSP_GEOM_MAX 

geometrically balanced clustering

HLIB_BSP_GEOM_REG 

w.r.t. maximal dimension or regularly

HLIB_BSP_CARD_MAX 

cardinality balanced clustering

HLIB_BSP_CARD_REG 

w.r.t. maximal dimension or regularly

HLIB_BSP_PCA 

clustering based on principle component

HLIB_BSP_GEOM 

deprecated, now HLIB_BSP_GEOM_MAX

HLIB_BSP_CARD 

deprecated, now HLIB_BSP_CARD_MAX

HLIB_BSP_REGULAR 

deprecated, now HLIB_BSP_GEOM_REG

HLIB_ALG_AUTO 

automatic choice

HLIB_ALG_BFS 

BFS graph partitioning

HLIB_ALG_ML 

MultiLevel graph partitioning

HLIB_ALG_METIS 

METIS library

HLIB_ALG_SCOTCH 

SCOTCH library

HLIB_ADM_AUTO 

automatically decide suitable adm. condition

HLIB_ADM_STD_MIN 

standard admissibility with min. of diameters

HLIB_ADM_STD_MAX 

standard admissibility with max. of diameters

HLIB_ADM_WEAK 

weak admissibility

HLIB_ACC_FIXED_EPS 

fixed accuracy for all blocks

HLIB_ACC_FIXED_RANK 

fixed rank for all blocks

HLIB_ACC_BLOCKED 

different accuracy for one block level

HLIB_ACC_STRING 

arbitrary accuracy description

HLIB_LRAPX_SVD 

use singular value decomposition

HLIB_LRAPX_ACA 

use adaptive cross approximation

HLIB_LRAPX_ACAPLUS 

use advanced adaptive cross approximation

HLIB_LRAPX_ACAFULL 

use adaptive cross approximation with
full pivot search

HLIB_LRAPX_HCA 

use hybrid cross approximation

HLIB_LRAPX_ZERO 

build empty low-rank blocks (nearfield only)

HLIB_LRAPX_RANDSVD 

use randomized SVD

HLIB_LRAPX_RRQR 

uses rank revealing QR

Function Documentation

◆ acc_blocked()

hlib_ acc_t hlib_ acc_blocked ( const hlib_ acc_t blockacc)

return accuracy object with blockwise accuracy defined by array blockacc of dimension blockrows × blockcolumns corresponding to first partitioning level; the array must be stored column wise

◆ acc_fixed_eps()

hlib_ acc_t hlib_ acc_fixed_eps ( const hlib_ real_t  eps)

return accuracy object with fixed accuracy eps

◆ acc_fixed_rank()

hlib_ acc_t hlib_ acc_fixed_rank ( const unsigned int  k)

return accuracy object with fixed rank k

◆ admcond_alg()

hlib_ admcond_t hlib_ admcond_alg ( const hlib_ adm_t  crit,
const double  eta,
const hlib_ matrix_t  S,
const hlib_ permutation_t  row_perm,
const hlib_ permutation_t  col_perm,
int *  info 
)

create admissibility condition based on algebraic connectivity in S

  • row_perm and col_perm define the (optional) mapping between internal to external ordering for row and column index sets, respectively (see hlib_ct_perm_i2e); set to NULL if not present

◆ admcond_free()

void hlib_ admcond_free ( const hlib_ admcond_t  ac,
int *  info 
)

free admissibility condition

◆ admcond_geom()

hlib_ admcond_t hlib_ admcond_geom ( const hlib_ adm_t  crit,
const double  eta,
int *  info 
)

create admissibility condition based on geometrical data

◆ admcond_geom_hilo()

hlib_ admcond_t hlib_ admcond_geom_hilo ( const hlib_ complex_t  kappa,
const unsigned int  nwaves,
const double  eta,
int *  info 
)

create admissibility condition for high/low frequency case by limiting the number of wavelengths (nwaves) per cluster

◆ admcond_geom_period()

hlib_ admcond_t hlib_ admcond_geom_period ( const hlib_ adm_t  crit,
const double  eta,
const double *  period,
const unsigned int  dim,
int *  info 
)

create admissibility condition based on geometrical data with additional periodicity in geometry defined by vector period

  • period must have same dimension dim as coordinates used for constructing cluster trees

◆ bc_bytesize()

size_t hlib_ bc_bytesize ( const hlib_ blockcluster_t  bc,
int *  info 
)

return size of memory in bytes used by block cluster

◆ bc_colcl()

hlib_ cluster_t hlib_ bc_colcl ( const hlib_ blockcluster_t  bc,
int *  info 
)

return column cluster of given block cluster

◆ bc_copy()

hlib_ blockcluster_t hlib_ bc_copy ( const hlib_ blockcluster_t  bc,
int *  info 
)

return copy of sub tree defined by bc

◆ bc_csp()

int hlib_ bc_csp ( const hlib_ blockcluster_t  bc,
int *  info 
)

compute sparsity constant of block cluster tree

◆ bc_depth()

size_t hlib_ bc_depth ( const hlib_ blockcluster_t  bc,
int *  info 
)

return depth of block cluster

◆ bc_free()

void hlib_ bc_free ( hlib_ blockcluster_t  bc,
int *  info 
)

free resources coupled with block cluster tree bct

◆ bc_is_adm()

int hlib_ bc_is_adm ( const hlib_ blockcluster_t  bc,
int *  info 
)

return 1 if block cluster is admissible and 0 otherwise

◆ bc_is_leaf()

int hlib_ bc_is_leaf ( const hlib_ blockcluster_t  bc,
int *  info 
)

return 1 if block cluster is leaf and 0 otherwise

◆ bc_nnodes()

size_t hlib_ bc_nnodes ( const hlib_ blockcluster_t  bc,
int *  info 
)

return number of nodes in block cluster

◆ bc_nsons()

size_t hlib_ bc_nsons ( const hlib_ blockcluster_t  bc,
int *  info 
)

return total number of sons of block cluster bc

◆ bc_parent()

hlib_ blockcluster_t hlib_ bc_parent ( const hlib_ blockcluster_t  bc,
int *  info 
)

return parent block cluster of block cluster bc

◆ bc_print_ps()

void hlib_ bc_print_ps ( const hlib_ blockcluster_t  bc,
const char *  filename,
int *  info 
)

print block cluster tree in PostScript format to file filename

◆ bc_rowcl()

hlib_ cluster_t hlib_ bc_rowcl ( const hlib_ blockcluster_t  bc,
int *  info 
)

return row cluster of given block cluster

◆ bc_son()

hlib_ blockcluster_t hlib_ bc_son ( const hlib_ blockcluster_t  bc,
const unsigned int  i,
const unsigned int  j,
int *  info 
)

return son (i,j) of block cluster bc

  • the indices i and j are with respect to the numbering in the row and column cluster trees

◆ bct_build()

hlib_ blockclustertree_t hlib_ bct_build ( const hlib_ clustertree_t  rowct,
const hlib_ clustertree_t  colct,
const hlib_ admcond_t  ac,
int *  info 
)

build block cluster tree over given row and column clusters using admissibility condition ac

◆ bct_bytesize()

size_t hlib_ bct_bytesize ( const hlib_ blockclustertree_t  bct,
int *  info 
)

return size of memory in bytes used by block cluster

◆ bct_colct()

hlib_ clustertree_t hlib_ bct_colct ( const hlib_ blockclustertree_t  bct,
int *  info 
)

return column cluster tree of given block cluster tree

◆ bct_csp()

int hlib_ bct_csp ( const hlib_ blockclustertree_t  bct,
int *  info 
)

compute sparsity constant of block cluster tree

◆ bct_depth()

size_t hlib_ bct_depth ( const hlib_ blockclustertree_t  bct,
int *  info 
)

return depth of block cluster tree

◆ bct_distribute_block()

void hlib_ bct_distribute_block ( hlib_ blockclustertree_t  bct,
const unsigned int  p,
const unsigned int  min_lvl,
const int  symmetric,
int *  info 
)

distribute block cluster tree onto p processors based on block-wise partition with unique processor per block

  • assuming compatible structure of bct
  • min_lvl controls minimal level for blocks in bct to schedule
  • if symmetric ≠ 0, the scheduling is performed for the lower left part and mirrored to the upper right part (for symmetric/hermitian matrices)

◆ bct_free()

void hlib_ bct_free ( hlib_ blockclustertree_t  bct,
int *  info 
)

free resources coupled with cluster tree ct

◆ bct_nnodes()

size_t hlib_ bct_nnodes ( const hlib_ blockclustertree_t  bct,
int *  info 
)

return number of nodes in block cluster tree

◆ bct_print_ps()

void hlib_ bct_print_ps ( const hlib_ blockclustertree_t  bct,
const char *  filename,
int *  info 
)

print block cluster tree in PostScript format to file filename

◆ bct_rowct()

hlib_ clustertree_t hlib_ bct_rowct ( const hlib_ blockclustertree_t  bct,
int *  info 
)

return row cluster tree of given block cluster tree

◆ cl_bytesize()

size_t hlib_ cl_bytesize ( const hlib_ cluster_t  cl,
int *  info 
)

return size of memory in bytes used by cluster

◆ cl_copy()

hlib_ cluster_t hlib_ cl_copy ( const hlib_ cluster_t  cl,
int *  info 
)

return copy of sub tree defined by cl

◆ cl_depth()

size_t hlib_ cl_depth ( const hlib_ cluster_t  cl,
int *  info 
)

return depth of cluster tree

◆ cl_first()

int hlib_ cl_first ( const hlib_ cluster_t  cl,
int *  info 
)

return first index in index set

◆ cl_free()

void hlib_ cl_free ( hlib_ cluster_t  cl,
int *  info 
)

free resources coupled with cluster cl

◆ cl_is_leaf()

int hlib_ cl_is_leaf ( const hlib_ cluster_t  cl,
int *  info 
)

return 1 if cluster is leaf and 0 otherwise

◆ cl_last()

int hlib_ cl_last ( const hlib_ cluster_t  cl,
int *  info 
)

return last index in index set

◆ cl_nnodes()

size_t hlib_ cl_nnodes ( const hlib_ cluster_t  cl,
int *  info 
)

return number of nodes in cluster tree

◆ cl_nsons()

size_t hlib_ cl_nsons ( const hlib_ cluster_t  cl,
int *  info 
)

return number of sons of cluster

◆ cl_print_ps()

void hlib_ cl_print_ps ( const hlib_ cluster_t  cl,
const char *  filename,
int *  info 
)

print cluster tree in PostScript format to file filename

◆ cl_size()

size_t hlib_ cl_size ( const hlib_ cluster_t  cl,
int *  info 
)

return size of index set

◆ cl_son()

hlib_ cluster_t hlib_ cl_son ( const hlib_ cluster_t  cl,
const unsigned int  i,
int *  info 
)

return i'th son of cluster cl

◆ clt_build_alg()

hlib_ clustertree_t hlib_ clt_build_alg ( const hlib_ matrix_t  S,
const hlib_ alg_t  algtype,
const unsigned int  nmin,
int *  info 
)

build clustertree via algebraic clustering based on given sparse matrix S and partitioning type algtype.

◆ clt_build_alg_nd()

hlib_ clustertree_t hlib_ clt_build_alg_nd ( const hlib_ matrix_t  S,
const hlib_ alg_t  algtype,
const unsigned int  nmin,
int *  info 
)

build clustertree via algebraic clustering with nested dissection based on given sparse matrix S and partitioning type algtype.

◆ clt_build_alg_part()

hlib_ clustertree_t hlib_ clt_build_alg_part ( const hlib_ matrix_t  S,
const unsigned int *  partition,
const hlib_ alg_t  algtype,
const unsigned int  nmin,
int *  info 
)

build clustertree via algebraic clustering based on matrix S and use a predefined partition for first step

  • partition must have size "rows(S)" and contain ids ∈ [0,k-1], where k is the total number of partitions
  • index "i" will go into group partition[i]

◆ clt_build_bsp()

hlib_ clustertree_t hlib_ clt_build_bsp ( const hlib_ coord_t  coord,
const hlib_ bsp_t  bsptype,
const unsigned int  nmin,
int *  info 
)

build cluster tree using binary space partitioning

  • optional periodicity of the coordinates defined by period, e.g. vector containing stride in all spatial dimensions or NULL if not defined
Parameters
coordcoordinates of indices
bsptypepartitioning type
nminminimal cluster size

◆ clt_build_bsp_nd()

hlib_ clustertree_t hlib_ clt_build_bsp_nd ( const hlib_ coord_t  coord,
const hlib_ matrix_t  S,
const hlib_ bsp_t  bsptype,
const unsigned int  nmin,
int *  info 
)

build cluster tree using binary space partitioning and nested dissection based on given sparse matrix S

  • for period see HLIBPF(clt_build_bsp)
Parameters
coordcoordinates of indices
Ssparse mat. for connectivity
bsptypepartitioning type
nminminimal cluster size

◆ clt_build_bsp_part()

hlib_ clustertree_t hlib_ clt_build_bsp_part ( const hlib_ coord_t  coord,
const unsigned int *  partition,
const int  eq_depth,
const hlib_ bsp_t  bsptype,
const unsigned int  nmin,
int *  info 
)

build cluster tree using binary space partitioning but use a predefined partition for first step, e.g. first divide indices into groups defined by partition and apply BSP on these sets

  • partition must have size "size(coord)" and contain ids ∈ [0,k-1], where k is the total number of partitions
  • index "i" will go into group partition[i]
  • if eq_depth ≠ 0, the depth of subsequent sub trees (for each partition) is adjusted according to depth of previous sub trees
Parameters
coordcoordinates of indices
partitionpredifined partition
eq_depthequalise depths of subtrees
bsptypepartitioning type
nminminimal cluster size

◆ clt_bytesize()

size_t hlib_ clt_bytesize ( const hlib_ clustertree_t  ct,
int *  info 
)

return size of memory in bytes used by cluster

◆ clt_depth()

size_t hlib_ clt_depth ( const hlib_ clustertree_t  ct,
int *  info 
)

return depth of cluster tree

◆ clt_free()

void hlib_ clt_free ( hlib_ clustertree_t  ct,
int *  info 
)

free resources coupled with cluster tree ct

◆ clt_nnodes()

size_t hlib_ clt_nnodes ( const hlib_ clustertree_t  ct,
int *  info 
)

return number of nodes in cluster tree

◆ clt_perm_e2i()

hlib_ permutation_t hlib_ clt_perm_e2i ( hlib_ clustertree_t  ct,
int *  info 
)

return mapping from external to internal (in cluster tree) ordering

  • returned object is reference to internal permutation: do NOT free

◆ clt_perm_i2e()

hlib_ permutation_t hlib_ clt_perm_i2e ( hlib_ clustertree_t  ct,
int *  info 
)

return mapping from internal (in cluster tree) to external ordering

  • returned object is reference to internal permutation: do NOT free

◆ clt_print_ps()

void hlib_ clt_print_ps ( const hlib_ clustertree_t  ct,
const char *  filename,
int *  info 
)

print cluster tree in PostScript format to file filename

◆ clt_root()

hlib_ cluster_t hlib_ clt_root ( hlib_ clustertree_t  ct,
int *  info 
)

return root node in cluster tree

◆ cmplx_abs()

hlib_ real_t hlib_ cmplx_abs ( const hlib_ complex_t  a)

return absolute value

◆ cmplx_add()

hlib_ complex_t hlib_ cmplx_add ( const hlib_ complex_t  a,
const hlib_ complex_t  b 
)

conversion to/from C99 complex if available standard mathematical operators

◆ cmplx_conj()

hlib_ complex_t hlib_ cmplx_conj ( const hlib_ complex_t  a)

return conjugate value

◆ cmplx_exp()

hlib_ complex_t hlib_ cmplx_exp ( const hlib_ complex_t  a)

exponential function e^a

◆ cmplx_sqrt()

hlib_ complex_t hlib_ cmplx_sqrt ( const hlib_ complex_t  a)

return square root

◆ complex()

hlib_ complex_t hlib_ complex ( const hlib_ real_t  re,
const hlib_ real_t  im 
)

construct hlib_complex_t variable

◆ coord_bbmax()

double* hlib_ coord_bbmax ( const hlib_ coord_t  coord,
const size_t  i,
int *  info 
)

return pointer too coordinate of i'th maximal bounding box

◆ coord_bbmin()

double* hlib_ coord_bbmin ( const hlib_ coord_t  coord,
const size_t  i,
int *  info 
)

return pointer too coordinate of i'th minimal bounding box

◆ coord_bytesize()

size_t hlib_ coord_bytesize ( const hlib_ coord_t  coord,
int *  info 
)

return size of memory in bytes used by coordinates

◆ coord_dim()

unsigned int hlib_ coord_dim ( const hlib_ coord_t  coord,
int *  info 
)

return dimension of coordinates in given coordinate set coord

◆ coord_free()

void hlib_ coord_free ( hlib_ coord_t  coord,
int *  info 
)

free resources coupled with coordinates

  • if "HLIBPF(coord_import)" was used to create coord, the memory occupied by coordinate array will NOT be freed

◆ coord_get()

double* hlib_ coord_get ( const hlib_ coord_t  coord,
const size_t  i,
int *  info 
)

return pointer too coordinate i in given coordinate set coord

  • the returned value points to an array of size dim(coord)
  • to pointer is no copy, so all changes to the data are direct changes to the coordinates

◆ coord_get_period()

void hlib_ coord_get_period ( hlib_ coord_t  coord,
double  period[],
int *  info 
)

store periodicity vector in period

  • period must have the same dimensions as the coordinates

◆ coord_has_bbox()

int hlib_ coord_has_bbox ( const hlib_ coord_t  coord,
int *  info 
)

return 1, if coordinate set has bounding box info and 0 otherwise

◆ coord_import()

hlib_ coord_t hlib_ coord_import ( const size_t  n,
const unsigned int  dim,
double **  coord,
const double *  period,
int *  info 
)

import given coordinates into HLIBpro

  • data is directly referenced, not copied, i.e., any later changes to coord will also change coordinate set,
  • optional periodicity of the coordinates defined by period, e.g. vector containing stride in all spatial dimensions or NULL if not defined

◆ coord_ncoord()

size_t hlib_ coord_ncoord ( const hlib_ coord_t  coord,
int *  info 
)

return number of coordinates in given coordinate set coord

◆ coord_print_vrml()

void hlib_ coord_print_vrml ( const hlib_ coord_t  coord,
const char *  filename,
int *  info 
)

print coordinates in VRML format to file filename

◆ coord_print_vtk()

void hlib_ coord_print_vtk ( const hlib_ coord_t  coord,
const char *  filename,
int *  info 
)

print coordinates in VTK format to file filename

◆ coord_set_period()

void hlib_ coord_set_period ( hlib_ coord_t  coord,
const double  period[],
int *  info 
)

set perdiodicity of coordinates to period

  • period must have the same dimensions as the coordinates

◆ cputime()

double hlib_ cputime ( )

return execution time of program in seconds

◆ done()

void hlib_ done ( int *  info)

finalise HLIBpro

◆ error_desc()

void hlib_ error_desc ( char *  desc,
const size_t  size 
)

copy description of current error to buffer

◆ get_config()

void hlib_ get_config ( const char *  option,
char *  value,
const size_t  len,
int *  info 
)

return current value of option, stored as string in value

◆ hb_load_matrix()

hlib_ matrix_t hlib_ hb_load_matrix ( const char *  filename,
int *  info 
)

read matrix from file filename

◆ hb_save_matrix()

void hlib_ hb_save_matrix ( const hlib_ matrix_t  M,
const char *  filename,
int *  info 
)

save matrix M to file filename

◆ hformat_load_coord()

hlib_ coord_t hlib_ hformat_load_coord ( const char *  filename,
int *  info 
)

read coordinates from file filename

◆ hformat_load_linearoperator()

hlib_ linearoperator_t hlib_ hformat_load_linearoperator ( const char *  filename,
int *  info 
)

read matrix from file filename

◆ hformat_load_matrix()

hlib_ matrix_t hlib_ hformat_load_matrix ( const char *  filename,
int *  info 
)

read matrix from file filename

◆ hformat_load_vector()

hlib_ vector_t hlib_ hformat_load_vector ( const char *  filename,
int *  info 
)

read vector from file filename

◆ hformat_save_coord()

void hlib_ hformat_save_coord ( const hlib_ coord_t  coord,
const char *  filename,
int *  info 
)

save coordinates to file filename

◆ hformat_save_linearoperator()

void hlib_ hformat_save_linearoperator ( const hlib_ linearoperator_t  A,
const char *  filename,
int *  info 
)

save linear operator A to file filename

◆ hformat_save_matrix()

void hlib_ hformat_save_matrix ( const hlib_ matrix_t  A,
const char *  filename,
int *  info 
)

save matrix A to file filename

◆ hformat_save_vector()

void hlib_ hformat_save_vector ( const hlib_ vector_t  v,
const char *  filename,
int *  info 
)

save vector v to file filename

◆ init()

void hlib_ init ( int *  info)

initialise HLIBpro

◆ is_init()

int hlib_ is_init ( )

return 1 if HLIBpro is initialised and 0 otherwise

◆ linearoperator_apply()

void hlib_ linearoperator_apply ( const hlib_ linearoperator_t  A,
const hlib_ vector_t  x,
hlib_ vector_t  y,
const hlib_ matop_t  matop,
int *  info 
)

computes \( y := op(A) \cdot x \)

◆ linearoperator_apply_add()

void hlib_ linearoperator_apply_add ( const hlib_ real_t  alpha,
const hlib_ linearoperator_t  A,
const hlib_ vector_t  x,
hlib_ vector_t  y,
const hlib_ matop_t  matop,
int *  info 
)

computes \( y := y + \alpha op(A) \cdot x \)

◆ linearoperator_capply_add()

void hlib_ linearoperator_capply_add ( const hlib_ complex_t  alpha,
const hlib_ linearoperator_t  A,
const hlib_ vector_t  x,
hlib_ vector_t  y,
const hlib_ matop_t  matop,
int *  info 
)

computes \( y := y + \alpha op(A) \cdot x \)

◆ linearoperator_domain_vector()

hlib_ vector_t hlib_ linearoperator_domain_vector ( const hlib_ linearoperator_t  A,
int *  info 
)

create vectors from the domain of the linear operator A

◆ linearoperator_free()

void hlib_ linearoperator_free ( hlib_ linearoperator_t  A,
int *  info 
)

free resources coupled with linear operator A

◆ linearoperator_norm_inv_approx()

hlib_ real_t hlib_ linearoperator_norm_inv_approx ( const hlib_ linearoperator_t  A,
const hlib_ linearoperator_t  B,
int *  info 
)

compute inversion error |I-BA|_2, where B is supposed to be A^-1

◆ linearoperator_norm_spectral()

hlib_ real_t hlib_ linearoperator_norm_spectral ( const hlib_ linearoperator_t  A,
int *  info 
)

compute spectral norm of matrix

◆ linearoperator_norm_spectral_diff()

hlib_ real_t hlib_ linearoperator_norm_spectral_diff ( const hlib_ linearoperator_t  A,
const hlib_ linearoperator_t  B,
int *  info 
)

compute relative spectral norm of A-B, e.g. |A-B|_2/|A|_2

◆ linearoperator_norm_spectral_inv()

hlib_ real_t hlib_ linearoperator_norm_spectral_inv ( const hlib_ linearoperator_t  A,
int *  info 
)

compute spectral norm of inverse matrix

◆ linearoperator_range_vector()

hlib_ vector_t hlib_ linearoperator_range_vector ( const hlib_ linearoperator_t  A,
int *  info 
)

create vectors from the range of the linear operator A

◆ load_coord()

hlib_ coord_t hlib_ load_coord ( const char *  filename,
int *  info 
)

read coordinates from file filename

◆ load_matrix()

hlib_ matrix_t hlib_ load_matrix ( const char *  filename,
int *  info 
)

read matrix from file filename

◆ load_vector()

hlib_ vector_t hlib_ load_vector ( const char *  filename,
int *  info 
)

read vector from file filename

◆ major_version()

unsigned int hlib_ major_version ( )

return major version number of 𝖧𝖫𝖨𝖡𝗉𝗋𝗈

◆ matlab_load_matrix()

hlib_ matrix_t hlib_ matlab_load_matrix ( const char *  filename,
const char *  matname,
int *  info 
)

read matrix named matname in Matlab V7 format from file filename; if matname == NULL or matname == "", the first matrix in filename will be read

◆ matlab_load_vector()

hlib_ vector_t hlib_ matlab_load_vector ( const char *  filename,
const char *  vecname,
int *  info 
)

read vector named vname from file filename in Matlab V7 format

◆ matlab_save_matrix()

void hlib_ matlab_save_matrix ( const hlib_ matrix_t  M,
const char *  filename,
const char *  matname,
int *  info 
)

save matrix M named matname in Matlab V7 format to file filename

◆ matlab_save_vector()

void hlib_ matlab_save_vector ( const hlib_ vector_t  v,
const char *  filename,
const char *  vecname,
int *  info 
)

save vector named vname to file filename in Matlab V7 format

◆ matrix_add()

void hlib_ matrix_add ( const hlib_ real_t  alpha,
const hlib_ matrix_t  A,
const hlib_ real_t  beta,
hlib_ matrix_t  B,
const hlib_ acc_t  acc,
int *  info 
)

compute B := alpha A + beta B with block-wise precision acc

◆ matrix_add_identity()

void hlib_ matrix_add_identity ( hlib_ matrix_t  A,
const hlib_ real_t  lambda,
int *  info 
)

compute A := A + lambda I

◆ matrix_approx_rank_aca()

hlib_ matrix_t hlib_ matrix_approx_rank_aca ( const hlib_ matrix_t  A,
const hlib_ acc_t  acc,
int *  info 
)

convert matrix to lowrank format using approximation by ACA with accuracy defined by acc

  • currently only dense matrices supported

◆ matrix_assemble_block()

hlib_ matrix_t hlib_ matrix_assemble_block ( const size_t  brows,
const size_t  bcols,
hlib_ matrix_t *  submat,
const int  copy,
int *  info 
)

assemble brows × bcols block matrix out of sub blocks submat

  • sub matrices have to be stored column wise in submat, e.g.,

    \begin{eqnarray*} A_{00} & A_{01} \\ A_{10} & A_{11} \end{eqnarray*}

    is stored { A_00, A_10, A_01, A_11 },
  • if copy is non-zero, sub matrices are copied, otherwise used directly in new block matrix,
  • index sets of sub matrices are adjusted to be consistent in new block matrix,
  • if sub matrices are H-matrices, permutations from internal to external ordering (and vice versa) are also adjusted.
Parameters
browsnumber of block rows
bcolsnumber of block columns
submatarray of sub matrices
copycopy matrices if true

◆ matrix_build_ccoeff()

hlib_ matrix_t hlib_ matrix_build_ccoeff ( const hlib_ blockclustertree_t  bct,
const hlib_ ccoeff_t  f,
void *  arg,
const hlib_ lrapx_t  lrapx,
const hlib_ acc_t  acc,
const int  sym,
int *  info 
)

build H-matrix over block cluster tree bct of precision acc out of dense matrix given by a matrix coefficient function f by using a low-rank approximation for admissible blocks

Parameters
bctblock ct. defining indexsets
fcoeff. function defining mat.
argadd. argument to coeff. fn.
lrapxlow-rank approximation method
accaccuracy of the approximation
symif non-zero, matrix is sym.

◆ matrix_build_coeff()

hlib_ matrix_t hlib_ matrix_build_coeff ( const hlib_ blockclustertree_t  bct,
const hlib_ coeff_t  f,
void *  arg,
const hlib_ lrapx_t  lrapx,
const hlib_ acc_t  acc,
const int  sym,
int *  info 
)

build H-matrix over block cluster tree bct of precision acc out of dense matrix given by a matrix coefficient function f by using a low-rank approximation for admissible blocks

Parameters
bctblock ct. defining indexsets
fcoeff. function defining mat.
argadd. argument to coeff. fn.
lrapxlow-rank approximation method
accaccuracy of the approximation
symif non-zero, matrix is sym.

◆ matrix_build_dense()

hlib_ matrix_t hlib_ matrix_build_dense ( const hlib_ blockclustertree_t  bct,
const hlib_ matrix_t  D,
const hlib_ lrapx_t  lrapx,
const hlib_ acc_t  acc,
int *  info 
)

build H-matrix over block cluster tree bct with contents defined by given dense matrix D with low-rank approximation method lrapx and block-wise accuracy acc

Parameters
bctblock ct. defining indexsets
Ddense mat. to be converted
lrapxlow-rank approximation method
accaccuracy of the approximation

◆ matrix_build_identity()

hlib_ matrix_t hlib_ matrix_build_identity ( const hlib_ blockclustertree_t  bct,
int *  info 
)

build H-matrix over block cluster tree bct representing identity

◆ matrix_build_sparse()

hlib_ matrix_t hlib_ matrix_build_sparse ( const hlib_ blockclustertree_t  bct,
const hlib_ matrix_t  S,
const hlib_ acc_t  acc,
int *  info 
)

build H-matrix over block cluster tree bct with contents defined by given sparse matrix S

Parameters
bctblock ct. defining indexsets
Ssparse mat. to be converted
accaccuracy of the approximation

◆ matrix_bytesize()

size_t hlib_ matrix_bytesize ( const hlib_ matrix_t  A,
int *  info 
)

return size of matrix in bytes

◆ matrix_cadd()

void hlib_ matrix_cadd ( const hlib_ complex_t  alpha,
const hlib_ matrix_t  A,
const hlib_ complex_t  beta,
hlib_ matrix_t  B,
const hlib_ acc_t  acc,
int *  info 
)

compute B := alpha A + beta B with block-wise precision acc

◆ matrix_cadd_identity()

void hlib_ matrix_cadd_identity ( hlib_ matrix_t  A,
const hlib_ complex_t  lambda,
int *  info 
)

compute A := A + lambda I

◆ matrix_centry_get()

hlib_ complex_t hlib_ matrix_centry_get ( const hlib_ matrix_t  A,
const size_t  i,
const size_t  j,
int *  info 
)

get single entry at position (i,j) in matrix A

◆ matrix_cmul()

void hlib_ matrix_cmul ( const hlib_ complex_t  alpha,
const hlib_ matop_t  matop_A,
const hlib_ matrix_t  A,
const hlib_ matop_t  matop_B,
const hlib_ matrix_t  B,
const hlib_ complex_t  beta,
hlib_ matrix_t  C,
const hlib_ acc_t  acc,
int *  info 
)

compute C := alpha op(A) op(B) + beta C with block-wise precision acc

◆ matrix_cmulvec()

void hlib_ matrix_cmulvec ( const hlib_ complex_t  alpha,
const hlib_ matrix_t  A,
const hlib_ vector_t  x,
const hlib_ complex_t  beta,
hlib_ vector_t  y,
const hlib_ matop_t  matop,
int *  info 
)

compute y := alpha op(A) x + beta y, where op(A) is either A, A^T or A^H

Parameters
xsource vector of dimension columns(op(A))
ydest. vector of dimension rows(op(A))
matopmatrix operation, e.g. transpose

◆ matrix_col_vector()

hlib_ vector_t hlib_ matrix_col_vector ( const hlib_ matrix_t  A,
int *  info 
)

create vectors matching the column indexsets of matrix A

◆ matrix_cols()

size_t hlib_ matrix_cols ( const hlib_ matrix_t  A,
int *  info 
)

return number of columns of matrix

◆ matrix_conjugate()

void hlib_ matrix_conjugate ( const hlib_ matrix_t  A,
int *  info 
)

conjugate matrix A

◆ matrix_copy()

hlib_ matrix_t hlib_ matrix_copy ( const hlib_ matrix_t  A,
int *  info 
)

return copy of matrix A

◆ matrix_copy_acc()

hlib_ matrix_t hlib_ matrix_copy_acc ( const hlib_ matrix_t  A,
const hlib_ acc_t  acc,
const int  coarsen,
int *  info 
)

return copy of matrix A with accuracy acc; if coarsen != 0, copy is coarsend

◆ matrix_copy_blockdiag()

hlib_ matrix_t hlib_ matrix_copy_blockdiag ( const hlib_ matrix_t  A,
const unsigned int  lvl,
const size_t  blocksize,
int *  info 
)

copy blockdiagonal part of first lvl levels or blocks of size blocksize of matrix

◆ matrix_copy_blockdiag_acc()

hlib_ matrix_t hlib_ matrix_copy_blockdiag_acc ( const hlib_ matrix_t  A,
const hlib_ acc_t  acc,
const unsigned int  lvl,
const size_t  blocksize,
int *  info 
)

copy blockdiagonal part of first lvl levels or blocks of size blocksize of matrix with given accuracy acc

◆ matrix_copy_nearfield()

hlib_ matrix_t hlib_ matrix_copy_nearfield ( const hlib_ matrix_t  A,
const int  without_farfield,
int *  info 
)

copy nearfield part of matrix

  • if without_farfield is non-zero, farfield matrices (e.g., low-rank) will be skipped, otherwise set to rank 0

◆ matrix_copyto()

void hlib_ matrix_copyto ( const hlib_ matrix_t  A,
hlib_ matrix_t  B,
int *  info 
)

copy matrix A to B

◆ matrix_copyto_acc()

void hlib_ matrix_copyto_acc ( const hlib_ matrix_t  A,
hlib_ matrix_t  B,
const hlib_ acc_t  acc,
const int  coarsen,
int *  info 
)

copy matrix A to B with accuracy acc; if coarsen != 0, B is coarsend

◆ matrix_cscale()

void hlib_ matrix_cscale ( const hlib_ complex_t  f,
const hlib_ matrix_t  A,
int *  info 
)

scale matrix A by factor f

◆ matrix_entry_get()

hlib_ real_t hlib_ matrix_entry_get ( const hlib_ matrix_t  A,
const size_t  i,
const size_t  j,
int *  info 
)

get single entry at position (i,j) in matrix A

◆ matrix_factorise()

hlib_ linearoperator_t hlib_ matrix_factorise ( hlib_ matrix_t  A,
const hlib_ acc_t  acc,
int *  info 
)

factorise matrix A up to block-wise precision acc

  • depending on form of A, e.g. if unsymmetric, symmetric or hermitian, an appropriate factorisation method is chosen
  • A will be overwritten by the factors
  • the return value is a matrix which can be used to evaluate the factorisation, e.g. for matrix-vector mult. (this is not possible with A after factorisation as it holds just the data, albeit, it is still needed)

◆ matrix_factorise_inv()

hlib_ linearoperator_t hlib_ matrix_factorise_inv ( hlib_ matrix_t  A,
const hlib_ acc_t  acc,
int *  info 
)

same as hlib_matrix_factorise but return matrix object for evaluation of inverse of A.

◆ matrix_free()

void hlib_ matrix_free ( hlib_ matrix_t  A,
int *  info 
)

free resources coupled with matrix A

◆ matrix_import_cccs()

hlib_ matrix_t hlib_ matrix_import_cccs ( const size_t  rows,
const size_t  cols,
const size_t  nnz,
const int *  colptr,
const int *  rowind,
const hlib_ complex_t *  coeffs,
const int  sym,
int *  info 
)

import given complex sparse matrix in CCS format into internal sparse matrix format

  • the data is copied into internal representation
Parameters
rowsnumber of rows and
colscolumns of the matrix
nnznumber of non-zero coeff.
colptrarray of column pointers
rowindarray of row indices
coeffsarray of matrix coeff.
symif non-zero, matrix is sym.

◆ matrix_import_ccrs()

hlib_ matrix_t hlib_ matrix_import_ccrs ( const size_t  rows,
const size_t  cols,
const size_t  nnz,
const int *  rowptr,
const int *  colind,
const hlib_ complex_t *  coeffs,
const int  sym,
int *  info 
)

import given complex sparse matrix in CRS format into internal sparse matrix format

  • the data is copied into internal representation
Parameters
rowsnumber of rows and
colscolumns of the matrix
nnznumber of non-zero coeff.
rowptrarray of row pointers
colindarray of column indices
coeffsarray of matrix coeff.
symif non-zero, matrix is sym.

◆ matrix_import_ccs()

hlib_ matrix_t hlib_ matrix_import_ccs ( const size_t  rows,
const size_t  cols,
const size_t  nnz,
const int *  colptr,
const int *  rowind,
const hlib_ real_t *  coeffs,
const int  sym,
int *  info 
)

import given real sparse matrix in CCS format into internal sparse matrix format

  • the data is copied into internal representation
Parameters
rowsnumber of rows and
colscolumns of the matrix
nnznumber of non-zero coeff.
colptrarray of column pointers
rowindarray of row indices
coeffsarray of matrix coefficients
symif non-zero, matrix is sym.

◆ matrix_import_cdense()

hlib_ matrix_t hlib_ matrix_import_cdense ( const size_t  rows,
const size_t  cols,
const hlib_ complex_t *  D,
const int  sym,
int *  info 
)

import given complex dense matrix in column major format into internal dense matrix format

Parameters
rowsnumber of rows and
colscolumns of the matrix
Daccuracy of the approximation
symif non-zero, matrix is sym.

◆ matrix_import_crs()

hlib_ matrix_t hlib_ matrix_import_crs ( const size_t  rows,
const size_t  cols,
const size_t  nnz,
const int *  rowptr,
const int *  colind,
const hlib_ real_t *  coeffs,
const int  sym,
int *  info 
)

import given real sparse matrix in CRS format into internal sparse matrix format

  • the data is copied into internal representation
Parameters
rowsnumber of rows and
colscolumns of the matrix
nnznumber of non-zero coeff.
rowptrarray of row pointers
colindarray of column indices
coeffsarray of matrix coefficients
symif non-zero, matrix is sym.

◆ matrix_import_dense()

hlib_ matrix_t hlib_ matrix_import_dense ( const size_t  rows,
const size_t  cols,
const hlib_ real_t *  D,
const int  sym,
int *  info 
)

import given real dense matrix in column major format into internal dense matrix format

  • the data is copied into internal representation
Parameters
rowsnumber of rows and
colscolumns of the matrix
Daccuracy of the approximation
symif non-zero, matrix is sym.

◆ matrix_inv()

hlib_ matrix_t hlib_ matrix_inv ( hlib_ matrix_t  A,
const hlib_ acc_t  acc,
int *  info 
)

compute inverse of A with block-wise precision acc; A will be overwritten with A^-1 upon exit

  • the return value is either A, or a new representation for the inverse of A (A is still needed then)

◆ matrix_inv_diag()

hlib_ vector_t hlib_ matrix_inv_diag ( hlib_ matrix_t  A,
const hlib_ acc_t  acc,
int *  info 
)

compute diagonal of inverse of A with local accuracy acc

  • A will be overwritten during computation

◆ matrix_is_complex()

int hlib_ matrix_is_complex ( const hlib_ matrix_t  A,
int *  info 
)

return 1 if matrix A is complex valued and 0 otherwise

◆ matrix_is_herm()

int hlib_ matrix_is_herm ( const hlib_ matrix_t  A,
int *  info 
)

return 1 if matrix A is hermitian, e.g. A = A^H

◆ matrix_is_sym()

int hlib_ matrix_is_sym ( const hlib_ matrix_t  A,
int *  info 
)

return 1 if matrix A is symmetric, e.g. A = A^T

◆ matrix_ldl()

hlib_ linearoperator_t hlib_ matrix_ldl ( hlib_ matrix_t  A,
const hlib_ acc_t  acc,
int *  info 
)

LDL factorisation of matrix A up to block-wise precision acc

  • A will be overwritten by L*D*L^T, which only allows matrix vector mult.
  • in case of hermitian matrices, LDL^H is computed
  • for return value see "hlib_matrix_lu"

◆ matrix_ldl_inv()

hlib_ linearoperator_t hlib_ matrix_ldl_inv ( hlib_ matrix_t  A,
const hlib_ acc_t  acc,
int *  info 
)

LDL factorisation of matrix A up to block-wise precision acc

  • A will be overwritten by L*D*L^T, which only allows matrix vector mult.
  • in case of hermitian matrices, LDL^H is computed
  • for return value see "hlib_matrix_lu_inv"

◆ matrix_ll()

hlib_ linearoperator_t hlib_ matrix_ll ( hlib_ matrix_t  A,
const hlib_ acc_t  acc,
int *  info 
)

Cholesky factorisation of matrix A up to block-wise precision acc

  • A will be overwritten by L*L^T, which only allows matrix vector mult.
  • in case of hermitian matrices, L*L^H is computed
  • for return value see "hlib_matrix_lu"

◆ matrix_ll_inv()

hlib_ linearoperator_t hlib_ matrix_ll_inv ( hlib_ matrix_t  A,
const hlib_ acc_t  acc,
int *  info 
)

Cholesky factorisation of matrix A up to block-wise precision acc

  • A will be overwritten by L*L^T, which only allows matrix vector mult.
  • in case of hermitian matrices, L*L^H is computed
  • for return value see "hlib_matrix_lu_inv"

◆ matrix_lu()

hlib_ linearoperator_t hlib_ matrix_lu ( hlib_ matrix_t  A,
const hlib_ acc_t  acc,
int *  info 
)

LU factorise matrix A up to block-wise precision acc

  • A will be overwritten by L*U, which only allows matrix vector mult.
  • the return value is a matrix which can be used to evaluate LU, e.g. for matrix-vector multiplication (this is not possible with A after factorisation as it holds just the data, albeit, it is still needed)

◆ matrix_lu_inv()

hlib_ linearoperator_t hlib_ matrix_lu_inv ( hlib_ matrix_t  A,
const hlib_ acc_t  acc,
int *  info 
)

LU factorise matrix A up to block-wise precision acc

  • A will be overwritten by L*U, which only allows matrix vector mult.
  • the return value is a matrix which can be used to evaluate (LU)^-1, e.g. for matrix-vector multiplication (this is not possible with A after factorisation as it holds just the data, albeit, it is still needed)

◆ matrix_mul()

void hlib_ matrix_mul ( const hlib_ real_t  alpha,
const hlib_ matop_t  matop_A,
const hlib_ matrix_t  A,
const hlib_ matop_t  matop_B,
const hlib_ matrix_t  B,
const hlib_ real_t  beta,
hlib_ matrix_t  C,
const hlib_ acc_t  acc,
int *  info 
)

compute C := alpha op(A) op(B) + beta C with block-wise precision acc

◆ matrix_mulvec()

void hlib_ matrix_mulvec ( const hlib_ real_t  alpha,
const hlib_ matrix_t  A,
const hlib_ vector_t  x,
const hlib_ real_t  beta,
hlib_ vector_t  y,
const hlib_ matop_t  matop,
int *  info 
)

compute y := alpha op(A) x + beta y, where op(A) is either A or A^T

Parameters
xsource vector of dimension columns(op(A))
ydest. vector of dimension rows(op(A))
matopmatrix operation, e.g. transpose

◆ matrix_nearfield_to_ccrs()

void hlib_ matrix_nearfield_to_ccrs ( const hlib_ matrix_t  A,
size_t *  nnz,
int **  rowptr,
int **  colind,
hlib_ complex_t **  coeffs,
int *  info 
)

returns nearfield part of given matrix in CRS format

  • complex valued version
Parameters
nnznumber of non-zero coeff.
rowptrarray of row pointers
colindarray of column indices
coeffsarray of matrix coefficients

◆ matrix_nearfield_to_crs()

void hlib_ matrix_nearfield_to_crs ( const hlib_ matrix_t  A,
size_t *  nnz,
int **  rowptr,
int **  colind,
hlib_ real_t **  coeffs,
int *  info 
)

returns nearfield part of given matrix in CRS format

  • CRS is stored in nnz, rowptr, colind and coeffs
Parameters
nnznumber of non-zero coeff.
rowptrarray of row pointers
colindarray of column indices
coeffsarray of matrix coefficients

◆ matrix_norm_frobenius()

hlib_ real_t hlib_ matrix_norm_frobenius ( const hlib_ matrix_t  A,
int *  info 
)

compute Frobenius norm of matrix

◆ matrix_norm_frobenius_diff()

hlib_ real_t hlib_ matrix_norm_frobenius_diff ( const hlib_ matrix_t  A,
const hlib_ matrix_t  B,
int *  info 
)

compute Frobenius norm of A-B

◆ matrix_norm_inv_approx()

hlib_ real_t hlib_ matrix_norm_inv_approx ( const hlib_ matrix_t  A,
const hlib_ matrix_t  B,
int *  info 
)

compute inversion error |I-BA|_2, where B is supposed to be A^-1

◆ matrix_norm_spectral()

hlib_ real_t hlib_ matrix_norm_spectral ( const hlib_ matrix_t  A,
int *  info 
)

compute spectral norm of matrix

◆ matrix_norm_spectral_diff()

hlib_ real_t hlib_ matrix_norm_spectral_diff ( const hlib_ matrix_t  A,
const hlib_ matrix_t  B,
int *  info 
)

compute relative spectral norm of A-B, e.g. |A-B|_2/|A|_2

◆ matrix_norm_spectral_inv()

hlib_ real_t hlib_ matrix_norm_spectral_inv ( const hlib_ matrix_t  A,
int *  info 
)

compute spectral norm of inverse matrix

◆ matrix_permute()

void hlib_ matrix_permute ( hlib_ matrix_t  A,
const hlib_ permutation_t  row_perm,
const hlib_ permutation_t  col_perm,
int *  info 
)

reorder matrix A entries with given row and column permutations

  • only supported for dense matrices
  • NULL permutation will be handled as identity

◆ matrix_print_ps()

void hlib_ matrix_print_ps ( const hlib_ matrix_t  A,
const char *  filename,
const int  options,
int *  info 
)

print matrix A in postscript format to file filename options (may be ORed) :

  • HLIB_MATIO_SVD : print singular value decomposition in each block
  • HLIB_MATIO_ENTRY : print each entry of matrix
  • HLIB_MATIO_PATTERN : print sparsity pattern (non-zero entries)
Parameters
optionsoptions defining output

◆ matrix_product2()

hlib_ linearoperator_t hlib_ matrix_product2 ( const hlib_ matop_t  matop1,
const hlib_ linearoperator_t  A1,
const hlib_ matop_t  matop2,
const hlib_ linearoperator_t  A2,
int *  info 
)

represents product of matrices \(A_1 \cdot A_2\)

  • all matrix objects are only referenced, not copied

◆ matrix_product3()

hlib_ linearoperator_t hlib_ matrix_product3 ( const hlib_ matop_t  matop1,
const hlib_ linearoperator_t  A1,
const hlib_ matop_t  matop2,
const hlib_ linearoperator_t  A2,
const hlib_ matop_t  matop3,
const hlib_ linearoperator_t  A3,
int *  info 
)

represents product of matrices \(A_1 \cdot A_2 \cdot A3\)

  • all matrix objects are only referenced, not copied

◆ matrix_restrict_nearfield()

void hlib_ matrix_restrict_nearfield ( hlib_ matrix_t  A,
const int  delete_farfield,
int *  info 
)

restrict given matrix to nearfield part

  • if delete_farfield is non-zero, farfield matrices (e.g., low-rank) will be removed, otherwise set to rank 0

◆ matrix_row_perm_e2i()

hlib_ permutation_t hlib_ matrix_row_perm_e2i ( const hlib_ matrix_t  A,
int *  info 
)

return mapping from external (user) to internal (in H-matrix) ordering for rows and columns.

  • returned object is reference to internal permutation: do NOT free
  • if matrix has no permutation, the return value is NULL

◆ matrix_row_perm_i2e()

hlib_ permutation_t hlib_ matrix_row_perm_i2e ( const hlib_ matrix_t  A,
int *  info 
)

return mapping from internal (in H-matrix) to external (user) ordering for rows and columns.

  • returned object is reference to internal permutation: do NOT free
  • if matrix has no permutation, the return value is NULL

◆ matrix_row_vector()

hlib_ vector_t hlib_ matrix_row_vector ( const hlib_ matrix_t  A,
int *  info 
)

create vectors matching the row indexsets of matrix A

◆ matrix_rows()

size_t hlib_ matrix_rows ( const hlib_ matrix_t  A,
int *  info 
)

return number of rows of matrix

◆ matrix_scale()

void hlib_ matrix_scale ( const hlib_ real_t  f,
const hlib_ matrix_t  A,
int *  info 
)

scale matrix A by factor f

◆ matrix_solve_diag_left()

void hlib_ matrix_solve_diag_left ( const hlib_ matrix_t  D,
const hlib_ matop_t  op_D,
hlib_ matrix_t  A,
const hlib_ acc_t  acc,
const int  pointwise,
int *  info 
)

solve op(D) B = A with diagonal D and known A

  • B will overwrite A
  • if pointwise is true, evaluation is performed pointwise, otherwise blockwise, e.g. diagonal leaf matrices are considered full and not diagonal

◆ matrix_solve_diag_right()

void hlib_ matrix_solve_diag_right ( hlib_ matrix_t  A,
const hlib_ matrix_t  D,
const hlib_ matop_t  op_D,
const hlib_ acc_t  acc,
const int  pointwise,
int *  info 
)

solve B op(D) = A with diagonal D and known A

  • B will overwrite A
  • if pointwise is true, evaluation is performed pointwise, otherwise blockwise, e.g. diagonal leaf matrices are considered full and not diagonal

◆ matrix_solve_lower_left()

void hlib_ matrix_solve_lower_left ( const hlib_ matrix_t  L,
const hlib_ matop_t  op_L,
hlib_ matrix_t  A,
const hlib_ acc_t  acc,
const int  pointwise,
const int  unit_diag,
int *  info 
)

solve L B = A with lower triangular L and known A

  • B will overwrite A
  • if pointwise is true, evaluation is performed pointwise, otherwise blockwise, e.g. diagonal leaf matrices are considered full and not triangular
  • if unit_diag is true, the pointwise/blockwise diagonal is considered to be the identity

◆ matrix_solve_lower_right()

void hlib_ matrix_solve_lower_right ( hlib_ matrix_t  A,
const hlib_ matrix_t  L,
const hlib_ matop_t  op_L,
const hlib_ acc_t  acc,
const int  pointwise,
const int  unit_diag,
int *  info 
)

solve B op(L) = A with lower triangular L and known A

  • B will overwrite A
  • if pointwise is true, evaluation is performed pointwise, otherwise blockwise, e.g. diagonal leaf matrices are considered full and not triangular
  • if unit_diag is true, the pointwise/blockwise diagonal is considered to be the identity

◆ matrix_solve_upper_right()

void hlib_ matrix_solve_upper_right ( hlib_ matrix_t  A,
const hlib_ matrix_t  U,
const hlib_ acc_t  acc,
const int  pointwise,
const int  unit_diag,
int *  info 
)

solve B U = A with upper triangular U and known A

  • B will overwrite A
  • if pointwise is true, evaluation is performed pointwise, otherwise blockwise, e.g. diagonal leaf matrices are considered full and not triangular
  • if unit_diag is true, the pointwise/blockwise diagonal is considered to be the identity

◆ matrix_sum2()

hlib_ linearoperator_t hlib_ matrix_sum2 ( const hlib_ real_t  alpha1,
const hlib_ matop_t  matop1,
const hlib_ linearoperator_t  A1,
const hlib_ real_t  alpha2,
const hlib_ matop_t  matop2,
const hlib_ linearoperator_t  A2,
int *  info 
)

represents product of matrices \(A_1 + A_2\)

  • all matrix objects are only referenced, not copied

◆ matrix_sum3()

hlib_ linearoperator_t hlib_ matrix_sum3 ( const hlib_ real_t  alpha1,
const hlib_ matop_t  matop1,
const hlib_ linearoperator_t  A1,
const hlib_ real_t  alpha2,
const hlib_ matop_t  matop2,
const hlib_ linearoperator_t  A2,
const hlib_ real_t  alpha3,
const hlib_ matop_t  matop3,
const hlib_ linearoperator_t  A3,
int *  info 
)

represents product of matrices \(A_1 + A_2 + A3\)

  • all matrix objects are only referenced, not copied

◆ matrix_to_complex()

void hlib_ matrix_to_complex ( const hlib_ matrix_t  A,
const int  force,
int *  info 
)

switch matrix to complex value; if force is 1, the conversion is performed independent of the current state (applies to block matrices)

◆ matrix_to_dense()

hlib_ matrix_t hlib_ matrix_to_dense ( const hlib_ matrix_t  A,
int *  info 
)

convert matrix to dense format

◆ matrix_to_rank()

hlib_ matrix_t hlib_ matrix_to_rank ( const hlib_ matrix_t  A,
const hlib_ acc_t  acc,
int *  info 
)

convert matrix to lowrank format using best approximation (SVD) with truncation defined by acc

◆ matrix_to_real()

void hlib_ matrix_to_real ( const hlib_ matrix_t  A,
const int  force,
int *  info 
)

switch matrix to real value (if possible); if force is 1, the conversion is performed independent of the current state (applies to block matrices)

◆ matrix_transpose()

void hlib_ matrix_transpose ( const hlib_ matrix_t  A,
int *  info 
)

transpose matrix A

◆ matrix_waz()

hlib_ linearoperator_t hlib_ matrix_waz ( hlib_ matrix_t  A,
const hlib_ acc_t  acc,
int *  info 
)

Factorise matrix A into \(WAZ=I\), e.g., factorization of inverse of A

  • A will be overwritten by \(W^{-1} Z^{-1}\).
  • the return value is a linear operator which can be used to evaluate \(A^{-1}\), e.g. for matrix-vector multiplication (this is not possible with A after factorisation as it holds just the data, albeit, it is still needed)

◆ minor_version()

unsigned int hlib_ minor_version ( )

return minor version number of 𝖧𝖫𝖨𝖡𝗉𝗋𝗈

◆ mm_load_matrix()

hlib_ matrix_t hlib_ mm_load_matrix ( const char *  filename,
int *  info 
)

read matrix from file filename

◆ perm_linearoperator()

hlib_ linearoperator_t hlib_ perm_linearoperator ( const hlib_ permutation_t  P,
const hlib_ linearoperator_t  A,
const hlib_ permutation_t  R,
int *  info 
)

represents permuted operator \(P \cdot A \cdot R\)

◆ perm_matrix()

hlib_ linearoperator_t hlib_ perm_matrix ( const hlib_ permutation_t  P,
const hlib_ matrix_t  A,
const hlib_ permutation_t  R,
int *  info 
)

represents permuted matrix \(P \cdot A \cdot R\)

  • all objects (P, A and R) are only referenced, not copied

◆ pltmg_load_matrix()

hlib_ matrix_t hlib_ pltmg_load_matrix ( const char *  filename,
int *  info 
)

read matrix from file filename

◆ print_parameters()

void hlib_ print_parameters ( )

print all internal parameters of HLIBpro with their current value

◆ samg_load_coord()

hlib_ coord_t hlib_ samg_load_coord ( const char *  filename,
int *  info 
)

read coordinates from file filename

◆ samg_load_matrix()

hlib_ matrix_t hlib_ samg_load_matrix ( const char *  filename,
int *  info 
)

read matrix A from file "\a filename" in SAMG format

  • expecting format definition in basename(filename)>.frm

◆ samg_load_vector()

hlib_ vector_t hlib_ samg_load_vector ( const char *  filename,
int *  info 
)

read vector from file filename in SAMG format

  • expecting format definition in basename(filename)>.frm

◆ samg_save_coord()

void hlib_ samg_save_coord ( const hlib_ coord_t  coord,
const char *  filename,
int *  info 
)

write coordinates coord to file filename

◆ samg_save_matrix()

void hlib_ samg_save_matrix ( const hlib_ matrix_t  A,
const char *  filename,
int *  info 
)

save matrix A to file "\a filename" in SAMG format

  • also writing format definition to basename(filename)>.frm

◆ samg_save_vector()

void hlib_ samg_save_vector ( const hlib_ vector_t  x,
const char *  filename,
int *  info 
)

save vector to file filename in SAMG format

◆ set_abs_eps()

void hlib_ set_abs_eps ( const hlib_ real_t  eps)

define minimal boundary for singular values, e.g. not smaller

◆ set_coarsening()

void hlib_ set_coarsening ( const int  build,
const int  arith 
)

enable (1) or disable (0) coarsening during H-matrix building and arithmetic (default: build=1, arith=0)

◆ set_config()

void hlib_ set_config ( const char *  option,
const char *  value,
int *  info 
)

general function to change configuration variables: set option to value

◆ set_diag_scale()

void hlib_ set_diag_scale ( const int  scale)

enable (1) or disable (0) diagonal scaling during LU, etc. (default: off)

◆ set_error_fn()

void hlib_ set_error_fn ( const hlib_ errorfn_t  errorfn)

set call back function in case of an error

◆ set_n_min()

void hlib_ set_n_min ( const unsigned int  n)

set maximal leaf size in cluster trees to n

◆ set_nthreads()

void hlib_ set_nthreads ( const unsigned int  p)

set maximal number of threads to use in H arithmetic

◆ set_progress_cb()

void hlib_ set_progress_cb ( hlib_ progressfn_t  fn,
void *  arg 
)

set callback function for progress information
if fn == NULL, HLIBpro uses default progress output

◆ set_recompress()

void hlib_ set_recompress ( const int  recompress)

enable (1) or disable (0) recompression during H-matrix building (default: on)

◆ set_verbosity()

void hlib_ set_verbosity ( const unsigned int  verb)

define verbosity of HLib

◆ set_warning_fn()

void hlib_ set_warning_fn ( const hlib_ errorfn_t  warnfn)

set call back function in case of a warning

◆ solver_auto()

hlib_ solver_t hlib_ solver_auto ( int *  info)

create automatic solver

◆ solver_bicgstab()

hlib_ solver_t hlib_ solver_bicgstab ( int *  info)

create BiCG-Stab solver

◆ solver_cg()

hlib_ solver_t hlib_ solver_cg ( int *  info)

create CG solver

◆ solver_cgs()

hlib_ solver_t hlib_ solver_cgs ( int *  info)

create CGS solver

◆ solver_free()

void hlib_ solver_free ( hlib_ solver_t  solver,
int *  info 
)

free solver

◆ solver_gmres()

hlib_ solver_t hlib_ solver_gmres ( const int  restart,
int *  info 
)

create GMRES solver with restart after restart steps

◆ solver_initialise_start_value()

void hlib_ solver_initialise_start_value ( hlib_ solver_t  solver,
const int  flag,
int *  info 
)

turn initialisation of start value during iteration on (flag != 0) or off (flag != 0)

◆ solver_linear_iteration()

hlib_ solver_t hlib_ solver_linear_iteration ( int *  info)

create linear iteration

◆ solver_minres()

hlib_ solver_t hlib_ solver_minres ( int *  info)

create MINRES solver

◆ solver_richardson()

hlib_ solver_t hlib_ solver_richardson ( int *  info)

create Richardson solver

◆ solver_solve()

void hlib_ solver_solve ( const hlib_ solver_t  solver,
const hlib_ linearoperator_t  A,
hlib_ vector_t  x,
const hlib_ vector_t  b,
const hlib_ linearoperator_t  W,
hlib_ solve_info_t *  solve_info,
int *  info 
)

solve A x = b using solver with optional preconditioning, e.g. W A x = W b if W != NULL; information about the solving process is stored in solve_info

◆ solver_stopcrit()

void hlib_ solver_stopcrit ( hlib_ solver_t  solver,
const int  maxit,
const hlib_ real_t  abs_red,
const hlib_ real_t  rel_red,
int *  info 
)

set stopping criterion for solver

  • maxit : maximal number of iterations
  • abs_red : iterate until ||residual||_2 reaches abs_red
  • rel_red : iterate until ||residual||_2 reaches rel_red * ||start-res.||_2
  • in case of a preconditioner r = W(Ax - b), e.g. the preconditioned res.

◆ solver_tfqmr()

hlib_ solver_t hlib_ solver_tfqmr ( int *  info)

create TFQMR solver

◆ solver_use_exact_residual()

void hlib_ solver_use_exact_residual ( hlib_ solver_t  solver,
const int  flag,
int *  info 
)

turn computation of exact residual during iteration on (flag != 0) or off (flag != 0)

◆ use_double_prec()

void hlib_ use_double_prec ( )

use double precision functions

◆ use_single_prec()

void hlib_ use_single_prec ( )

use single precision functions

◆ vector_assign()

void hlib_ vector_assign ( hlib_ vector_t  y,
const hlib_ vector_t  x,
int *  info 
)

copy content of vector x to vector y x and y have to be of equal type

◆ vector_axpy()

void hlib_ vector_axpy ( const hlib_ real_t  alpha,
const hlib_ vector_t  x,
hlib_ vector_t  y,
int *  info 
)

compute y := y + a x

◆ vector_build()

hlib_ vector_t hlib_ vector_build ( const size_t  size,
int *  info 
)

create scalar vectors of size size initialised with 0

◆ vector_bytesize()

size_t hlib_ vector_bytesize ( const hlib_ vector_t  v,
int *  info 
)

return size of matrix in bytes

◆ vector_caxpy()

void hlib_ vector_caxpy ( const hlib_ complex_t  alpha,
const hlib_ vector_t  x,
hlib_ vector_t  y,
int *  info 
)

compute y := y + a x

◆ vector_cbuild()

hlib_ vector_t hlib_ vector_cbuild ( const size_t  size,
int *  info 
)

create scalar vectors of size size initialised with 0

◆ vector_centry_get()

hlib_ complex_t hlib_ vector_centry_get ( const hlib_ vector_t  x,
const size_t  i,
int *  info 
)

get single entry at position i in vector x

◆ vector_centry_set()

void hlib_ vector_centry_set ( const hlib_ vector_t  x,
const size_t  i,
const hlib_ complex_t  f,
int *  info 
)

set single entry at position i in vector x

◆ vector_cexport()

void hlib_ vector_cexport ( const hlib_ vector_t  v,
hlib_ complex_t *  arr,
int *  info 
)

copy data from vector v into given C arrays

  • arr has to be of size hlib_vector_size( v )

◆ vector_cfill()

void hlib_ vector_cfill ( hlib_ vector_t  x,
const hlib_ complex_t  f,
int *  info 
)

fill vector x with constant value f

◆ vector_cimport()

void hlib_ vector_cimport ( hlib_ vector_t  v,
const hlib_ complex_t *  arr,
int *  info 
)

copy data from C array arr into vector v

  • arr has to be of size hlib_vector_size( v )

◆ vector_copy()

hlib_ vector_t hlib_ vector_copy ( const hlib_ vector_t  v,
int *  info 
)

copy vectormatrix

◆ vector_cscale()

void hlib_ vector_cscale ( hlib_ vector_t  x,
const hlib_ complex_t  f,
int *  info 
)

scale vector x by f

◆ vector_dot()

hlib_ complex_t hlib_ vector_dot ( const hlib_ vector_t  x,
const hlib_ vector_t  y,
int *  info 
)

compute dot product <x,y> = x^H * y

◆ vector_entry_get()

hlib_ real_t hlib_ vector_entry_get ( const hlib_ vector_t  x,
const size_t  i,
int *  info 
)

get single entry at position i in vector x

◆ vector_entry_set()

void hlib_ vector_entry_set ( const hlib_ vector_t  x,
const size_t  i,
const hlib_ real_t  f,
int *  info 
)

set single entry at position i in vector x

◆ vector_export()

void hlib_ vector_export ( const hlib_ vector_t  v,
hlib_ real_t *  arr,
int *  info 
)

copy data from vector v into given C arrays

  • arr has to be of size hlib_vector_size( v )

◆ vector_fft()

void hlib_ vector_fft ( const hlib_ vector_t  v,
int *  info 
)

compute FFT of vector v inplace

◆ vector_fill()

void hlib_ vector_fill ( hlib_ vector_t  x,
const hlib_ real_t  f,
int *  info 
)

fill vector x with constant value f

◆ vector_fill_rand()

void hlib_ vector_fill_rand ( hlib_ vector_t  x,
int *  info 
)

fill vector x with random values

◆ vector_free()

void hlib_ vector_free ( hlib_ vector_t  v,
int *  info 
)

free resources coupled with vector v

◆ vector_ifft()

void hlib_ vector_ifft ( const hlib_ vector_t  v,
int *  info 
)

compute inverse FFT of vector v inplace

◆ vector_import()

void hlib_ vector_import ( hlib_ vector_t  v,
const hlib_ real_t *  arr,
int *  info 
)

copy data from C array arr into vector v

  • arr has to be of size hlib_vector_size( v )

◆ vector_norm2()

hlib_ real_t hlib_ vector_norm2 ( const hlib_ vector_t  x,
int *  info 
)

compute euklidean norm of x

◆ vector_norm_inf()

hlib_ real_t hlib_ vector_norm_inf ( const hlib_ vector_t  x,
int *  info 
)

compute infinity norm of x

◆ vector_permute()

void hlib_ vector_permute ( hlib_ vector_t  v,
const hlib_ permutation_t  perm,
int *  info 
)

reorder vector entries with given permutation

◆ vector_restrict_im()

hlib_ vector_t hlib_ vector_restrict_im ( const hlib_ vector_t  v,
int *  info 
)

return vector containing only imaginary parts * of the entries of the given vector

◆ vector_restrict_re()

hlib_ vector_t hlib_ vector_restrict_re ( const hlib_ vector_t  v,
int *  info 
)

return vector containing only real parts * of the entries of the given vector

◆ vector_scale()

void hlib_ vector_scale ( hlib_ vector_t  x,
const hlib_ real_t  f,
int *  info 
)

scale vector x by f

◆ vector_size()

size_t hlib_ vector_size ( const hlib_ vector_t  v,
int *  info 
)

return size of vectors

◆ walltime()

double hlib_ walltime ( )

return current walltime in seconds