|
| | Eliminator (const Field &F, unsigned int N) |
| | Constructor.
|
| |
| | ~Eliminator () |
| | Destructor.
|
| |
| template<class Matrix1, class Matrix2, class Matrix3, class Matrix4> |
| void | twoSidedGaussJordan (Matrix1 &Ainv, Permutation &P, Matrix2 &Tu, Permutation &Q, Matrix3 &Tv, const Matrix4 &A, unsigned int &rank) |
| | Two-sided Gauss-Jordan transform.
|
| |
| Matrix & | permuteAndInvert (Matrix &W, std::vector< bool > &S, std::vector< bool > &T, std::list< unsigned int > &rightPriorityIdx, Permutation &Qp, unsigned int &rank, const Matrix &A) |
| | Permute the input and invert it.
|
| |
| template<class Matrix1, class Matrix2, class Matrix3, class Matrix4> |
| Matrix1 & | gaussJordan (Matrix1 &U, std::vector< unsigned int > &profile, Permutation &P, Matrix2 &Tu, Permutation &Q, Matrix3 &Tv, unsigned int &rank, typename Field::Element &det, const Matrix4 &A) |
| | Perform a Gauss-Jordan transform using a recursive algorithm.
|
| |
| double | getTotalTime () const |
| | Retrieve the total user time spent permuting and inverting.
|
| |
| double | getInvertTime () const |
| | Retrieve the total user time spent inverting only.
|
| |
| std::ostream & | writeFilter (std::ostream &out, const std::vector< bool > &v) const |
| | Write the filter vector to the given output stream.
|
| |
| std::ostream & | writePermutation (std::ostream &out, const Permutation &P) const |
| | Write the given permutation to the output stream.
|
| |
| const Field & | field () |
| |
| Matrix & | kthGaussJordan (unsigned int &r, typename Field::Element &d, unsigned int k, unsigned int s, unsigned int m, const typename Field::Element &d0) |
| |
| template<class Matrix1> |
| Matrix1 & | setIN (Matrix1 &A) const |
| |
| template<class Matrix1> |
| Matrix1 & | adddIN (Matrix1 &A, const typename Field::Element &d) const |
| |
| void | cleanPriorityIndexList (std::list< unsigned int > &list, std::vector< bool > &S, std::vector< bool > &old_S) const |
| |
| template<class Iterator> |
| std::vector< bool > & | permute (std::vector< bool > &v, Iterator P_start, Iterator P_end) const |
| |
| Permutation & | buildPermutation (Permutation &P, const std::list< unsigned int > &pidx) const |
| |
| Permutation & | buildMinimalPermutation (Permutation &P, unsigned int rank, unsigned int dim, const Permutation &Pold) |
| |
| Permutation & | buildMinimalPermutationFromProfile (Permutation &P, unsigned int rank, unsigned int dim, const std::vector< unsigned int > &profile) |
| |
template<class
Field, class
Matrix = BlasMatrix<Field>>
class LinBox::Eliminator< Field, Matrix >
Elimination system.
This is the supporting elimination system for a lookahead-based variant of block Lanczos.
template<class
Field, class
Matrix = BlasMatrix<Field>>
Permutation.
A permutation is represented as a vector of pairs, each pair representing a transposition. Thus a permutation requires O(n log n) storage and O(n log n) application time, as opposed to the lower bound of O(n) for both. However, this allows us to decompose a permutation easily into its factors, thus eliminating the need for additional auxillary storage in each level of the Gauss-Jordan transform recursion. Additionally, we expect to use this with dense matrices that are "close to
generic", meaning that the rank should be high and there should be relatively little need for transpositions. In practice, we therefore expect this to beat the vector representation. The use of this representation does not affect the analysis of the Gauss-Jordan transform, since each step where a permutation is applied also requires matrix multiplication, which is strictly more expensive.
template<class Matrix1, class Matrix2, class Matrix3, class Matrix4>
| Matrix1 & gaussJordan |
( |
Matrix1 & | U, |
|
|
std::vector< unsigned int > & | profile, |
|
|
Permutation & | P, |
|
|
Matrix2 & | Tu, |
|
|
Permutation & | Q, |
|
|
Matrix3 & | Tv, |
|
|
unsigned int & | rank, |
|
|
typename Field::Element & | det, |
|
|
const Matrix4 & | A ) |
Perform a Gauss-Jordan transform using a recursive algorithm.
Upon completion, we have UPA = R, where R is of reduced row echelon form
- Parameters
-
| U | Output matrix U |
| P | Output permutation P |
| A | Input matrix A |
| profile | |
| Tu | |
| Q | |
| Tv | |
| rank | |
| det | |
- Returns
- Reference to U