Main Page   Modules   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

GaussDomain Class Template Reference

#include <gauss.h>

List of all members.


Detailed Description

template<class _Field>
class LinBox::GaussDomain< _Field >

Repository of functions for rank by elimination on sparse matrices. @doc Several versions allow for adjustment of the pivoting strategy and for choosing in-place elimination or for not modifying the input matrix. Also an LU interface is offered.


Public Types

typedef _Field Field
typedef Field::Element Element

Public Methods

 GaussDomain (const Field &F)
 The field parameter is the domain over which to perform computations.

 GaussDomain (const GaussDomain &M)
const Fieldfield ()
template<class Matrix> unsigned long & rankinLinearPivoting (unsigned long &rank, Matrix &A, unsigned long Ni, unsigned long Nj, bool storrows=false)
 Sparse in place Gaussian elimination with reordering to reduce fill-in. @doc pivots are chosen in sparsest column of sparsest row. This runs in linear overhead. It is similar in spirit but different from Markovitz' approach.

template<class Matrix> unsigned long & rankinNoReordering (unsigned long &rank, Matrix &LigneA, unsigned long Ni, unsigned long Nj)
 Sparse Gaussian elimination without reordering. @doc Gaussian elimination is done on a copy of the matrix. Using : SparseFindPivot eliminate.

template<class Matrix> unsigned long & LUin (unsigned long &rank, Matrix &A)
 Dense in place LU factorization without reordering @doc Using : FindPivot and LU.

template<class Matrix> unsigned long & upperin (unsigned long &rank, Matrix &A)
 Dense in place Gaussian elimination without reordering @doc Using : FindPivot and LU.

rank
Callers of the different rank routines\ -/ The "in" suffix indicates in place computation\ -/ Without Ni, Nj, the Matrix parameter must be a vector of sparse row vectors.\ -/ Calls rankinLinearPivoting (by default) or rankinNoReordering

template<class Matrix> unsigned long & rankin (unsigned long &rank, Matrix &A, SparseEliminationTraits::PivotStrategy reord=SparseEliminationTraits::PIVOT_LINEAR, bool storrows=false)
template<class Matrix> unsigned long & rankin (unsigned long &rank, Matrix &A, unsigned long Ni, unsigned long Nj, SparseEliminationTraits::PivotStrategy reord=SparseEliminationTraits::PIVOT_LINEAR, bool storrows=false)
template<class Matrix> unsigned long & rank (unsigned long &rank, const Matrix &A, SparseEliminationTraits::PivotStrategy reord=SparseEliminationTraits::PIVOT_LINEAR, bool storrows=false)
template<class Matrix> unsigned long & rank (unsigned long &rank, const Matrix &A, unsigned long Ni, unsigned long Nj, SparseEliminationTraits::PivotStrategy reord=SparseEliminationTraits::PIVOT_LINEAR, bool storrows=false)

Protected Methods

template<class Vector, class D> void eliminate (Vector &lignecourante, const Vector &lignepivot, const unsigned long &indcol, const unsigned long &indpermut, D &columns)
template<class Vector> void eliminate (Vector &lignecourante, const Vector &lignepivot, const unsigned long &indcol, const unsigned long &indpermut)
template<class Vector> void Upper (Vector &lignecur, const Vector &lignepivot, unsigned long indcol, unsigned long indpermut)
template<class Vector> void LU (Vector &lignecur, const Vector &lignepivot, unsigned long indcol, unsigned long indpermut)
template<class Vector, class D> void SparseFindPivot (Vector &lignepivot, unsigned long &indcol, unsigned long &indpermut, D &columns)
template<class Vector> void SparseFindPivot (Vector &lignepivot, unsigned long &indcol, unsigned long &indpermut)
template<class Vector> void FindPivot (Vector &lignepivot, unsigned long &k, unsigned long &indpermut)


Member Typedef Documentation

typedef Field::Element Element
 

typedef _Field Field
 


Constructor & Destructor Documentation

GaussDomain const Field   F [inline]
 

The field parameter is the domain over which to perform computations.

GaussDomain const GaussDomain< _Field > &    M [inline]
 


Member Function Documentation

void eliminate Vector   lignecourante,
const Vector   lignepivot,
const unsigned long &    indcol,
const unsigned long &    indpermut
[protected]
 

void eliminate Vector   lignecourante,
const Vector   lignepivot,
const unsigned long &    indcol,
const unsigned long &    indpermut,
D &    columns
[protected]
 

const Field& field   [inline]
 

accessor for the field of computation

void FindPivot Vector   lignepivot,
unsigned long &    k,
unsigned long &    indpermut
[protected]
 

void LU Vector   lignecur,
const Vector   lignepivot,
unsigned long    indcol,
unsigned long    indpermut
[protected]
 

unsigned long & LUin unsigned long &    rank,
Matrix &    A
 

Dense in place LU factorization without reordering @doc Using : FindPivot and LU.

unsigned long & rank unsigned long &    rank,
const Matrix &    A,
unsigned long    Ni,
unsigned long    Nj,
SparseEliminationTraits::PivotStrategy    reord = SparseEliminationTraits::PIVOT_LINEAR,
bool    storrows = false
 

unsigned long & rank unsigned long &    rank,
const Matrix &    A,
SparseEliminationTraits::PivotStrategy    reord = SparseEliminationTraits::PIVOT_LINEAR,
bool    storrows = false
 

unsigned long & rankin unsigned long &    rank,
Matrix &    A,
unsigned long    Ni,
unsigned long    Nj,
SparseEliminationTraits::PivotStrategy    reord = SparseEliminationTraits::PIVOT_LINEAR,
bool    storrows = false
 

unsigned long & rankin unsigned long &    rank,
Matrix &    A,
SparseEliminationTraits::PivotStrategy    reord = SparseEliminationTraits::PIVOT_LINEAR,
bool    storrows = false
 

unsigned long & rankinLinearPivoting unsigned long &    rank,
Matrix &    A,
unsigned long    Ni,
unsigned long    Nj,
bool    storrows = false
 

Sparse in place Gaussian elimination with reordering to reduce fill-in. @doc pivots are chosen in sparsest column of sparsest row. This runs in linear overhead. It is similar in spirit but different from Markovitz' approach.

\begin{verbatim} Using : SparseFindPivot(..., density) for sparsest column, and eliminate (..., density) \end{verbatim}

The Matrix parameter must meet the LinBox sparse matrix interface. [check details]. The storrows indicates whether the algorithm must keep already computed rows.

@Ref [Jean-Guillaume Dumas and Gilles Villard, Computing the rank of sparse matrices over finite fields. In Ganzha et~al. CASC'2002, pages 47--62.]

unsigned long & rankinNoReordering unsigned long &    rank,
Matrix &    LigneA,
unsigned long    Ni,
unsigned long    Nj
 

Sparse Gaussian elimination without reordering. @doc Gaussian elimination is done on a copy of the matrix. Using : SparseFindPivot eliminate.

Requirements : SLA is an array of sparse rows WARNING : NOT IN PLACE, THERE IS A COPY. Without reordering (Pivot is first non-zero in row)

void SparseFindPivot Vector   lignepivot,
unsigned long &    indcol,
unsigned long &    indpermut
[protected]
 

void SparseFindPivot Vector   lignepivot,
unsigned long &    indcol,
unsigned long &    indpermut,
D &    columns
[protected]
 

void Upper Vector   lignecur,
const Vector   lignepivot,
unsigned long    indcol,
unsigned long    indpermut
[protected]
 

unsigned long & upperin unsigned long &    rank,
Matrix &    A
 

Dense in place Gaussian elimination without reordering @doc Using : FindPivot and LU.


Generated on Mon Jun 20 09:16:57 2005 for linbox by doxygen1.2.18