H2Lib  3.0
duniform.h
Go to the documentation of this file.
1 
2 /* ------------------------------------------------------------
3  * This is the file "duniform.h" of the H2Lib package.
4  * All rights reserved, Steffen Boerm 2015
5  * ------------------------------------------------------------ */
6 
10 #ifndef DUNIFORM_H
11 #define DUNIFORM_H
12 
18 typedef struct _duniform duniform;
19 
22 
24 typedef const duniform *pcduniform;
25 
26 #include "settings.h"
27 #include "amatrix.h"
28 #include "dclusterbasis.h"
29 
36 struct _duniform {
41 
46 
49 };
50 
51 /* ------------------------------------------------------------
52  * Constructors and destructors
53  * ------------------------------------------------------------ */
54 
64 
68 HEADER_PREFIX void
70 
71 /* ------------------------------------------------------------
72  * Statistics
73  * ------------------------------------------------------------ */
74 
80 HEADER_PREFIX size_t
82 
83 /* ------------------------------------------------------------
84  * Simple utility functions
85  * ------------------------------------------------------------ */
86 
90 HEADER_PREFIX void
92 
97 HEADER_PREFIX void
99 
100 /* ------------------------------------------------------------
101  * Matrix-vector multiplication
102  * ------------------------------------------------------------ */
103 
116 HEADER_PREFIX void
118  pcavector xt, pavector yt);
119 
132 HEADER_PREFIX void
134  pcavector xt, pavector yt);
135 
145 HEADER_PREFIX void
147  pcavector x, pavector y);
148 
159 HEADER_PREFIX void
161  pcavector x, pavector y);
162 
163 /* ------------------------------------------------------------
164  * Conversion to a full matrix
165  * ------------------------------------------------------------ */
166 
174 HEADER_PREFIX void
176 
177 /* ------------------------------------------------------------
178  * Matrix norm
179  * ------------------------------------------------------------ */
180 
205 
231 
232 
233 /* ----------------------------------------------------------
234  * Projection
235  * ---------------------------------------------------------- */
236 
258 HEADER_PREFIX void
260 
263 #endif
real normfrob_fast_duniform(pcduniform u, pcdclusteroperator ro, pcdclusteroperator co)
Will compute the Frobenius norm of the coupling matrix or of the product of one or two weight matrice...
real norm2_fast_duniform(pcduniform u, pcdclusteroperator ro, pcdclusteroperator co)
Will compute the Euclidean norm of the coupling matrix or of the product of one or two weight matrice...
pdclusterbasis cb
Column cluster basis.
Definition: duniform.h:40
Definition: avector.h:39
void clear_duniform(pduniform u)
Set a duniform matrix to zero.
void del_duniform(pduniform u)
Delete a duniform object.
uint rd
Direction for row cluster.
Definition: duniform.h:43
unsigned uint
Unsigned integer type.
Definition: settings.h:70
pdclusterbasis rb
Row cluster basis.
Definition: duniform.h:38
void add_projected_duniform(pcduniform u, pcdclusteroperator ro, pcdclusteroperator co, pduniform unew)
Addition of two duniform matrices even with different directional cluster basis.
double _Complex field
Field type.
Definition: settings.h:171
size_t getsize_duniform(pcduniform u)
Compute the storage size of a duniform object.
duniform * pduniform
Pointer to duniform objects.
Definition: duniform.h:21
amatrix S
Coupling matrix.
Definition: duniform.h:48
Representation of a directional cluster operator.
Definition: dclusteroperator.h:33
void fastaddevaltrans_duniform_avector(field alpha, pcduniform u, pcavector xt, pavector yt)
Fast adjoint matrix-vector multiplication.
void copy_duniform(pcduniform src, pduniform trg)
Copy a duniform matrix.
void expand_duniform(field alpha, pcduniform u, pamatrix G)
Convert a duniform matrix to a dense matrix.
#define HEADER_PREFIX
Prefix for function declarations.
Definition: settings.h:43
double real
real floating point type.
Definition: settings.h:97
void slowaddevaltrans_duniform_avector(field alpha, pcduniform u, pcavector x, pavector y)
Slow adjoint matrix-vector multiplication .
Uniform matrices with directional cluster bases.
Definition: duniform.h:36
void fastaddeval_duniform_avector(field alpha, pcduniform u, pcavector xt, pavector yt)
Fast matrix-vector multiplication.
Representation of a matrix as an array in column-major order.
Definition: amatrix.h:43
uint cd
Direction for column cluster.
Definition: duniform.h:45
void slowaddeval_duniform_avector(field alpha, pcduniform u, pcavector x, pavector y)
Slow matrix-vector multiplication .
Representation of a directional cluster basis.
Definition: dclusterbasis.h:45
const duniform * pcduniform
Pointer to constant duniform objects.
Definition: duniform.h:24
pduniform new_duniform(pdclusterbasis rb, uint rd, pdclusterbasis cb, uint cd)
Create a new duniform object.