Sparse-matrix class. More...
#include <Matrix_Sparse.hxx>
Public Types | |
typedef Allocator::value_type | value_type |
typedef Allocator::pointer | pointer |
typedef Allocator::const_pointer | const_pointer |
typedef Allocator::reference | reference |
typedef Allocator::const_reference | const_reference |
typedef SeldonDefaultAllocator< VectFull, int >::allocator | AllocatorInt |
typedef SeldonDefaultAllocator< VectFull, long >::allocator | AllocatorLong |
typedef value_type | entry_type |
typedef value_type | access_type |
typedef value_type | const_access_type |
Public Member Functions | |
Matrix_Sparse () | |
Default constructor. More... | |
Matrix_Sparse (int i, int j) | |
Constructor. More... | |
Matrix_Sparse (int i, int j, long nz) | |
Constructor. More... | |
template<class Storage0 , class Allocator0 , class Storage1 , class Allocator1 , class Storage2 , class Allocator2 > | |
Matrix_Sparse (int i, int j, Vector< T, Storage0, Allocator0 > &values, Vector< long, Storage1, Allocator1 > &ptr, Vector< int, Storage2, Allocator2 > &ind) | |
Constructor. More... | |
Matrix_Sparse (const Matrix_Sparse< T, Prop, Storage, Allocator > &A) | |
Copy constructor. | |
~Matrix_Sparse () | |
Destructor. | |
void | Clear () |
Clears the matrix. More... | |
template<class Storage0 , class Allocator0 , class Storage1 , class Allocator1 , class Storage2 , class Allocator2 > | |
void | SetData (int i, int j, Vector< T, Storage0, Allocator0 > &values, Vector< long, Storage1, Allocator1 > &ptr, Vector< int, Storage2, Allocator2 > &ind) |
Redefines the matrix. More... | |
void | SetData (int i, int j, long nz, pointer values, long *ptr, int *ind) |
void | Nullify () |
Clears the matrix without releasing memory. More... | |
void | Reallocate (int i, int j) |
Initialization of an empty sparse matrix with i rows and j columns. More... | |
void | Reallocate (int i, int j, long nz) |
Initialization of a sparse matrix with i rows and j columns. More... | |
void | Resize (int i, int j) |
Reallocates memory to resize the matrix and keeps previous entries. More... | |
void | Resize (int i, int j, long nz) |
Reallocates memory to resize the matrix and keeps previous entries. More... | |
void | Copy (const Matrix_Sparse< T, Prop, Storage, Allocator > &A) |
Copies a matrix. | |
long | GetNonZeros () const |
Returns the number of non-zero elements. More... | |
long | GetDataSize () const |
Returns the number of elements stored in memory. More... | |
size_t | GetMemorySize () const |
returns size of A in bytes used to store the matrix | |
long * | GetPtr () const |
Returns (row or column) start indices. More... | |
int * | GetInd () const |
Returns (row or column) indices of non-zero entries. More... | |
int | GetPtrSize () const |
Returns the length of the array of start indices. More... | |
long | GetIndSize () const |
Returns the length of the array of (column or row) indices. More... | |
void | FillPtrInt (Vector< int > &) const |
Fills vector ptr with integers instead of longs. | |
const value_type | operator() (int i, int j) const |
Access operator. More... | |
value_type & | Val (int i, int j) |
Access method. More... | |
value_type & | Get (int i, int j) |
Access method. More... | |
const value_type & | Val (int i, int j) const |
Access method. More... | |
const value_type & | Get (int i, int j) const |
Access method. More... | |
void | AddInteraction (int i, int j, const T &val) |
Add a value to a non-zero entry. More... | |
void | AddInteractionRow (int i, int nb, const Vector< int > &col, const Vector< T > &val, bool sorted=false) |
Adds values to several non-zero entries on a given row. | |
void | Set (int i, int j, const T &x) |
Sets an element (i, j) to a value. More... | |
void | SetEntry (int i, int j, const T &x) |
Sets an element (i, j) to a value. More... | |
Matrix_Sparse< T, Prop, Storage, Allocator > & | operator= (const Matrix_Sparse< T, Prop, Storage, Allocator > &A) |
Duplicates a matrix (assignment operator). More... | |
void | Zero () |
Resets all non-zero entries to 0-value. More... | |
void | SetIdentity () |
Sets the matrix to identity. More... | |
void | Fill () |
Fills the non-zero entries with 0, 1, 2, ... More... | |
template<class T0 > | |
void | Fill (const T0 &x) |
Fills the non-zero entries with a given value. More... | |
void | FillRand () |
Fills the non-zero entries randomly. More... | |
void | FillRand (long Nelement) |
Fills the matrix with random elements. More... | |
void | FillRand (long Nelement, const T &x) |
Fills the matrix with one value inserted at random positions. More... | |
void | Print () const |
Displays the matrix on the standard output. More... | |
void | Write (string FileName) const |
Writes the matrix in a file. More... | |
void | Write (ostream &FileStream) const |
Writes the matrix to an output stream. More... | |
void | WriteText (string FileName, bool cplx=false) const |
Writes the matrix in a file. More... | |
void | WriteText (ostream &FileStream, bool cplx=false) const |
Writes the matrix to an output stream. More... | |
void | Read (string FileName) |
Reads the matrix from a file. More... | |
void | Read (istream &FileStream) |
Reads the matrix from an input stream. More... | |
void | ReadText (string FileName, bool cplx=false) |
Reads the matrix from a file. More... | |
void | ReadText (istream &FileStream, bool cplx=false) |
Reads the matrix from an input stream. More... | |
template<class T , class Prop , class Storage , class Allocator > | |
void | SetData (int i, int j, long nz, typename Matrix_Sparse< T, Prop, Storage, Allocator > ::pointer values, long *ptr, int *ind) |
Redefines the matrix. More... | |
pointer | GetData () const |
Returns a pointer to the data array. More... | |
const_pointer | GetDataConst () const |
Returns a const pointer to the data array. More... | |
void * | GetDataVoid () const |
Returns a pointer of type "void*" to the data array. More... | |
const void * | GetDataConstVoid () const |
Returns a pointer of type "const void*" to the data array. More... | |
int | GetM () const |
Returns the number of rows. More... | |
int | GetM (const Seldon::SeldonTranspose &status) const |
Returns the number of rows of the matrix possibly transposed. More... | |
int | GetM (const CBLAS_TRANSPOSE &status) const |
Returns the number of rows of the matrix possibly transposed. More... | |
int | GetN () const |
Returns the number of columns. More... | |
int | GetN (const Seldon::SeldonTranspose &status) const |
Returns the number of columns of the matrix possibly transposed. More... | |
int | GetN (const CBLAS_TRANSPOSE &status) const |
Returns the number of columns of the matrix possibly transposed. More... | |
long | GetSize () const |
Returns the number of elements in the matrix. More... | |
Protected Attributes | |
long | nz_ |
long * | ptr_ |
int * | ind_ |
pointer | data_ |
int | m_ |
int | n_ |
Sparse-matrix class.
Sparse matrices are defined by: (1) the number of rows and columns; (2) the number of non-zero entries; (3) an array 'ptr_' of start indices (i.e. indices of the first element of each row or column, depending on the storage); (4) an array 'ind_' of column or row indices of each non-zero entry; (5) values of non-zero entries.
Definition at line 45 of file Matrix_Sparse.hxx.
|
inline |
Default constructor.
Builds an empty 0x0 matrix.
Definition at line 53 of file Matrix_SparseInline.cxx.
|
inlineexplicit |
Constructor.
Builds a i by j sparse matrix.
i | number of rows. |
j | number of columns. |
Definition at line 69 of file Matrix_SparseInline.cxx.
|
inlineexplicit |
Constructor.
Builds a sparse matrix of size i by j , with nz non-zero elements.
i | number of rows. |
j | number of columns. |
nz | number of non-zero elements. |
Definition at line 91 of file Matrix_SparseInline.cxx.
Seldon::Matrix_Sparse< T, Prop, Storage, Allocator >::Matrix_Sparse | ( | int | i, |
int | j, | ||
Vector< T, Storage0, Allocator0 > & | values, | ||
Vector< long, Storage1, Allocator1 > & | ptr, | ||
Vector< int, Storage2, Allocator2 > & | ind | ||
) |
Constructor.
Builds a i by j sparse matrix with non-zero values and indices provided by 'values' (values), 'ptr' (pointers) and 'ind' (indices). Input vectors are released and are empty on exit.
i | number of rows. |
j | number of columns. |
values | values of non-zero entries. |
ptr | row or column start indices. |
ind | row or column indices. |
Definition at line 65 of file Matrix_Sparse.cxx.
|
inline |
Add a value to a non-zero entry.
This function adds val to the element (i, j), provided that this element is already a non-zero entry. Otherwise a non-zero entry is inserted equal to val.
[in] | i | row index. |
[in] | j | column index. |
[in] | val | value to be added to the element (i, j). |
Definition at line 222 of file Matrix_SparseInline.cxx.
void Seldon::Matrix_Sparse< T, Prop, Storage, Allocator >::Clear |
Clears the matrix.
This methods is equivalent to the destructor. On exit, the matrix is empty (0x0).
Definition at line 159 of file Matrix_Sparse.cxx.
void Seldon::Matrix_Sparse< T, Prop, Storage, Allocator >::Fill |
Fills the non-zero entries with 0, 1, 2, ...
On exit, the non-zero entries are 0, 1, 2, 3, ... The order of the numbers depends on the storage.
Definition at line 1196 of file Matrix_Sparse.cxx.
void Seldon::Matrix_Sparse< T, Prop, Storage, Allocator >::Fill | ( | const T0 & | x | ) |
Fills the non-zero entries with a given value.
x | the value to set the non-zero entries to. |
Definition at line 1209 of file Matrix_Sparse.cxx.
void Seldon::Matrix_Sparse< T, Prop, Storage, Allocator >::FillRand |
Fills the non-zero entries randomly.
Definition at line 1223 of file Matrix_Sparse.cxx.
void Seldon::Matrix_Sparse< T, Prop, Storage, Allocator >::FillRand | ( | long | Nelement | ) |
Fills the matrix with random elements.
The matrix is cleared and then filled with n random elements. Both the position of the elements and their values are randomly generated. On exit, the matrix may not have n non-zero elements: it is possible that the randomly-generated positions of two elements are the same.
[in] | Nelement | the number of random elements to be inserted in the matrix. |
Definition at line 1244 of file Matrix_Sparse.cxx.
void Seldon::Matrix_Sparse< T, Prop, Storage, Allocator >::FillRand | ( | long | Nelement, |
const T & | x | ||
) |
Fills the matrix with one value inserted at random positions.
The matrix is cleared and then filled with n random elements. Only the position of the elements is randomly generated. Their value will always be x. On exit, the matrix may not have n non-zero elements: it is possible that the randomly-generated positions of two elements are the same.
[in] | Nelement | the number of random elements to be inserted in the matrix. |
[in] | x | the value to be inserted. |
Definition at line 1293 of file Matrix_Sparse.cxx.
Matrix_Sparse< T, Prop, Storage, Allocator >::value_type & Seldon::Matrix_Sparse< T, Prop, Storage, Allocator >::Get | ( | int | i, |
int | j | ||
) |
Access method.
Returns reference to element (i, j)
[in] | i | row index. |
[in] | j | column index. |
Definition at line 1088 of file Matrix_Sparse.cxx.
|
inline |
Access method.
Returns reference to element (i, j)
[in] | i | row index. |
[in] | j | column index. |
Definition at line 206 of file Matrix_SparseInline.cxx.
|
inlineinherited |
Returns a pointer to the data array.
Returns a pointer to data, i.e. the data array 'data_'.
Definition at line 241 of file Matrix_BaseInline.cxx.
|
inlineinherited |
Returns a const pointer to the data array.
Returns a const pointer to data, i.e. the data array 'data_'.
Definition at line 254 of file Matrix_BaseInline.cxx.
|
inlineinherited |
Returns a pointer of type "const void*" to the data array.
Returns a pointer of type "const void*" to data, i.e. the data array 'data_'.
Definition at line 280 of file Matrix_BaseInline.cxx.
|
inline |
Returns the number of elements stored in memory.
Returns the number of elements stored in memory, i.e. the number of non-zero entries.
Definition at line 138 of file Matrix_SparseInline.cxx.
|
inlineinherited |
Returns a pointer of type "void*" to the data array.
Returns a pointer of type "void*" to data, i.e. the data array 'data_'.
Definition at line 267 of file Matrix_BaseInline.cxx.
|
inline |
Returns (row or column) indices of non-zero entries.
Returns the array ('ind_') of (row or column) indices of non-zero entries. This array defines non-zero entries indices if coupled with (column or row) start indices.
Definition at line 165 of file Matrix_SparseInline.cxx.
|
inline |
Returns the length of the array of (column or row) indices.
Returns the length of the array ('ind_') of (row or column) indices of non-zero entries. This array defines non-zero entries indices if coupled with (column or row) start indices.
Definition at line 192 of file Matrix_SparseInline.cxx.
|
inlineinherited |
Returns the number of rows.
Definition at line 69 of file Matrix_BaseInline.cxx.
|
inlineinherited |
Returns the number of rows of the matrix possibly transposed.
status | assumed status about the transposition of the matrix. |
Definition at line 122 of file Matrix_BaseInline.cxx.
|
inlineinherited |
Returns the number of rows of the matrix possibly transposed.
status | assumed status about the transposition of the matrix. |
Definition at line 92 of file Matrix_BaseInline.cxx.
|
inlineinherited |
Returns the number of columns.
Definition at line 80 of file Matrix_BaseInline.cxx.
|
inlineinherited |
Returns the number of columns of the matrix possibly transposed.
status | assumed status about the transposition of the matrix. |
Definition at line 137 of file Matrix_BaseInline.cxx.
|
inlineinherited |
Returns the number of columns of the matrix possibly transposed.
status | assumed status about the transposition of the matrix. |
Definition at line 107 of file Matrix_BaseInline.cxx.
|
inline |
Returns the number of non-zero elements.
Definition at line 125 of file Matrix_SparseInline.cxx.
|
inline |
Returns (row or column) start indices.
Returns the array ('ptr_') of start indices.
Definition at line 150 of file Matrix_SparseInline.cxx.
|
inline |
Returns the length of the array of start indices.
Definition at line 176 of file Matrix_SparseInline.cxx.
|
inlineinherited |
Returns the number of elements in the matrix.
Returns the number of elements in the matrix, i.e. the number of rows multiplied by the number of columns.
Definition at line 153 of file Matrix_BaseInline.cxx.
void Seldon::Matrix_Sparse< T, Prop, Storage, Allocator >::Nullify |
Clears the matrix without releasing memory.
On exit, the matrix is empty and the memory has not been released. It is useful for low level manipulations on a Matrix instance.
Definition at line 356 of file Matrix_Sparse.cxx.
const Matrix_Sparse< T, Prop, Storage, Allocator >::value_type Seldon::Matrix_Sparse< T, Prop, Storage, Allocator >::operator() | ( | int | i, |
int | j | ||
) | const |
Access operator.
Returns the value of element (i, j).
i | row index. |
j | column index. |
Definition at line 940 of file Matrix_Sparse.cxx.
|
inline |
Duplicates a matrix (assignment operator).
A | matrix to be copied. |
Definition at line 275 of file Matrix_SparseInline.cxx.
void Seldon::Matrix_Sparse< T, Prop, Storage, Allocator >::Print |
Displays the matrix on the standard output.
Displays elements on the standard output, in text format. Each row is displayed on a single line and elements of a row are delimited by tabulations.
Definition at line 1326 of file Matrix_Sparse.cxx.
void Seldon::Matrix_Sparse< T, Prop, Storage, Allocator >::Read | ( | istream & | FileStream | ) |
Reads the matrix from an input stream.
Reads a matrix in binary format from an input stream.
FileStream | input stream |
Definition at line 1490 of file Matrix_Sparse.cxx.
void Seldon::Matrix_Sparse< T, Prop, Storage, Allocator >::Read | ( | string | FileName | ) |
Reads the matrix from a file.
Reads a matrix stored in binary format in a file.
FileName | input file name. |
Definition at line 1465 of file Matrix_Sparse.cxx.
void Seldon::Matrix_Sparse< T, Prop, Storage, Allocator >::ReadText | ( | istream & | FileStream, |
bool | cplx = false |
||
) |
Reads the matrix from an input stream.
Reads a matrix from a stream in text format.
FileStream | input stream. |
Definition at line 1559 of file Matrix_Sparse.cxx.
void Seldon::Matrix_Sparse< T, Prop, Storage, Allocator >::ReadText | ( | string | FileName, |
bool | cplx = false |
||
) |
Reads the matrix from a file.
Reads the matrix from a file in text format.
FileName | input file name. |
cplx | if true the real part and imaginary part are given in two separate columns, otherwise the complex values are written (a,b) |
Definition at line 1534 of file Matrix_Sparse.cxx.
void Seldon::Matrix_Sparse< T, Prop, Storage, Allocator >::Reallocate | ( | int | i, |
int | j | ||
) |
Initialization of an empty sparse matrix with i rows and j columns.
i | number of rows |
j | number of columns |
Definition at line 373 of file Matrix_Sparse.cxx.
void Seldon::Matrix_Sparse< T, Prop, Storage, Allocator >::Reallocate | ( | int | i, |
int | j, | ||
long | nz | ||
) |
Initialization of a sparse matrix with i rows and j columns.
i | number of rows |
j | number of columns |
nz | number of non-zero entries |
Definition at line 432 of file Matrix_Sparse.cxx.
void Seldon::Matrix_Sparse< T, Prop, Storage, Allocator >::Resize | ( | int | i, |
int | j | ||
) |
Reallocates memory to resize the matrix and keeps previous entries.
On exit, the matrix is a i x j matrix.
i | new number of rows. |
j | new number of columns. |
Definition at line 596 of file Matrix_Sparse.cxx.
void Seldon::Matrix_Sparse< T, Prop, Storage, Allocator >::Resize | ( | int | i, |
int | j, | ||
long | nz | ||
) |
Reallocates memory to resize the matrix and keeps previous entries.
On exit, the matrix is a i x j matrix.
i | new number of rows. |
j | new number of columns. |
nz | number of non-zero elements. |
Definition at line 614 of file Matrix_Sparse.cxx.
|
inline |
Sets an element (i, j) to a value.
This function sets val to the element (i, j)
[in] | i | row index. |
[in] | j | column index. |
[in] | val | A(i, j) = val |
Definition at line 246 of file Matrix_SparseInline.cxx.
void Seldon::Matrix_Sparse< T, Prop, Storage, Allocator >::SetData | ( | int | i, |
int | j, | ||
long | nz, | ||
typename Matrix_Sparse< T, Prop, Storage, Allocator > ::pointer | values, | ||
long * | ptr, | ||
int * | ind | ||
) |
Redefines the matrix.
It clears the matrix and sets it to a new matrix defined by arrays 'values' (values), 'ptr' (pointers) and 'ind' (indices).
i | number of rows. |
j | number of columns. |
nz | number of non-zero entries. |
values | values of non-zero entries. |
ptr | row or column start indices. |
ind | row or column indices. |
Definition at line 333 of file Matrix_Sparse.cxx.
void Seldon::Matrix_Sparse< T, Prop, Storage, Allocator >::SetData | ( | int | i, |
int | j, | ||
Vector< T, Storage0, Allocator0 > & | values, | ||
Vector< long, Storage1, Allocator1 > & | ptr, | ||
Vector< int, Storage2, Allocator2 > & | ind | ||
) |
Redefines the matrix.
It clears the matrix and sets it to a new matrix defined by 'values' (values), 'ptr' (pointers) and 'ind' (indices). Input vectors are released and are empty on exit.
i | number of rows. |
j | number of columns. |
values | values of non-zero entries. |
ptr | row or column start indices. |
ind | row or column indices. |
Definition at line 241 of file Matrix_Sparse.cxx.
|
inline |
Sets an element (i, j) to a value.
This function sets val to the element (i, j)
[in] | i | row index. |
[in] | j | column index. |
[in] | val | A(i, j) = val |
Definition at line 260 of file Matrix_SparseInline.cxx.
void Seldon::Matrix_Sparse< T, Prop, Storage, Allocator >::SetIdentity |
Sets the matrix to identity.
This method fills the diagonal of the matrix with ones. It can be applied to non square matrix.
Definition at line 1162 of file Matrix_Sparse.cxx.
Matrix_Sparse< T, Prop, Storage, Allocator >::value_type & Seldon::Matrix_Sparse< T, Prop, Storage, Allocator >::Val | ( | int | i, |
int | j | ||
) |
Access method.
Returns the value of element (i, j) if it can be returned as a reference.
[in] | i | row index. |
[in] | j | column index. |
WrongArgument | No reference can be returned because the element is a zero entry (not stored in the matrix). |
Definition at line 987 of file Matrix_Sparse.cxx.
const Matrix_Sparse< T, Prop, Storage, Allocator >::value_type & Seldon::Matrix_Sparse< T, Prop, Storage, Allocator >::Val | ( | int | i, |
int | j | ||
) | const |
Access method.
Returns the value of element (i, j) if it can be returned as a reference.
[in] | i | row index. |
[in] | j | column index. |
WrongArgument | No reference can be returned because the element is a zero entry (not stored in the matrix). |
Definition at line 1038 of file Matrix_Sparse.cxx.
void Seldon::Matrix_Sparse< T, Prop, Storage, Allocator >::Write | ( | ostream & | FileStream | ) | const |
Writes the matrix to an output stream.
Stores the matrix in an output stream in binary format.
FileStream | output stream. |
Definition at line 1369 of file Matrix_Sparse.cxx.
void Seldon::Matrix_Sparse< T, Prop, Storage, Allocator >::Write | ( | string | FileName | ) | const |
Writes the matrix in a file.
Stores the matrix in a file in binary format.
FileName | output file name. |
Definition at line 1344 of file Matrix_Sparse.cxx.
void Seldon::Matrix_Sparse< T, Prop, Storage, Allocator >::WriteText | ( | ostream & | FileStream, |
bool | cplx = false |
||
) | const |
Writes the matrix to an output stream.
Stores the matrix in a file in ascii format. The entries are written in coordinate format (row column value) 1-index convention is used
FileStream | output stream. |
cplx | if true the real part and imaginary part are given in two separate columns, otherwise the complex values are written (a,b) |
Definition at line 1439 of file Matrix_Sparse.cxx.
void Seldon::Matrix_Sparse< T, Prop, Storage, Allocator >::WriteText | ( | string | FileName, |
bool | cplx = false |
||
) | const |
Writes the matrix in a file.
Stores the matrix in a file in ascii format. The entries are written in coordinate format (row column value) 1-index convention is used
FileName | output file name. |
cplx | if true the real part and imaginary part are written in two separate columns, otherwise the complex values are written (a,b) |
Definition at line 1406 of file Matrix_Sparse.cxx.
void Seldon::Matrix_Sparse< T, Prop, Storage, Allocator >::Zero |
Resets all non-zero entries to 0-value.
The sparsity pattern remains unchanged.
Definition at line 1150 of file Matrix_Sparse.cxx.