#include <wiedemann.h>
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
|
|
Constructor with a random iterator
|
|
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.
|
|
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.
|
|
Solve a general singular linear system.
|
|
Get a random solution to a singular system Ax=b of rank r with generic rank profile.
|
|
Get a random element of the right nullspace of A.
|
|
Get a certificate u that the given system Ax=b is inconsistent, if one can be found.
|