Main Page Modules Namespace List Class Hierarchy Compound List File List Namespace Members Compound Members File Members Related Pages
ZeroOne Class Template Reference
[linbox/blackbox]
#include <zero-one.h>
Inheritance diagram for ZeroOne:
List of all members.
Detailed Description
template<class Field>
class LinBox::ZeroOne< Field >
Time and space efficient representation of sparse {0,1}-matrices.
A 0-1 matrix is a matrix with all 0's and 1's as entries. We're using a NAG-sparse format. Applies can be performed fast, using only additions. When initalizing this class, you only need to build 2 arrays of equal length: an array of the row indices for the non-zero (1's) entries, and an array of the column indices for the non-zero (1's) entries.
A {0, 1,-1} matrix can be effecively represented as the Dif of two ZeroOne's.
|
Public Methods |
| | ZeroOne () |
| | ZeroOne (Field F, Index *rowP, Index *colP, Index rows, Index cols, Index NNz, bool rowSort=false, bool colSort=false) |
| | ~ZeroOne () |
| template<class OutVector, class InVector> OutVector & | apply (OutVector &y, const InVector &x) const |
| template<class OutVector, class InVector> OutVector & | applyTranspose (OutVector &y, const InVector &x) const |
| size_t | rowdim () const |
| size_t | coldim () const |
| RawIterator | rawBegin () |
| RawIterator | rawEnd () |
| const RawIterator | rawBegin () const |
| const RawIterator | rawEnd () const |
| RawIndexIterator | indexBegin () |
| const RawIndexIterator | indexBegin () const |
| RawIndexIterator | indexEnd () |
| const RawIndexIterator | indexEnd () const |
| std::ostream & | write (std::ostream &out=std::cout) |
| const Field & | field () const |
Protected Types |
| typedef Field::Element | Element |
| typedef size_t | Index |
| typedef LinBox::uint32 | uint32 |
| typedef LinBox::uint64 | uint64 |
Protected Methods |
| size_t | nnz () const |
| void | rowSort () const |
| void | colSort () const |
| void | _qsort (size_t start, size_t endp1, int &mode) const |
| size_t | _part (size_t start, size_t endp1, int &mode) const |
Protected Attributes |
| Field | _F |
| Element | _tmp |
| Index | _rows |
| Index | _cols |
| Index | _nnz |
| Index * | _rowP |
| Index * | _colP |
| bool | _rowSort |
| bool | _colSort |
| bool | dynamic |
Member Typedef Documentation
typedef Field::Element Element [protected]
|
|
typedef size_t Index [protected]
|
|
typedef LinBox::uint32 uint32 [protected]
|
|
typedef LinBox::uint64 uint64 [protected]
|
|
Constructor & Destructor Documentation
Member Function Documentation
| size_t _part |
( |
size_t |
start, |
|
|
size_t |
endp1, |
|
|
int & |
mode |
|
) |
const [protected] |
|
| void _qsort |
( |
size_t |
start, |
|
|
size_t |
endp1, |
|
|
int & |
mode |
|
) |
const [protected] |
|
| OutVector& apply |
( |
OutVector & |
y, |
|
|
const InVector & |
x |
|
) |
const [inline] |
|
|
|
Uses one of the three private utility functions. It calls the generalized utility function _apply if there is no special ordering, _fyapply if there is C_ordering or _fxapply if there is fortran_ordering |
| OutVector& applyTranspose |
( |
OutVector & |
y, |
|
|
const InVector & |
x |
|
) |
const [inline] |
|
|
|
Uses one of the three private utility functions, in the manner described above. Worthy of note is the fact that applyTranspose works by passing the column positions to the _apply functions as if they were rows, and row positions as if they were columns, as if the matrix had been transposed. |
| size_t coldim |
( |
void |
|
) |
const [inline] |
|
| void colSort |
( |
|
) |
[protected] |
|
| const Field& field |
( |
|
) |
const [inline] |
|
| size_t nnz |
( |
|
) |
const [inline, protected] |
|
| size_t rowdim |
( |
void |
|
) |
const [inline] |
|
| void rowSort |
( |
|
) |
[protected] |
|
| std::ostream& write |
( |
std::ostream & |
out = std::cout |
) |
[inline] |
|
Member Data Documentation
Index * _colP [protected]
|
|
bool _colSort [protected]
|
|
bool _rowSort [protected]
|
|
Generated on Mon Jun 20 09:16:58 2005 for linbox by
1.2.18