linbox
|
to be used in standard matrix domain More...
#include <dense-matrix.h>
Public Types | |
typedef DenseMat< _Element > | Self_t |
Self type. | |
Public Member Functions | |
void | submatrix (const DenseMat &A, size_t i, size_t j, size_t m, size_t n) |
Set this to be an m by n submatrix of A with upper left corner at i,j position of A. More... | |
template<class Field > | |
std::istream & | read (std::istream &file, const Field &field) |
Read the matrix from an input stream. More... | |
template<class Field > | |
std::ostream & | write (std::ostream &os, const Field &field, bool mapleFormat=false) const |
Write the matrix to an output stream. More... | |
std::ostream & | write (std::ostream &os, bool mapleFormat=false) const |
Write the matrix to an output stream. More... | |
to be used in standard matrix domain
Matrix variable declaration, sizing, entry initialization may involve one to 3 steps. Matrix ops are container ops. (sizing, copying) Mathematically meaningful operations are to be found only in an associated matrix domain
A matrix may be allocated or not. A matrix initialized by a submatrix() call is not allocated. When an allocated matrix goes out of scope or is reinitialized with init(), the memory is released and all submatrices of it become invalid.
Allocating: DenseMat A(2, 3); // allocation of mem for 6 entries at construction DenseMat B; B.init(10, 10); // default constr and subsequent allocation for 100 entries.
Allocation of memory plus entry initialization: // a meaningful value of DenseMat::Entry x is set by a field or matrix domain. DenseMat A(10, 10, x); DenseMat B: B.init(10, 10, x); DenseMat C(A); // allocation at copy construction. A could be a submatrix of another. A.read(istream)
Nonallocation sizing: // assume D declared, A initialized, n = A.coldim(). D.submatrix(A, 0, 1, 2, n-1); // D is 2 by n-1 in upper right of A.
Entry initialization (and overwriting) in already sized matrices: A.setEntry(i, j, x); A = B; // A and B must have the same shape.
Entry read access. OK on const matrices getEntry, write
Under consideration: Require A.clear() on an allocated matrix before any action that would abandon the allocated mem (init or submatrix).
|
inline |
Set this to be an m by n submatrix of A with upper left corner at i,j position of A.
Requires i+m <= A.rowdim(), j+n <= A.coldim().
For instance, B.submatrix(A, i, 0, 1, A.coldim()) makes B the i-th row of A.
std::istream & read | ( | std::istream & | file, |
const Field & | field | ||
) |
Read the matrix from an input stream.
file | Input stream from which to read |
field |
std::ostream & write | ( | std::ostream & | os, |
const Field & | field, | ||
bool | mapleFormat = false |
||
) | const |
Write the matrix to an output stream.
os | Output stream to which to write |
field | |
mapleFormat | write in Maple(r) format ? |
std::ostream & write | ( | std::ostream & | os, |
bool | mapleFormat = false |
||
) | const |
Write the matrix to an output stream.
This a raw version of write(os,F)
(no field is given).
os | Output stream to which to write |
mapleFormat | write in Maple(r) format ? |