Main Page | Modules | Namespace List | Class Hierarchy | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages

DiophantineSolver Class Template Reference

#include <diophantine-solver.h>


Detailed Description

template<class QSolver>
class LinBox::DiophantineSolver< QSolver >

DiophantineSolver<QSolver> creates a diophantine solver using a QSolver to generate rational solutions Methods solve, randomSolve just expose functions from underlying rational solver. Method diophantineSolve creates a solution with minimal denominator, and can also create a certificate of minimality (described in 'Certified Dense Linear System Solving' by Mulders+Storjohann) which will be left in the public field lastCertificate.


Public Member Functions

 DiophantineSolver (QSolver &rs)
template<class IMatrix, class Vector1, class Vector2> SolverReturnStatus solve (Vector1 &x, Integer &den, const IMatrix &A, const Vector2 &b, const int maxPrimes=DEFAULT_MAXPRIMES, const SolverLevel level=SL_DEFAULT)
template<class IMatrix, class Vector1, class Vector2> SolverReturnStatus randomSolve (Vector1 &x, Integer &den, const IMatrix &A, const Vector2 &b, const int maxPrimes=DEFAULT_MAXPRIMES, const SolverLevel level=SL_DEFAULT)
template<class IMatrix, class Vector1, class Vector2> SolverReturnStatus diophantineSolve (Vector1 &x, Integer &den, const IMatrix &A, const Vector2 &b, const int maxPrimes=DEFAULT_MAXPRIMES, const SolverLevel level=SL_DEFAULT)

Data Fields

int numSolutionsNeeded
int numFailedCallsToSolver
int numRevelantSolutions
VectorFraction< RinglastCertificate

Protected Types

typedef QSolver::RingType Ring
typedef Ring::Element Integer

Protected Attributes

QSolver & _rationalSolver
Ring _R
Integer _rone


Member Typedef Documentation

typedef QSolver::RingType Ring [protected]
 

typedef Ring::Element Integer [protected]
 


Constructor & Destructor Documentation

DiophantineSolver QSolver &  rs  )  [inline]
 


Member Function Documentation

SolverReturnStatus solve Vector1 &  x,
Integer den,
const IMatrix &  A,
const Vector2 &  b,
const int  maxPrimes = DEFAULT_MAXPRIMES,
const SolverLevel  level = SL_DEFAULT
 

Solve a linear system Ax=b over quotient field of a ring

Parameters:
A,Matrix of linear system
x,Vector in which to store solution
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 randomSolve Vector1 &  x,
Integer den,
const IMatrix &  A,
const Vector2 &  b,
const int  maxPrimes = DEFAULT_MAXPRIMES,
const SolverLevel  level = SL_DEFAULT
 

Find a random solution of the general linear system Ax=b over quotient field of a ring.

Parameters:
A,Matrix of linear system
x,Vector in which to store solution
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 diophantineSolve Vector1 &  x,
Integer den,
const IMatrix &  A,
const Vector2 &  b,
const int  maxPrimes = DEFAULT_MAXPRIMES,
const SolverLevel  level = SL_DEFAULT
 

Find a solution of the linear system Ax=b whose denominator (when written as an integer vector over a single denom) is minimal.

Parameters:
A,Matrix of linear system
x,Vector in which to store solution
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 if (return == SS_OK) and (level >= SL_LASVEGAS), solution is guaranteed minimal. SS_FAILED - all primes used were bad SS_OK - solution found. certificate of minimality is in lastCertificate if (level >= SL_CERTIFIED) SS_INCONSISTENT - system appreared inconsistent. certificate of inconsistency is in lastCertificate if (level >= SL_CERTIFIED)

status of solution - OK, FAILED, SINGULAR, INCONSISTENT, BAD_PRECONDITIONER


Field Documentation

QSolver& _rationalSolver [protected]
 

Ring _R [protected]
 

Integer _rone [protected]
 

int numSolutionsNeeded [mutable]
 

int numFailedCallsToSolver [mutable]
 

int numRevelantSolutions [mutable]
 

VectorFraction<Ring> lastCertificate
 


Generated on Fri Jul 8 10:29:45 2005 for linbox by doxygen 1.3.7