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

VectorFraction Class Template Reference

#include <vector-fraction.h>


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.


Public Types

typedef Domain::Element Element
typedef std::pair< Element,
Element
Fraction
typedef std::vector< FractionFVector
typedef Vector< Domain
>::Dense 
Vector

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
FVectortoFVector (FVector &result) const
VectorFraction< Domain > & simplify ()

Data Fields

Vector numer
Element denom
const Domain & _D
Element zero


Member Typedef Documentation

typedef Domain::Element Element
 

typedef std::pair<Element, Element> Fraction
 

typedef std::vector<Fraction> FVector
 

typedef Vector<Domain>::Dense Vector
 


Constructor & Destructor Documentation

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


Member Function Documentation

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)


Field Documentation

Vector numer
 

Element denom
 

const Domain& _D
 

Element zero
 


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