32 #ifndef _math_scmat_repl_h 33 #define _math_scmat_repl_h 35 #include <util/group/message.h> 37 #include <math/scmat/block.h> 38 #include <math/scmat/matrix.h> 39 #include <math/scmat/abstract.h> 67 double *data,
int ndata);
78 void init_blocklist();
84 void assign_val(
double);
86 void assign_p(
const double*);
88 void set_element(
int,
double);
89 void accumulate_element(
int,
double);
90 double get_element(
int)
const;
101 void vprint(
const char* title=0,
105 double *get_data() {
return vector; }
123 int compute_offset(
int,
int)
const;
124 void init_blocklist();
126 void before_elemop();
134 void assign_val(
double);
135 double get_element(
int,
int)
const;
136 void set_element(
int,
int,
double);
137 void accumulate_element(
int,
int,
double);
138 SCMatrix * get_subblock(
int,
int,
int,
int);
139 void assign_subblock(
SCMatrix*,
int,
int,
int,
int,
int=0,
int=0);
140 void accumulate_subblock(
SCMatrix*,
int,
int,
int,
int,
int=0,
int=0);
143 void assign_row(
SCVector *v,
int i);
144 void assign_column(
SCVector *v,
int i);
145 void accumulate_row(
SCVector *v,
int i);
146 void accumulate_column(
SCVector *v,
int i);
156 void transpose_this();
157 double invert_this();
160 double determ_this();
163 int schmidt_orthog_tol(
SymmSCMatrix*,
double tol,
double *res=0);
169 void vprint(
const char* title=0,
173 double *get_data() {
return matrix; }
174 double **get_rows() {
return rows; }
192 int compute_offset(
int,
int)
const;
193 void init_blocklist();
195 void before_elemop();
202 void assign_val(
double);
204 void assign_p(
const double*);
205 void assign_pp(
const double**);
206 double get_element(
int,
int)
const;
207 void set_element(
int,
int,
double);
208 void accumulate_element(
int,
int,
double);
211 SCMatrix * get_subblock(
int,
int,
int,
int);
213 void assign_subblock(
SCMatrix*,
int,
int,
int,
int);
215 void accumulate_subblock(
SCMatrix*,
int,
int,
int,
int);
218 void assign_row(
SCVector *v,
int i);
219 void accumulate_row(
SCVector *v,
int i);
223 double invert_this();
226 double determ_this();
227 void gen_invert_this();
231 void accumulate_symmetric_outer_product(
SCVector*);
232 void accumulate_symmetric_product(
SCMatrix*);
233 void accumulate_symmetric_sum(
SCMatrix*);
235 SCMatrix::Transform = SCMatrix::NormalTransform);
237 SCMatrix::Transform = SCMatrix::NormalTransform);
244 void vprint(
const char* title=0,
248 double *get_data() {
return matrix; }
249 double **get_rows() {
return rows; }
263 void init_blocklist();
266 void before_elemop();
273 void assign_val(
double);
274 double get_element(
int)
const;
275 void set_element(
int,
double);
276 void accumulate_element(
int,
double);
278 double invert_this();
279 double determ_this();
281 void gen_invert_this();
288 void vprint(
const char* title=0,
292 double *get_data() {
return matrix; }
The SCMatrix class is the abstract base class for general double valued n by m matrices.
Definition: abstract.h:195
A template class that maintains references counts.
Definition: ref.h:332
The SCMatrixKit abstract class acts as a factory for producing matrices.
Definition: abstract.h:58
The SymmSCMatrix class is the abstract base class for diagonal double valued matrices.
Definition: abstract.h:503
The RefSCDimension class is a smart pointer to an SCDimension specialization.
Definition: dim.h:156
The SCVector class is the abstract base class for double valued vectors.
Definition: abstract.h:97
static std::ostream & out0()
Return an ostream that writes from node 0.
The SymmSCMatrix class is the abstract base class for symmetric double valued matrices.
Definition: abstract.h:364
SCMatrix * matrix(const RefSCDimension &, const RefSCDimension &)
Given the dimensions, create matrices or vectors.
The ReplSCMatrixKit produces matrices that work in a many processor environment.
Definition: repl.h:46