VectorFraction<Domain> is a vector of rational elements with common reduced denominator. Here Domain is a ring supporting the gcd, eg NTL_ZZ or PID_integer For compatability with the return type of rationalSolver, it allows conversion from/to std::vector<std::pair<Domain::Element> >. All functions will return the fraction in reduced form, calling reduce() if necessary.
More...
#include <vector-fraction.h>
List of all members.
Detailed Description
template<class Domain>
class LinBox::VectorFraction< Domain >
VectorFraction<Domain> is a vector of rational elements with common reduced denominator. Here Domain is a ring supporting the gcd, eg NTL_ZZ or PID_integer For compatability with the return type of rationalSolver, it allows conversion from/to std::vector<std::pair<Domain::Element> >. All functions will return the fraction in reduced form, calling reduce() if necessary.
Constructor & Destructor Documentation
constructor from vector of rational numbers reduces individual pairs in-place first unless alreadyReduced=true
allocating constructor, returns [0, 0, ... 0]/1
Member Function Documentation
copy without construction
void clearAndResize |
( |
size_t |
size | ) |
|
|
inline |
clear and resize without construction
Replaces *this with a linear combination of *this and other such that the result has denominator == gcd(this->denom, other.denom) see Mulders+Storjohann : 'Certified Dense Linear System Solving' Lemma 2.1 return value of true means that there was some improvement (ie denom was reduced)
bool boundedCombineSolution |
( |
const VectorFraction< Domain > & |
other, |
|
|
const Element & |
denBound, |
|
|
Element & |
g |
|
) |
| |
|
inline |
Adds in-place to *this a multiple of other such that the result has gcd(denominator, denBound) == gcd(this->denom, other.denom, denBound) see Mulders+Storjohann : 'Certified Dense Linear System Solving' Lemma 6.1 return value of true means that there was some improvement (ie gcd(denom, denBound) was reduced) g is gcd(denom, denBound), and is updated by this function when there is improvement
bool combineCertificate |
( |
const VectorFraction< Domain > & |
other, |
|
|
Element & |
n1, |
|
|
Element & |
d1, |
|
|
const Element & |
n2, |
|
|
const Element |
d2 |
|
) |
| |
|
inline |
Adds in-place to *this a multiple of other to create an improved certificate ("z") n1/d1 = *this . b, n2/d2 = other . b in reduced form n1/d1 are updated so that new denominator is lcm(d1, d2); see Mulders+Storjohann : 'Certified Dense Linear System Solving' Lemma 6.2 return value of true means that there was some improvement (ie d1 was increased)
this += a * x. performs a rational axpy with an integer multiplier returns (*this)
std::ostream& write |
( |
std::ostream & |
os | ) |
const |
|
inline |
FVector& toFVector |
( |
FVector & |
result | ) |
const |
|
inline |
convert to 'answer' type of lifting container
reduces to simplest form, returns (*this)
The documentation for this class was generated from the following file:
- /build/linbox-TzW5I9/linbox-1.1.6~rc0/linbox/algorithms/vector-fraction.h