ScaMaC  0.8.2
A Scalable Matrix Collection
scamac_statistics.h
Go to the documentation of this file.
1 
8 #ifndef SCAMAC_STATISTICS_H
9 #define SCAMAC_STATISTICS_H
10 
11 #include "scamac_generator.h"
12 
13 typedef struct {
14  // matrix data
15  ScamacIdx nrow,ncol;
16  // number of rows incorporated into the statistics so far
17  ScamacIdx ncontributed;
18  // valtype
19  int valtype;
20 
21  // pattern statistics
22  ScamacIdx n_nz;
23  ScamacIdx n_nz_left, n_nz_right;
24  ScamacIdx n_nz_row_min, n_nz_row_max;
25  ScamacIdx n_nz_row_max_left, n_nz_row_max_right; // only max - min always = 0
26  ScamacIdx n_zero_row, n_zero_diag;
27  // bandwidth
28  ScamacIdx bw_left,bw_right;
29 
30  // value statistics
31  double v_min_re,v_max_re;
32  double v_min_im,v_max_im;
33  double v_abs;
34  double v_min_re_diag,v_max_re_diag;
35  double v_min_im_diag,v_max_im_diag;
36  double v_abs_diag;
37  // number of diagonally dominant rows
38  ScamacIdx n_diag_dominant;
39  // minimal |diag|-sum |offdiag|. Positive if and only if all rows are diagonally dominant
40  double diag_minus_offdiag;
41 
42  // spectral statistics
43  double gershgorin_min_re, gershgorin_max_re, gershgorin_min_im, gershgorin_max_im;
44 
45 } scamac_matrix_statistics_st;
46 
47 typedef struct {
48  // matrix data
49  ScamacIdx nrow, ncol;
50  // pattern size
51  int px,py;
52  // number of rows incorporated into the pattern so far
53  ScamacIdx ncontributed;
54  // the pattern (array dimension px * py)
55  ScamacIdx * pat;
56 } scamac_matrix_pattern_st;
57 
64 ScamacErrorCode scamac_collect_statistics_and_pattern(const ScamacGenerator * gen, ScamacFlag flag, scamac_matrix_statistics_st * st, scamac_matrix_pattern_st ** pt);
65 
69 ScamacErrorCode scamac_statistics_empty (scamac_matrix_statistics_st * st, ScamacIdx nrow, ScamacIdx ncol, int valtype);
73 ScamacErrorCode scamac_statistics_update (scamac_matrix_statistics_st * st, ScamacIdx irow, ScamacIdx nzr, const ScamacIdx * cind, const double * val);
77 ScamacErrorCode scamac_statistics_combine(scamac_matrix_statistics_st * stcomb, const scamac_matrix_statistics_st * st);
81 ScamacErrorCode scamac_statistics_print (const scamac_matrix_statistics_st * st, char ** desc);
82 
83 
87 ScamacErrorCode scamac_pattern_alloc (int px, int py, scamac_matrix_pattern_st ** pt);
91 ScamacErrorCode scamac_pattern_empty (scamac_matrix_pattern_st * pt, ScamacIdx nrow, ScamacIdx ncol, int valtype);
95 ScamacErrorCode scamac_pattern_update (scamac_matrix_pattern_st * pt, ScamacIdx irow, ScamacIdx nzr, const ScamacIdx * cind);
99 ScamacErrorCode scamac_pattern_combine(scamac_matrix_pattern_st * ptcomb, const scamac_matrix_pattern_st * pt);
104 ScamacErrorCode scamac_pattern_print (const scamac_matrix_pattern_st * pt, char ** desc);
108 ScamacErrorCode scamac_pattern_free (scamac_matrix_pattern_st * pt);
109 
110 #endif /* SCAMAC_STATISTICS_H */
ScamacErrorCode scamac_pattern_combine(scamac_matrix_pattern_st *ptcomb, const scamac_matrix_pattern_st *pt)
combine two parts of a sparsity pattern for different sets of rows
ScamacErrorCode scamac_statistics_print(const scamac_matrix_statistics_st *st, char **desc)
create description of statistics for output, printing etc.
ScamacErrorCode scamac_pattern_alloc(int px, int py, scamac_matrix_pattern_st **pt)
allocate memory for pattern
generic ScaMaC generator routines
ScamacErrorCode scamac_collect_statistics_and_pattern(const ScamacGenerator *gen, ScamacFlag flag, scamac_matrix_statistics_st *st, scamac_matrix_pattern_st **pt)
collect matrix statistics and/or pattern from generator
ScamacErrorCode scamac_statistics_combine(scamac_matrix_statistics_st *stcomb, const scamac_matrix_statistics_st *st)
combine two parts of a matrix statistics for different sets of rows
ScamacErrorCode scamac_pattern_free(scamac_matrix_pattern_st *pt)
free memory allocated for pattern
ScamacErrorCode scamac_pattern_empty(scamac_matrix_pattern_st *pt, ScamacIdx nrow, ScamacIdx ncol, int valtype)
set pattern to "empty", i.e., initialize
ScamacErrorCode scamac_pattern_print(const scamac_matrix_pattern_st *pt, char **desc)
create ASCII pattern for output, printing etc.
ScamacErrorCode scamac_pattern_update(scamac_matrix_pattern_st *pt, ScamacIdx irow, ScamacIdx nzr, const ScamacIdx *cind)
update pattern with data from a matrix row not yet included
struct scamac_generator_st ScamacGenerator
Abstract generator object.
Definition: scamac_generator.h:24
ScamacErrorCode scamac_statistics_update(scamac_matrix_statistics_st *st, ScamacIdx irow, ScamacIdx nzr, const ScamacIdx *cind, const double *val)
update statistics with data from a matrix row not yet included
ScamacErrorCode scamac_statistics_empty(scamac_matrix_statistics_st *st, ScamacIdx nrow, ScamacIdx ncol, int valtype)
set statistics to "empty", i.e., initialize