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

WiedemannSolver Class Template Reference

#include <wiedemann.h>

List of all members.


Detailed Description

template<class Field>
class LinBox::WiedemannSolver< Field >

Linear system solvers based on Wiedemann's method.

This class encapsulates all of the functionality for linear system solving with Wiedemann's algorithm. It includes the random solution and random nullspace element of Kaltofen and Saunders (1991), as well as the certificate of inconsistency of Giesbrecht, Lobo, and Saunders (1998).


Public Types

enum  ReturnStatus
 { OK, FAILED, SINGULAR, INCONSISTENT, BAD_PRECONDITIONER }


Public Member Functions

 WiedemannSolver (const Field &F, const WiedemannTraits &traits)
 WiedemannSolver (const Field &F, const WiedemannTraits &traits, typename Field::RandIter r)
template<class Blackbox, class Vector> ReturnStatus solve (const Blackbox &A, Vector &x, const Vector &b, Vector &u)
template<class Blackbox, class Vector> ReturnStatus solveNonsingular (const Blackbox &A, Vector &x, const Vector &b, bool useRandIter=false)
template<class Blackbox, class Vector> ReturnStatus solveSingular (const Blackbox &A, Vector &x, const Vector &b, Vector &u, unsigned long r)
template<class Blackbox, class Vector, class Prec1, class Prec2> ReturnStatus findRandomSolution (const Blackbox &A, Vector &x, const Vector &b, size_t r, const Prec1 *P, const Prec2 *Q)
template<class Blackbox, class Vector> ReturnStatus findNullspaceElement (Vector &x, const Blackbox &A)
template<class Blackbox, class Vector> bool certifyInconsistency (Vector &u, const Blackbox &A, const Vector &b)


Constructor & Destructor Documentation

WiedemannSolver const Field &  F,
const WiedemannTraits &  traits
[inline]
 

Constructor

Parameters:
F Field over which to operate
traits SolverTraits} structure describing user options for the solver

WiedemannSolver const Field &  F,
const WiedemannTraits &  traits,
typename Field::RandIter  r
[inline]
 

Constructor with a random iterator

Parameters:
F Field over which to operate
traits SolverTraits} structure describing user options for the solver
r Random iterator to use for randomization


Member Function Documentation

ReturnStatus solve const Blackbox &  A,
Vector &  x,
const Vector &  b,
Vector &  u
 

Solve a system Ax=b, giving a random solution if the system is singular and consistent, and a certificate of inconsistency (if specified in traits parameter at construction time) otherwise.

Parameters:
A Black box of linear system
x Vector in which to store solution
b Right-hand side of system
u Vector in which to store certificate of inconsistency
Returns:
Reference to solution vector

ReturnStatus solveNonsingular const Blackbox &  A,
Vector &  x,
const Vector &  b,
bool  useRandIter = false
 

Solve a nonsingular system Ax=b.

This is a "Las Vegas" method, which makes use of randomization. It attempts to certify that the system solution is correct. It will only make one attempt to solve the system before giving up.

Parameters:
A Black box of linear system
x Vector in which to store solution
b Right-hand side of system
useRandIter true if solveNonsingular should use a random iterator for the Krylov sequence computation; false if it should use the right-hand side
Returns:
Reference to solution vector

ReturnStatus solveSingular const Blackbox &  A,
Vector &  x,
const Vector &  b,
Vector &  u,
unsigned long  r
 

Solve a general singular linear system.

Parameters:
A Black box of linear system
x Vector in which to store solution
b Right-hand side of system
u Vector into which certificate of inconsistency will be stored
r Rank of A
Returns:
Return status

ReturnStatus findRandomSolution const Blackbox &  A,
Vector &  x,
const Vector &  b,
size_t  r,
const Prec1 *  P,
const Prec2 *  Q
 

Get a random solution to a singular system Ax=b of rank r with generic rank profile.

Parameters:
A Black box of linear system
x Vector in which to store solution
b Right-hand side of system
r Rank of A
P Left preconditioner (NULL if none needed)
Q Right preconditioner (NULL if none needed)
Returns:
Return status

ReturnStatus findNullspaceElement Vector &  x,
const Blackbox &  A
 

Get a random element of the right nullspace of A.

Parameters:
x Vector in which to store nullspace element
A Black box of which to find nullspace element

bool certifyInconsistency Vector &  u,
const Blackbox &  A,
const Vector &  b
 

Get a certificate u that the given system Ax=b is inconsistent, if one can be found.

Parameters:
u Vector in which to store certificate
A Black box for the linear system
b Right-hand side for the linear system
r Rank of A
P Left preconditioner, if applicable
Returns:
true if a certificate can be found in one iteration; u is filled in with that certificate; and false otherwise


The documentation for this class was generated from the following file:
Generated on Thu Feb 8 22:32:57 2007 for linbox by doxygen 1.3.4