#include <lifting-container.h>
Inheritance diagram for LiftingContainerBase:
Public Types | |
typedef _IMatrix | IMatrix |
typedef _Ring | Ring |
typedef _Ring::Element | Integer |
typedef std::vector< Integer > | IVector |
Public Methods | |
template<class Prime_Type, class Vector1> | LiftingContainerBase (const Ring &R, const IMatrix &A, const Vector1 &b, const Prime_Type &p) |
virtual IVector & | nextdigit (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 Ring & | ring () const |
virtual const Integer & | prime () 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 |
|
Reimplemented in DixonLiftingContainer, WiedemannLiftingContainer, and BlockWiedemannLiftingContainer. |
|
Reimplemented from LiftingContainer. Reimplemented in DixonLiftingContainer, WiedemannLiftingContainer, and BlockWiedemannLiftingContainer. |
|
Reimplemented in DixonLiftingContainer, WiedemannLiftingContainer, and BlockWiedemannLiftingContainer. |
|
Reimplemented from LiftingContainer. Reimplemented in DixonLiftingContainer, WiedemannLiftingContainer, and BlockWiedemannLiftingContainer. |
|
|
|
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; } |
|
|
|
|
|
Implements LiftingContainer. |
|
Implemented in DixonLiftingContainer, WiedemannLiftingContainer, and BlockWiedemannLiftingContainer. |
|
|
|
Implements LiftingContainer. |
|
Implements LiftingContainer. |
|
Implements LiftingContainer. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|