linbox
DixonSolver< Ring, Field, RandomPrime, MethodTraits > Class Template Reference

Interface for the different specialization of p-adic lifting based solvers. More...

#include <rational-solver.h>

Public Member Functions

template<class IMatrix, class Vector1, class Vector2>
SolverReturnStatus solve (Vector1 &num, Integer &den, const IMatrix &A, const Vector2 &b, const bool side, int maxPrimes=5) const
 Solve a linear system Ax=b over quotient field of a ring giving a random solution if the system is singular and consistent, giving the unique solution if the system is non-singular.
 
template<class IMatrix, class Vector1, class Vector2>
SolverReturnStatus solveNonsingular (Vector1 &num, Integer &den, const IMatrix &A, const Vector2 &b, int maxPrimes=5) const
 Solve a nonsingular linear system Ax=b over quotient field of a ring, giving the unique solution of the system.
 
template<class IMatrix, class Vector1, class Vector2>
SolverReturnStatus solveSingular (Vector1 &num, Integer &den, const IMatrix &A, const Vector2 &b, int maxPrimes=5) const
 brief Solve a singular linear system Ax=b over quotient field of a ring, giving a random solution if the system is singular and consistent.
 

Detailed Description

template<class Ring, class Field, class RandomPrime, class MethodTraits = Method::DenseElimination>
class LinBox::DixonSolver< Ring, Field, RandomPrime, MethodTraits >

Interface for the different specialization of p-adic lifting based solvers.

The following type are abstract in the implementation and can be change during the instanciation of the class:

  • Ring: ring over which entries are defined
  • Field: finite field for p-adic lifting
  • RandomPrime: generator of random primes
  • MethodTraits: type of subalgorithm to use in p-adic lifting (default is Method::DenseElimination)
Examples
examples/dixonsolve.C.

Member Function Documentation

◆ solve()

template<class Ring, class Field, class RandomPrime, class MethodTraits = Method::DenseElimination>
template<class IMatrix, class Vector1, class Vector2>
SolverReturnStatus solve ( Vector1 & num,
Integer & den,
const IMatrix & A,
const Vector2 & b,
const bool side,
int maxPrimes = 5 ) const

Solve a linear system Ax=b over quotient field of a ring giving a random solution if the system is singular and consistent, giving the unique solution if the system is non-singular.

Parameters
numVector of numerators of the solution
denThe common denominator. 1/den * num is the rational solution of Ax=b.
AMatrix of linear system
bRight-hand side of system
maxPrimesmaximum number of moduli to try
side
Returns
status of solution
Examples
examples/dixonsolve.C.

◆ solveNonsingular()

template<class Ring, class Field, class RandomPrime, class MethodTraits = Method::DenseElimination>
template<class IMatrix, class Vector1, class Vector2>
SolverReturnStatus solveNonsingular ( Vector1 & num,
Integer & den,
const IMatrix & A,
const Vector2 & b,
int maxPrimes = 5 ) const

Solve a nonsingular linear system Ax=b over quotient field of a ring, giving the unique solution of the system.

Parameters
numVector of numerators of the solution
denThe common denominator. 1/den * num is the rational solution of Ax=b.
AMatrix of linear system
bRight-hand side of system
maxPrimesmaximum number of moduli to try
Returns
status of solution
Examples
examples/dixonsolve.C.

◆ solveSingular()

template<class Ring, class Field, class RandomPrime, class MethodTraits = Method::DenseElimination>
template<class IMatrix, class Vector1, class Vector2>
SolverReturnStatus solveSingular ( Vector1 & num,
Integer & den,
const IMatrix & A,
const Vector2 & b,
int maxPrimes = 5 ) const

brief Solve a singular linear system Ax=b over quotient field of a ring, giving a random solution if the system is singular and consistent.

Parameters
numVector of numerators of the solution
denThe common denominator. 1/den * num is the rational solution of Ax=b.
AMatrix of linear system
bRight-hand side of system
maxPrimesmaximum number of moduli to try
Returns
status of solution

The documentation for this class was generated from the following file: