|
linbox 1
|
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>
Public Member Functions | |
| VectorFraction (const Domain &D, FVector &frac) | |
| VectorFraction (const Domain &D, size_t n) | |
| VectorFraction (const VectorFraction< Domain > &VF) | |
| void | copy (const VectorFraction< Domain > &VF) |
| void | clearAndResize (size_t size) |
| bool | combineSolution (const VectorFraction< Domain > &other) |
| bool | boundedCombineSolution (const VectorFraction< Domain > &other, const Element &denBound, Element &g) |
| bool | combineCertificate (const VectorFraction< Domain > &other, Element &n1, Element &d1, const Element &n2, const Element d2) |
| VectorFraction< Domain > & | axpyin (Element &a, const VectorFraction< Domain > &x) |
| std::ostream & | write (std::ostream &os) const |
| FVector & | toFVector (FVector &result) const |
| VectorFraction< Domain > & | simplify () |
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.
| VectorFraction | ( | const Domain & | D, |
| FVector & | frac | ||
| ) | [inline] |
constructor from vector of rational numbers reduces individual pairs in-place first unless alreadyReduced=true
| VectorFraction | ( | const Domain & | D, |
| size_t | n | ||
| ) | [inline] |
allocating constructor, returns [0, 0, ... 0]/1
| VectorFraction | ( | const VectorFraction< Domain > & | VF | ) | [inline] |
copy constructor
| void copy | ( | const VectorFraction< Domain > & | VF | ) | [inline] |
copy without construction
| void clearAndResize | ( | size_t | size | ) | [inline] |
clear and resize without construction
| bool combineSolution | ( | const VectorFraction< Domain > & | other | ) | [inline] |
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)
| VectorFraction<Domain>& axpyin | ( | Element & | a, |
| const VectorFraction< Domain > & | x | ||
| ) | [inline] |
this += a * x. performs a rational axpy with an integer multiplier returns (*this)
| std::ostream& write | ( | std::ostream & | os | ) | const [inline] |
write to a stream
| FVector& toFVector | ( | FVector & | result | ) | const [inline] |
convert to 'answer' type of lifting container
| VectorFraction<Domain>& simplify | ( | ) | [inline] |
reduces to simplest form, returns (*this)
1.7.4