31 #include <cairo/cairo.h> 382 uint pardepth,
void *data);
841 #ifndef H2MATRIX_COMPLETE 842 #define H2MATRIX_COMPLETE ph2matrix G
Matrix.
Definition: h2matrix.h:354
uint desc
Number of descendants in matrix tree.
Definition: h2matrix.h:70
ph2matrix read_cdfpart_h2matrix(int nc_file, const char *prefix, pclusterbasis rb, pclusterbasis cb)
Read h2matrix from part of a NetCDF file.
void mvm_h2matrix_avector(field alpha, bool h2trans, pch2matrix h2, pcavector x, pavector y)
Matrix-vector multiplication or .
void addevaltrans_h2matrix_avector(field alpha, pch2matrix h2, pcavector x, pavector y)
Adjoint matrix-vector multiplication .
h2matrix * ph2matrix
Pointer to h2matrix object.
Definition: h2matrix.h:25
uint rsons
Number of block rows.
Definition: h2matrix.h:63
uint cname
Number of column cluster.
Definition: h2matrix.h:363
uint rname
Number of row cluster.
Definition: h2matrix.h:360
List of h2matrix objects.
Definition: h2matrix.h:352
void fastaddevaltrans_h2matrix_avector(field alpha, pch2matrix h2, pavector xt, pavector yt)
Interaction phase of the adjoint matrix-vector multiplication.
void project_amatrix_h2matrix(ph2matrix h2, pcamatrix a)
Compute the best approximation of a given matrix with respect to an -matrix space.
void unref_h2matrix(ph2matrix h2)
Reduce the reference counter of an h2matrix object.
ph2matrix new_super_h2matrix(pclusterbasis rb, pclusterbasis cb, uint rsons, uint csons)
Create a new hmatrix object representing a subdivided matrix.
void random_h2matrix(ph2matrix h2)
Fill an h2matrix with random coefficients.
void write_cdfpart_h2matrix(pch2matrix G, int nc_file, const char *prefix)
Write h2matrix to part of a NetCDF file.
Representation of -matrices.
Definition: h2matrix.h:48
ph2matrix build_from_block_h2matrix(pcblock b, pclusterbasis rb, pclusterbasis cb)
Build an h2matrix object from a block tree using given cluster bases.
size_t getfarsize_h2matrix(pch2matrix h2)
Get size of the farfield part of a given h2matrix object.
ph2matrix new_full_h2matrix(pclusterbasis rb, pclusterbasis cb)
Create a new h2matrix object representing a standard dense matrix.
void iterate_bycol_h2matrix(ph2matrix G, uint mname, uint rname, uint cname, uint pardepth, h2matrix_callback_t pre, h2matrix_callback_t post, void *data)
Iterate through all submatrices of an h2matrix.
uint getcols_h2matrix(pch2matrix h2)
Get the number of columns of an h2matrix .
Definition: h2matrix.h:866
Representation of -matrices.
Definition: hmatrix.h:49
Representation of a cluster basis.
Definition: clusterbasis.h:40
void write_cdfcomplete_h2matrix(pch2matrix G, const char *name)
Write h2matrix to NetCDF file, including cluster trees and cluster bases.
unsigned uint
Unsigned integer type.
Definition: settings.h:70
void collectdense_h2matrix(pcamatrix a, pcclusterbasis rb, pcclusterbasis cb, pamatrix s)
Compute .
uint getrows_h2matrix(pch2matrix h2)
Get the number of rows of an h2matrix .
Definition: h2matrix.h:856
ph2matrix new_uniform_h2matrix(pclusterbasis rb, pclusterbasis cb)
Create a new h2matrix object representing a uniform matrix.
double _Complex field
Field type.
Definition: settings.h:171
void ref_h2matrix(ph2matrix *ptr, ph2matrix h2)
Set a pointer to an h2matrix object, increase its reference counter, and decrease reference counter o...
uint csons
Number of block columns.
Definition: h2matrix.h:65
pch2matrixlist father
List entry corresponding to father.
Definition: h2matrix.h:366
void addeval_h2matrix_avector(field alpha, pch2matrix h2, pcavector x, pavector y)
Matrix-vector multiplication .
pccluster t
Corresponding cluster.
Definition: clusterbasis.h:42
void fastaddmul_h2matrix_amatrix_amatrix(field alpha, bool atrans, pch2matrix A, pcamatrix Bt, pamatrix Ct)
Interaction phase of the h2matrix - amatrix multiplication.
void(* h2matrix_callback_t)(ph2matrix G, uint mname, uint rname, uint cname, uint pardepth, void *data)
Callback function for h2matrix iterators.
Definition: h2matrix.h:380
void iterate_h2matrix(ph2matrix G, uint mname, uint rname, uint cname, uint pardepth, h2matrix_callback_t pre, h2matrix_callback_t post, void *data)
Iterate through all submatrices of an h2matrix.
void(* h2matrixlist_callback_t)(pccluster t, uint tname, uint pardepth, pch2matrixlist hl, void *data)
Callback function for h2matrixlist iterators.
Definition: h2matrix.h:391
#define INLINE_PREFIX
Prefix for inline functions.
Definition: settings.h:36
const h2matrix * pch2matrix
Pointer to constant h2matrix object.
Definition: h2matrix.h:28
pamatrix f
Standard matrix, for inadmissible leaves.
Definition: h2matrix.h:58
pblock build_from_h2matrix_block(pch2matrix G)
Build an block tree from an h2matrix.
void clear_h2matrix(ph2matrix h2)
Set an h2matrix to zero by clearing all far- and nearfield matrices.
pclusterbasis rb
Row cluster basis.
Definition: h2matrix.h:50
uint mname
Number of the submatrix.
Definition: h2matrix.h:357
void addmul_h2matrix_amatrix_amatrix(field alpha, bool atrans, pch2matrix A, bool btrans, pcamatrix B, pamatrix C)
Matrix multiplication , , or .
void addmul_amatrix_h2matrix_amatrix(field alpha, bool atrans, pcamatrix A, bool btrans, pch2matrix B, pamatrix C)
Matrix multiplication , , or .
void iterate_byrow_h2matrix(ph2matrix G, uint mname, uint rname, uint cname, uint pardepth, h2matrix_callback_t pre, h2matrix_callback_t post, void *data)
Iterate through all submatrices of an h2matrix.
ph2matrix new_zero_h2matrix(pclusterbasis rb, pclusterbasis cb)
Create a new h2matrix object representing a zero matrix.
void project_hmatrix_h2matrix(ph2matrix h2, phmatrix h)
Compute the best approximation of a given matrix with respect to an -matrix space.
size_t getnearsize_h2matrix(pch2matrix h2)
Get size of the nearfield part of a given h2matrix object.
void addevalsymm_h2matrix_avector(field alpha, pch2matrix h2, pcavector x, pavector y)
Symmetric matrix-vector multiplication, , where is assumed to be self-adjoint and only its lower tri...
real norm2diff_h2matrix(pch2matrix a, pch2matrix b)
Approximate the spectral norm of the difference of two matrices and .
#define HEADER_PREFIX
Prefix for function declarations.
Definition: settings.h:43
double real
real floating point type.
Definition: settings.h:97
void fastaddeval_h2matrix_avector(field alpha, pch2matrix h2, pavector xt, pavector yt)
Interaction phase of the matrix-vector multiplication.
ph2matrixlist next
Next item in list.
Definition: h2matrix.h:369
ph2matrix clonestructure_h2matrix(pch2matrix h2, pclusterbasis rb, pclusterbasis cb)
Builds a new h2matrix with clusterbasis rb and cb and the block structure of h2.
uint refs
Number of references to this h2matrix.
Definition: h2matrix.h:68
const h2matrixlist * pch2matrixlist
Pointer to constant h2matrixlist object.
Definition: h2matrix.h:349
void scale_h2matrix(field alpha, ph2matrix h2)
Scale an h2matrix by a factor.
size_t gettotalsize_h2matrix(pch2matrix h2)
Get total size of a given h2matrix object, including cluster bases.
Representation of block trees.
Definition: block.h:48
ph2matrix read_cdf_h2matrix(const char *name, pclusterbasis rb, pclusterbasis cb)
Read h2matrix from NetCDF file.
void iterate_rowlist_h2matrix(ph2matrix G, uint mname, uint rname, uint cname, uint pardepth, h2matrixlist_callback_t pre, h2matrixlist_callback_t post, void *data)
Iterate through all submatrices of an h2matrix, collecting all row blocks in an h2matrixlist object...
void write_cdf_h2matrix(pch2matrix G, const char *name)
Write h2matrix to NetCDF file.
Representation of cluster trees.
Definition: cluster.h:40
void draw_cairo_h2matrix(cairo_t *cr, pch2matrix G, bool storage, uint levels)
Draw a h2matrix to a cairo surface.
ph2matrix new_h2matrix(pclusterbasis rb, pclusterbasis cb)
Create a new h2matrix object.
void del_h2matrix(ph2matrix h2)
Delete an h2matrix object.
size_t getsize_h2matrix(pch2matrix h2)
Get size of a given h2matrix object.
h2matrixlist * ph2matrixlist
Pointer to h2matrixlist object.
Definition: h2matrix.h:346
Representation of a matrix as an array in column-major order.
Definition: amatrix.h:43
ph2matrix read_cdfcomplete_h2matrix(const char *name)
Read h2matrix from NetCDF file, including cluster trees and cluster bases.
real norm2_h2matrix(pch2matrix H2)
Approximate the spectral norm of a matrix .
uint size
Number of indices.
Definition: cluster.h:42
ph2matrix * enumerate_h2matrix(ph2matrix h2)
Enumerate h2matrix according to block tree.
ph2matrix clone_h2matrix(pch2matrix h2, pclusterbasis rb, pclusterbasis cb)
Builds a new h2matrix with clusterbasis rb and cb and the block structure of h2. Copies all coupling ...
pclusterbasis cb
Column cluster basis.
Definition: h2matrix.h:52
void iterate_collist_h2matrix(ph2matrix G, uint mname, uint rname, uint cname, uint pardepth, h2matrixlist_callback_t pre, h2matrixlist_callback_t post, void *data)
Iterate through all submatrices of an h2matrix, collecting all column blocks in an h2matrixlist objec...
ph2matrix * son
Submatrices.
Definition: h2matrix.h:61
puniform u
Uniform matrix, for admissible leaves.
Definition: h2matrix.h:55
void update_h2matrix(ph2matrix h2)
Complete the initialisation of a h2matrix object.