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

RationalSolver< Ring, Field, RandomPrime, DixonTraits > Class Template Reference

#include <rational-solver.h>

List of all members.


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:


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


Member Function 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

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
 

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
 

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
 

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
 

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
 

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:
Generated on Thu Feb 8 22:32:57 2007 for linbox by doxygen 1.3.4