ParMooN
 All Classes Functions Variables Friends Pages
aca.h
1 #ifndef ACA
2 #define ACA
3 
4 typedef enum {
5  HLIB_ACA_DEFAULT, /* Try to bound relative Euclidean error */
6  HLIB_ACA_ABSOLUTE, /* Try to bound absolute Frobenius error */
7  HLIB_ACA_RELATIVE, /* Try to bound relative Frobenius error */
8  HLIB_ACA_ABSOLUTE2, /* Try to bound absolute Euclidean error */
9  HLIB_ACA_RELATIVE2 /* Try to bound relative Euclidean error */
10 } ACAStrategy;
11 
12 /* Compute an adaptive cross approximation of a matrix with modified pivoting
13  (ACA+ algorithm). The return value will be the rank k <= kmax, the first
14  k colums of A and B will be filled by the rank-k-approximation of the matrix.
15  A: Row matrix, containing at least rows*kmax double variables
16  B: Column matrix, containing at least cols*kmax double variables
17  rows: Number of rows
18  cols: Number of columns
19  row_off: Row offset, rows [row_off ... row_off+rows-1] are considered
20  col_off: Column offset, columns [col_off ... col_off+cols-1] are considered
21  entry: Callback function for computing a matrix entry
22  data: Additional data for callback function "entry"
23  strategy: Truncation strategy
24  kmax: Maximal rank
25  eps: Tolerance for truncation */
26 int
27 newaca_fill_block(double *A, double *B, int rows, int cols,
28  int row_off, int col_off,
29  double (*entry)(int row, int col, void *data), void *data,
30  int kmax, double eps, ACAStrategy strategy);
31 
32 /* Compute an adaptive cross approximation of a matrix. The return value will
33  be the rank k <= kmax, the first k colums of A and B will be filled by
34  the rank-k-approximation of the matrix.
35  A: Row matrix, containing at least rows*kmax double variables
36  B: Column matrix, containing at least cols*kmax double variables
37  rows: Number of rows
38  cols: Number of columns
39  fillrow: Callback function for computing a matrix row
40  fillcol: Callback function for computing a matrix column
41  data: Additional data for callback functions "fillrow" and "fillcol"
42  strategy: Truncation strategy
43  kmax: Maximal rank
44  eps: Tolerance for truncation */
45 int
46 aca_fill_block(double *A, double *B, int rows, int cols,
47  int row_start, int col_start,
48  double (*entry)(int row, int col, void *data),
49  void *data, int kmax, double eps, ACAStrategy strategy);
50 
51 #endif
52