418 void *data),
void *data);
465 bool ranks,
uint levels);
void addeval_dh2matrix_avector(field alpha, pcdh2matrix h2, pcavector x, pavector y)
Matrix-vector multiplication .
void resize_coupling_dh2matrix(pdh2matrix A, pdclusteroperator ro, pdclusteroperator co)
Computes new coupling matrices after the directional cluster basis has been orthogonalized.
pamatrix f
Standard matrix (if nearfield leaf)
Definition: dh2matrix.h:59
pcdcluster t
Corresponding directional cluster.
Definition: dclusterbasis.h:48
void addevaltrans_dh2matrix_avector(field alpha, pcdh2matrix h2, pcavector x, pavector y)
Adjoint matrix-vector multiplication .
void fastaddevaltrans_dh2matrix_avector(field alpha, pcdh2matrix h2, pcavector xt, pavector yt)
Fast adjoint matrix-vector multiplication.
void slowaddeval_dh2matrix_avector(field alpha, pcdh2matrix h2, pcavector x, pavector y)
Matrix-vector multiplication , slow version for debugging, all submatrices are handled independently...
pduniform u
Uniform matrix (if farfield leaf)
Definition: dh2matrix.h:57
pdclusterbasis rb
Row cluster basis.
Definition: dh2matrix.h:52
void addeval_parallel_dh2matrix_avector(field alpha, pcdh2matrix h2, pcavector x, pavector y)
Matrix-vector multiplication , parallelized version.
unsigned uint
Unsigned integer type.
Definition: settings.h:70
pdh2matrix clone_dh2matrix(pcdh2matrix dh2, pdclusterbasis rb, pdclusterbasis cb)
Builds a new dh2matrix with the same structure as dh2 and dclusterbasis rb as directional row cluster...
pdh2matrix compress_dh2matrix_dh2matrix(pcdh2matrix G, bool rbortho, bool cbortho, pctruncmode tm, real eps)
Computes a -matrix approximation of a -matrix.
double _Complex field
Field type.
Definition: settings.h:171
size_t getfarsize_dh2matrix(pcdh2matrix h2)
Compute the storage size of the admissible leaves of a dh2matrix.
void mvm_dh2matrix_avector(field alpha, bool h2trans, pcdh2matrix h2, pcavector x, pavector y)
Matrix-vector multiplication or .
pdh2matrix new_uniform_dh2matrix(pdclusterbasis rb, uint rd, pdclusterbasis cb, uint cd)
Create a new dh2matrix object representing an admissible leaf.
uint desc
Number of descendants.
Definition: dh2matrix.h:69
Tree structure representing a -matrix.
Definition: dh2matrix.h:50
void draw_cairo_dh2matrix(cairo_t *cr, pcdh2matrix G, bool storage, bool ranks, uint levels)
Draw a dh2matrix tree to a cairo surface.
#define INLINE_PREFIX
Prefix for inline functions.
Definition: settings.h:36
uint size
Number of indices.
Definition: dcluster.h:43
uint rsons
Block rows.
Definition: dh2matrix.h:64
Representation of a directional cluster operator.
Definition: dclusteroperator.h:33
void truncate_dclusterbasis(pdclusterbasis cold, pdclusterbasis cnew, pdclusteroperator co, pdclusteroperator bco, pctruncmode tm, real eps)
Computes truncated directional cluster basis and save basis change matrices.
void update_dh2matrix(pdh2matrix h2)
Update internal data structures after the sons have been modified, e.g., to recompute desc...
void expand_dh2matrix(field alpha, pcdh2matrix h2, pamatrix G)
Add a -matrix to a standard matrix, .
void iterate_dh2matrix(pdh2matrix G, uint mname, uint rname, uint cname, uint pardepth, void(*pre)(pdh2matrix G, uint mname, uint rname, uint cname, uint pardepth, void *data), void(*post)(pdh2matrix G, uint mname, uint rname, uint cname, uint pardepth, void *data), void *data)
Apply functions to all submatrices of a dh2matrix tree.
Directional block tree.
Definition: dblock.h:45
pdh2matrix new_dh2matrix(pdclusterbasis rb, pdclusterbasis cb)
Create a new empty dh2matrix object.
void slowaddevaltrans_dh2matrix_avector(field alpha, pcdh2matrix h2, pcavector x, pavector y)
Adjoint matrix-vector multiplication , slow version for debugging, all submatrices are handled indepe...
size_t getnearsize_dh2matrix(pcdh2matrix h2)
Compute the storage size of the inadmissible leaves of a dh2matrix.
Define different strategies used by various truncation and compression algorithms for hmatrices and h...
Definition: truncation.h:43
uint csons
Block columns.
Definition: dh2matrix.h:66
void fastaddeval_dh2matrix_avector(field alpha, pcdh2matrix h2, pcavector xt, pavector yt)
Fast matrix-vector multiplication.
uint getcols_dh2matrix(pcdh2matrix h2)
Return the number of columns of a dh2matrix.
Definition: dh2matrix.h:205
dh2matrix * pdh2matrix
Pointer to a dh2matrix.
Definition: dh2matrix.h:21
const dh2matrix * pcdh2matrix
Pointer to a constant dh2matrix.
Definition: dh2matrix.h:24
#define HEADER_PREFIX
Prefix for function declarations.
Definition: settings.h:43
double real
real floating point type.
Definition: settings.h:97
real norm2diff_dh2matrix(pcdh2matrix a, pcdh2matrix b)
Approximate the spectral norm of the difference of two matrices and .
size_t gettotalsize_dh2matrix(pcdh2matrix h2)
Compute the storage size of a dh2matrix, including the cluster bases.
pdh2matrix * enumerate_dh2matrix(pdh2matrix h2)
Enumerate all submatrices of a dh2matrix tree.
size_t getsize_dh2matrix(pcdh2matrix h2)
Compute the storage size of a dh2matrix, without the cluster bases.
void addevaltrans_parallel_dh2matrix_avector(field alpha, pcdh2matrix h2, pcavector x, pavector y)
Adjoint matrix-vector multiplication , parallelized version.
pdclusterbasis cb
Column cluster basis.
Definition: dh2matrix.h:54
pdh2matrix build_projected_dh2matrix(pcdh2matrix dh2, pdclusterbasis rb, pdclusterbasis cb, pdclusteroperator ro, pdclusteroperator co)
Builds a new -matrix approximation of a given -matrix with new cluster bases.
pdh2matrix new_super_dh2matrix(pdclusterbasis rb, pdclusterbasis cb, uint rsons, uint csons)
Create a new dh2matrix object representing a subdivided matrix.
Representation of a matrix as an array in column-major order.
Definition: amatrix.h:43
void copynear_dh2matrix(pcamatrix G, pdh2matrix Gh)
Copy nearfield matrices from a given matrix.
pdh2matrix * son
Son matrices (if subdivided)
Definition: dh2matrix.h:62
pdh2matrix new_full_dh2matrix(pdclusterbasis rb, pdclusterbasis cb)
Create a new dh2matrix object representing an inadmissible leaf.
pdh2matrix buildfromblock_dh2matrix(pcdblock b, pdclusterbasis rb, pdclusterbasis cb)
Construct a dh2matrix based on a dblock tree and cluster bases.
Representation of a directional cluster basis.
Definition: dclusterbasis.h:45
real norm2_dh2matrix(pcdh2matrix DH2)
Approximate the spectral norm of a matrix .
void del_dh2matrix(pdh2matrix h2)
Delete a dh2matrix object.
uint getrows_dh2matrix(pcdh2matrix h2)
Return the number of rows of a dh2matrix.
Definition: dh2matrix.h:195