RationalSolver< Ring, Field, RandomPrime, DixonTraits > Class Template Reference
partial specialization of p-adic based solver with Dixon algorithm
More...
#include <rational-solver.h>
List of all members.
Public Member Functions |
| RationalSolver (const Ring &r=Ring(), const RandomPrime &rp=RandomPrime(DEFAULT_PRIMESIZE)) |
| RationalSolver (const Prime &p, const Ring &r=Ring(), const RandomPrime &rp=RandomPrime(DEFAULT_PRIMESIZE)) |
template<class IMatrix , class Vector1 , class Vector2 > |
SolverReturnStatus | solve (Vector1 &num, Integer &den, const IMatrix &A, const Vector2 &b, const bool=false, const int maxPrimes=DEFAULT_MAXPRIMES, const SolverLevel level=SL_DEFAULT) const |
template<class IMatrix , class Vector1 , class Vector2 > |
SolverReturnStatus | solve (Vector1 &num, Integer &den, const IMatrix &A, const Vector2 &b, const int maxPrimes, const SolverLevel level=SL_DEFAULT) const |
template<class IMatrix , class Vector1 , class Vector2 > |
SolverReturnStatus | solveNonsingular (Vector1 &num, Integer &den, const IMatrix &A, const Vector2 &b, bool=false, int maxPrimes=DEFAULT_MAXPRIMES) const |
template<class IMatrix , class Vector1 , class Vector2 > |
SolverReturnStatus | solveSingular (Vector1 &num, Integer &den, const IMatrix &A, const Vector2 &b, int maxPrimes=DEFAULT_MAXPRIMES, const SolverLevel level=SL_DEFAULT) const |
template<class IMatrix , class Vector1 , class Vector2 > |
SolverReturnStatus | findRandomSolution (Vector1 &num, Integer &den, const IMatrix &A, const Vector2 &b, int maxPrimes=DEFAULT_MAXPRIMES, const SolverLevel level=SL_DEFAULT) const |
template<class IMatrix , class Vector1 , class Vector2 > |
SolverReturnStatus | monolithicSolve (Vector1 &num, Integer &den, const IMatrix &A, const Vector2 &b, bool makeMinDenomCert, bool randomSolution, int maxPrimes=DEFAULT_MAXPRIMES, const SolverLevel level=SL_DEFAULT) const |
Detailed Description
template<class Ring, class Field, class RandomPrime>
class LinBox::RationalSolver< Ring, Field, RandomPrime, DixonTraits >
partial specialization of p-adic based solver with Dixon algorithm
See the following reference for details on this algorithm:
- John D. Dixon: Exact Solution of linear equations using p-adic expansions. Numerische Mathematik, volume 40, pages 137-141, 1982.
Constructor & Destructor Documentation
RationalSolver |
( |
const Ring & |
r = Ring() , |
|
|
const RandomPrime & |
rp = RandomPrime(DEFAULT_PRIMESIZE) | |
|
) |
| | [inline] |
Constructor
- Parameters:
-
| r,a | Ring, set by default |
| rp,a | RandomPrime generator, set by default |
RationalSolver |
( |
const Prime & |
p, |
|
|
const Ring & |
r = Ring() , |
|
|
const RandomPrime & |
rp = RandomPrime(DEFAULT_PRIMESIZE) | |
|
) |
| | [inline] |
Constructor, trying the prime p first
- Parameters:
-
| p,a | Prime |
| r,a | Ring, set by default |
| rp,a | RandomPrime generator, set by default |
Member Function Documentation
SolverReturnStatus solve |
( |
Vector1 & |
num, |
|
|
Integer & |
den, |
|
|
const IMatrix & |
A, |
|
|
const Vector2 & |
b, |
|
|
const |
bool = false , |
|
|
const int |
maxPrimes = DEFAULT_MAXPRIMES , |
|
|
const SolverLevel |
level = SL_DEFAULT | |
|
) |
| | const [inline] |
Solve a linear system Ax=b over quotient field of a ring
- Parameters:
-
| num,Vector | of numerators of the solution |
| den,The | common denominator. 1/den * num is the rational solution of Ax = b. |
| A,Matrix | of linear system |
| b,Right-hand | side of system |
| maxPrimes,maximum | number of moduli to try |
| level,level | of certification to be used |
- Returns:
- status of solution. if (return != SS_FAILED), and (level >= SL_LASVEGAS), solution is guaranteed correct. SS_FAILED - all primes used were bad SS_OK - solution found. SS_INCONSISTENT - system appreared inconsistent. certificate is in lastCertificate if (level >= SL_CERTIFIED)
SolverReturnStatus solve |
( |
Vector1 & |
num, |
|
|
Integer & |
den, |
|
|
const IMatrix & |
A, |
|
|
const Vector2 & |
b, |
|
|
const int |
maxPrimes, |
|
|
const SolverLevel |
level = SL_DEFAULT | |
|
) |
| | const [inline] |
overload so that the bool 'oldMatrix' argument is not accidentally set to true
SolverReturnStatus solveNonsingular |
( |
Vector1 & |
num, |
|
|
Integer & |
den, |
|
|
const IMatrix & |
A, |
|
|
const Vector2 & |
b, |
|
|
bool |
= false , |
|
|
int |
maxPrimes = DEFAULT_MAXPRIMES | |
|
) |
| | const [inline] |
Solve a nonsingular, square linear system Ax=b over quotient field of a ring
- Parameters:
-
| num,Vector | of numerators of the solution |
| den,The | common denominator. 1/den * num is the rational solution of Ax = b. |
| A,Matrix | of linear system (it must be square) |
| b,Right-hand | side of system |
| maxPrimes,maximum | number of moduli to try |
- Returns:
- status of solution. SS_FAILED - all primes used were bad SS_OK - solution found, guaranteed correct. SS_SINGULAR - system appreared singular mod all primes.
SolverReturnStatus solveSingular |
( |
Vector1 & |
num, |
|
|
Integer & |
den, |
|
|
const IMatrix & |
A, |
|
|
const Vector2 & |
b, |
|
|
int |
maxPrimes = DEFAULT_MAXPRIMES , |
|
|
const SolverLevel |
level = SL_DEFAULT | |
|
) |
| | const [inline] |
Solve a general rectangular linear system Ax=b over quotient field of a ring. If A is known to be square and nonsingular, calling solveNonsingular is more efficient.
- Parameters:
-
| num,Vector | of numerators of the solution |
| den,The | common denominator. 1/den * num is the rational solution of Ax = b. |
| A,Matrix | of linear system |
| b,Right-hand | side of system |
| maxPrimes,maximum | number of moduli to try |
| level,level | of certification to be used |
- Returns:
- status of solution. if (return != SS_FAILED), and (level >= SL_LASVEGAS), solution is guaranteed correct. SS_FAILED - all primes used were bad SS_OK - solution found. SS_INCONSISTENT - system appreared inconsistent. certificate is in lastCertificate if (level >= SL_CERTIFIED)
SolverReturnStatus findRandomSolution |
( |
Vector1 & |
num, |
|
|
Integer & |
den, |
|
|
const IMatrix & |
A, |
|
|
const Vector2 & |
b, |
|
|
int |
maxPrimes = DEFAULT_MAXPRIMES , |
|
|
const SolverLevel |
level = SL_DEFAULT | |
|
) |
| | const [inline] |
Find a random solution of the general linear system Ax=b over quotient field of a ring.
- Parameters:
-
| num,Vector | of numerators of the solution |
| den,The | common denominator. 1/den * num is the rational solution of Ax = b. |
| A,Matrix | of linear system |
| b,Right-hand | side of system |
| maxPrimes,maximum | number of moduli to try |
| level,level | of certification to be used |
- Returns:
- status of solution. if (return != SS_FAILED), and (level >= SL_LASVEGAS), solution is guaranteed correct. SS_FAILED - all primes used were bad SS_OK - solution found. SS_INCONSISTENT - system appreared inconsistent. certificate is in lastCertificate if (level >= SL_CERTIFIED)
SolverReturnStatus monolithicSolve |
( |
Vector1 & |
num, |
|
|
Integer & |
den, |
|
|
const IMatrix & |
A, |
|
|
const Vector2 & |
b, |
|
|
bool |
makeMinDenomCert, |
|
|
bool |
randomSolution, |
|
|
int |
maxPrimes = DEFAULT_MAXPRIMES , |
|
|
const SolverLevel |
level = SL_DEFAULT | |
|
) |
| | const [inline] |
Big solving routine to perform random solving and certificate generation. Same arguments and return as findRandomSolution, except
- Parameters:
-
| num,Vector | of numerators of the solution |
| den,The | common denominator. 1/den * num is the rational solution of Ax = b. |
| randomSolution,parameter | to determine whether to randomize or not (since solveSingular calls this function as well) |
| makeMinDenomCert,determines | whether a partial certificate for the minimal denominator of a rational solution is made |
When (randomSolution == true && makeMinDenomCert == true), If (level == SL_MONTECARLO) this function has the same effect as calling findRandomSolution. If (level >= SL_LASVEGAS && return == SS_OK), lastCertifiedDenFactor contains a certified factor of the min-solution's denominator. If (level >= SL_CERTIFIED && return == SS_OK), lastZBNumer and lastCertificate are updated as well.
The documentation for this class was generated from the following file:
- /build/buildd-linbox_1.1.6~rc0-4-mipsel-7BPpJC/linbox-1.1.6~rc0/linbox/algorithms/rational-solver.h