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();
86 void assign_p(
const double*);
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();
136 void set_element(
int,
int,
double);
137 void accumulate_element(
int,
int,
double);
144 void assign_column(
SCVector *v,
int i);
146 void accumulate_column(
SCVector *v,
int i);
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();
204 void assign_p(
const double*);
205 void assign_pp(
const double**);
207 void set_element(
int,
int,
double);
208 void accumulate_element(
int,
int,
double);
227 void gen_invert_this();
231 void accumulate_symmetric_outer_product(
SCVector*);
232 void accumulate_symmetric_product(
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();
275 void set_element(
int,
double);
276 void accumulate_element(
int,
double);
288 void vprint(
const char* title=0,
292 double *get_data() {
return matrix; }
void element_op(const Ref< SCElementOp > &)
Perform the element operation op on each element of this.
void accumulate_row(SCVector *v, int i)
Sum v to a row of this.
void assign_val(double)
Overridden to implement to assign members.
double get_element(int, int) const
Return or modify an element.
void accumulate_element(int, double)
Add val to element i.
The SCVector class is the abstract base class for double valued vectors.
Definition: abstract.h:97
double trace()
Return the trace.
void element_op(const Ref< SCElementOp > &)
Perform the element operation op on each element of this.
void element_op(const Ref< SCElementOp > &)
Perform the element operation op on each element of this.
void set_element(int, double)
Set element i to val.
void assign_subblock(SCMatrix *, int, int, int, int)
Assign m to a subblock of this.
void scale(double)
Multiply all elements by val.
A template class that maintains references counts.
Definition: ref.h:332
double invert_this()
Invert this.
SCMatrix * matrix(const RefSCDimension &, const RefSCDimension &)
Given the dimensions, create matrices or vectors.
double get_element(int, int) const
Return or modify an element.
The SCMatrixKit abstract class acts as a factory for producing matrices.
Definition: abstract.h:58
double determ_this()
Return the determinant of this. this is overwritten.
void diagonalize(DiagSCMatrix *, SCMatrix *)
Diagonalize this, placing the eigenvalues in d and the eigenvectors in m.
double scalar_product(SCVector *)
Return the scalar obtained by multiplying this on the left and right by v.
double trace()
Return the trace.
void assign_val(double)
Overridden to implement the assign functions.
Ref< SCMatrixSubblockIter > all_blocks(SCMatrixSubblockIter::Access)
Returns iterators for the all blocks used in this matrix.
Ref< SCMatrixSubblockIter > local_blocks(SCMatrixSubblockIter::Access)
Returns iterators for the local (rapidly accessible) blocks used in this matrix.
SCMatrix * get_subblock(int, int, int, int)
Return a subblock of this.
The SymmSCMatrix class is the abstract base class for diagonal double valued matrices.
Definition: abstract.h:503
Ref< SCMatrixSubblockIter > all_blocks(SCMatrixSubblockIter::Access)
Returns iterators for the all blocks used in this matrix.
void assign_row(SCVector *v, int i)
Assign v to a row or column of this.
The RefSCDimension class is a smart pointer to an SCDimension specialization.
Definition: dim.h:156
double determ_this()
Return the determinant of this. this is overwritten.
double get_element(int) const
Return or modify an element.
void accumulate_outer_product(SCVector *, SCVector *)
Sum into this the products of various vectors or matrices.
Ref< SCMatrixSubblockIter > all_blocks(SCMatrixSubblockIter::Access)
Returns iterators for the all blocks used in this matrix.
void accumulate_subblock(SCMatrix *, int, int, int, int)
Sum m into a subblock of this.
void gen_invert_this()
Do a generalized inversion of this.
double determ_this()
Return the determinant of this. this is overwritten.
Ref< SCMatrixSubblockIter > local_blocks(SCMatrixSubblockIter::Access)
Returns iterators for the local (rapidly accessible) blocks used in this matrix.
void transpose_this()
Transpose this.
void accumulate(const SCMatrix *)
Sum m into this.
double trace()
Return the trace.
SCMatrix * get_subblock(int, int, int, int)
Return a subblock of this.
Ref< SCMatrixSubblockIter > local_blocks(SCMatrixSubblockIter::Access)
Returns iterators for the local (rapidly accessible) blocks used in this vector.
SCVector * get_row(int i)
Return a row or column of this.
void accumulate_symmetric_sum(SCMatrix *)
Sum into this the products of various vectors or matrices.
The SymmSCMatrix class is the abstract base class for symmetric double valued matrices.
Definition: abstract.h:364
Ref< SCMatrixSubblockIter > all_blocks(SCMatrixSubblockIter::Access)
Returns iterators for the all blocks used in this vector.
void svd_this(SCMatrix *U, DiagSCMatrix *sigma, SCMatrix *V)
Compute the singular value decomposition for this, possibly destroying this.
double invert_this()
Invert this.
void accumulate_row(SCVector *v, int i)
Sum v to a row or column of this.
void accumulate(const SCVector *)
Sum v into this.
void assign_val(double)
Overridden to implement the assign members.
void accumulate(const SymmSCMatrix *)
Sum m into this.
SCVector * get_row(int i)
Return a row of this.
void accumulate_subblock(SCMatrix *, int, int, int, int, int=0, int=0)
Sum m into a subblock of this.
static std::ostream & out0()
Return an ostream that writes from node 0.
The SCMatrix class is the abstract base class for general double valued n by m matrices.
Definition: abstract.h:195
int schmidt_orthog_tol(SymmSCMatrix *, double tol, double *res=0)
Schmidt orthogonalize this.
double invert_this()
Invert this.
void schmidt_orthog(SymmSCMatrix *, int)
Schmidt orthogonalize this.
double scalar_product(SCVector *)
Return the dot product.
void assign_row(SCVector *v, int i)
Assign v to a row of this.
The ReplSCMatrixKit produces matrices that work in a many processor environment.
Definition: repl.h:46
void element_op(const Ref< SCElementOp > &)
Perform the element operation op on each element of this.
Ref< SCMatrixSubblockIter > local_blocks(SCMatrixSubblockIter::Access)
Returns iterators for the local (rapidly accessible) blocks used in this matrix.
double get_element(int) const
Return the value of element i.
void accumulate(const DiagSCMatrix *)
Sum m into this.
void assign_val(double)
Overridden to implement the assign functions.
void assign_subblock(SCMatrix *, int, int, int, int, int=0, int=0)
Assign m to a subblock of this.
Generated at Sun Jan 26 2020 23:33:04 for MPQC
2.3.1 using the documentation package Doxygen
1.8.16.