Main Page   Modules   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

LiftingContainerBase Class Template Reference

#include <lifting-container.h>

Inheritance diagram for LiftingContainerBase:

LiftingContainer BlockWiedemannLiftingContainer DixonLiftingContainer WiedemannLiftingContainer List of all members.

template<class _Ring, class _IMatrix>
class LinBox::LiftingContainerBase< _Ring, _IMatrix >


Public Types

typedef _IMatrix IMatrix
typedef _Ring Ring
typedef _Ring::Element Integer
typedef std::vector< IntegerIVector

Public Methods

template<class Prime_Type, class Vector1>  LiftingContainerBase (const Ring &R, const IMatrix &A, const Vector1 &b, const Prime_Type &p)
virtual IVectornextdigit (IVector &, const IVector &) const=0
const_iterator begin () const
const_iterator end () const
virtual const size_t length () const
virtual const size_t size () const
virtual const Ringring () const
virtual const Integerprime () const
const Integer numbound () const
const Integer denbound () const

Protected Attributes

const IMatrix_A
Ring _R
Integer _p
IVector _b
VectorDomain< Ring_VDR
size_t _length
Integer _numbound
Integer _denbound
MatrixApplyDomain< Ring, IMatrix_MAD

Member Typedef Documentation

typedef _IMatrix IMatrix
 

Reimplemented in DixonLiftingContainer, WiedemannLiftingContainer, and BlockWiedemannLiftingContainer.

typedef _Ring::Element Integer
 

Reimplemented from LiftingContainer.

Reimplemented in DixonLiftingContainer, WiedemannLiftingContainer, and BlockWiedemannLiftingContainer.

typedef std::vector<Integer> IVector
 

Reimplemented in DixonLiftingContainer, WiedemannLiftingContainer, and BlockWiedemannLiftingContainer.

typedef _Ring Ring
 

Reimplemented from LiftingContainer.

Reimplemented in DixonLiftingContainer, WiedemannLiftingContainer, and BlockWiedemannLiftingContainer.


Constructor & Destructor Documentation

LiftingContainerBase const Ring   R,
const IMatrix   A,
const Vector1 &    b,
const Prime_Type &    p
[inline]
 


Member Function Documentation

const_iterator begin   const [inline]
 

Bit manipulation function for possible use in optimization efficiently pulls out continuous blocks of bits, from lsb to msb inclusive least significant bits start at index 0, so msb >= lsb if any bits with index >= 8*numBytes are asked for they will be zeroes static long long bytesToBits(unsigned char * byteArray, size_t numBytes, size_t lsb, size_t msb) { linbox_check(msb >= lsb); size_t lsbi = lsb >> 3; size_t msbi = msb >> 3; if (msbi == lsbi) if (msbi >= numBytes) return 0; else return (byteArray[lsbi] >> (lsb & 7)) & ((1 << (msb - lsb + 1)) - 1);

long long result = (msbi < numBytes) ? (byteArray[msbi] & ((1 << ((msb & 7)+1)) - 1)) : 0; for (size_t i=msbi-1; i>lsbi; i--) { result <<= 8; result |= (i < numBytes) ? byteArray[i] : 0; } result <<= 8 - (lsb & 7); result |= (lsbi < numBytes) ? (byteArray[lsbi] >> (lsb & 7)) : 0;

return result; }

const Integer denbound   const [inline]
 

const_iterator end   const [inline]
 

virtual const size_t length   const [inline, virtual]
 

Implements LiftingContainer.

virtual IVector& nextdigit IVector  ,
const IVector  
const [pure virtual]
 

Implemented in DixonLiftingContainer, WiedemannLiftingContainer, and BlockWiedemannLiftingContainer.

const Integer numbound   const [inline]
 

virtual const Integer& prime   const [inline, virtual]
 

Implements LiftingContainer.

virtual const Ring& ring   const [inline, virtual]
 

Implements LiftingContainer.

virtual const size_t size   const [inline, virtual]
 

Implements LiftingContainer.


Member Data Documentation

const IMatrix& _A [protected]
 

IVector _b [protected]
 

Integer _denbound [protected]
 

size_t _length [protected]
 

MatrixApplyDomain<Ring,IMatrix> _MAD [protected]
 

Integer _numbound [protected]
 

Integer _p [protected]
 

Ring _R [protected]
 

VectorDomain<Ring> _VDR [protected]
 


Generated on Mon Jun 20 09:16:57 2005 for linbox by doxygen1.2.18