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.
|
Public Member Functions |
| | 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 Member Functions |
| 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 |