linbox  1
Public Member Functions
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:


Constructor & Destructor Documentation

RationalSolver ( const Ring &  r = Ring(),
const RandomPrime &  rp = RandomPrime(DEFAULT_PRIMESIZE) 
) [inline]

Constructor

Parameters:
r,aRing, set by default
rp,aRandomPrime 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,aPrime
r,aRing, set by default
rp,aRandomPrime 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

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

Parameters:
num,Vectorof numerators of the solution
den,Thecommon denominator. 1/den * num is the rational solution of Ax = b.
A,Matrixof linear system
b,Right-handside of system
maxPrimes,maximumnumber of moduli to try
level,levelof 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,Vectorof numerators of the solution
den,Thecommon denominator. 1/den * num is the rational solution of Ax = b.
A,Matrixof linear system (it must be square)
b,Right-handside of system
maxPrimes,maximumnumber 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,Vectorof numerators of the solution
den,Thecommon denominator. 1/den * num is the rational solution of Ax = b.
A,Matrixof linear system
b,Right-handside of system
maxPrimes,maximumnumber of moduli to try
level,levelof 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,Vectorof numerators of the solution
den,Thecommon denominator. 1/den * num is the rational solution of Ax = b.
A,Matrixof linear system
b,Right-handside of system
maxPrimes,maximumnumber of moduli to try
level,levelof 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,Vectorof numerators of the solution
den,Thecommon denominator. 1/den * num is the rational solution of Ax = b.
randomSolution,parameterto determine whether to randomize or not (since solveSingular calls this function as well)
makeMinDenomCert,determineswhether 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: