55 :mCoeff(wCoeff),mState(0),
56 mMask((1ULL<<wLen)-1),
57 mLen(wLen),mLen_1(wLen-1)
64 uint64_t
state()
const {
return mState & mMask; }
65 unsigned size()
const {
return mLen; }
74 const unsigned fb = (mState>>(mLen_1)) & 0x01;
75 mState = (mState<<1) ^ (inBit & 0x01);
76 if (fb) mState ^= mCoeff;
85 const unsigned fb = ((mState>>(mLen_1)) ^ inBit) & 0x01;
87 if (fb) mState ^= mCoeff;
105 Parity(uint64_t wCoefficients,
unsigned wParitySize,
unsigned wCodewordSize)
162 char* wStart = this->
begin() + start;
163 char* wEnd = wStart + span;
164 assert(wEnd<=this->
end());
165 #if BITVECTOR_REFCNTS
222 uint64_t
peekField(
size_t readIndex,
unsigned length)
const;
224 uint64_t
readField(
size_t& readIndex,
unsigned length)
const;
226 void fillField(
size_t writeIndex, uint64_t value,
unsigned length);
228 void writeField(
size_t& writeIndex, uint64_t value,
unsigned length);
236 unsigned sum()
const;
245 void pack(
unsigned char*)
const;
248 void pack2(
unsigned char*)
const;
254 void unpack(
const unsigned char*);
257 void hex(std::ostream&)
const;
258 std::string
hexstr()
const;
262 bool unhex(
const char*);
273 printf(
"BitVector::operator=\n");
286 bool bit(
size_t index)
const
289 const char *dp = this->
begin()+index;
290 assert(dp<this->
end());
297 return this->
mStart[index];
303 return this->
mStart[index];
309 char *dp = this->
mStart+index;
310 assert(dp<this->
mEnd);
319 #define BitVector2 BitVector
351 :
Vector<float>(wData,length)
355 :
Vector<float>(wData,wStart,wEnd)
371 float* wStart =
mStart + start;
372 float* wEnd = wStart + span;
399 bool bit(
size_t index)
const
401 const float *dp =
mStart+index;
415 const float *dp =
mStart+index;
void makeAlias(const VectorBase< char > &other)
Definition: Vector.h:157
BitVector(VectorDataType wData, char *wStart, char *wEnd)
Definition: BitVector.h:127
void operator=(const VectorBase< char > &other)
Definition: Vector.h:283
char * mStart
start of useful data
Definition: Vector.h:133
void writeFieldReversed(size_t &writeIndex, uint64_t value, unsigned length)
SoftVector(Vector< float > source)
Definition: BitVector.h:362
void encoderShift(unsigned inBit)
Definition: BitVector.h:83
void vInit(size_t elements)
Definition: Vector.h:137
void clear()
Definition: BitVector.h:60
SoftVector(float *wData, float *wStart, float *wEnd)
Definition: BitVector.h:354
std::string hexstr() const
void pack(unsigned char *) const
BitVector(const BitVector &other1, const BitVector &other2)
Definition: BitVector.h:146
Definition: BitVector.h:97
char * iterator
Definition: BitVector.h:314
void vConcat(const VectorBase< char > &other1, const VectorBase< char > &other2)
Definition: Vector.h:198
const SoftVector head(size_t span) const
Definition: BitVector.h:384
SoftVector tail(size_t start)
Definition: BitVector.h:385
std::ostream & operator<<(std::ostream &, const BitVector &)
void syndromeShift(unsigned inBit)
Definition: BitVector.h:72
bool operator==(const BitVector &other) const
Definition: BitVector.h:120
void fill(const char &val)
Definition: Vector.h:266
BitVector tail(size_t start)
Definition: BitVector.h:189
uint64_t readFieldReversed(size_t &readIndex, unsigned length) const
void unpack(const unsigned char *)
size_t size() const
Definition: Vector.h:170
char * VectorDataType
Definition: Vector.h:130
VectorDataType mData
allocated data block.
Definition: Vector.h:132
float softbit(size_t index) const
Definition: BitVector.h:413
void write1(size_t &writeIndex)
Definition: BitVector.h:231
void dup(BitVector other)
Definition: BitVector.h:268
uint64_t state() const
Definition: BitVector.h:64
void writeParityWord(const BitVector &data, BitVector &parityWordTarget, bool invert=true)
void copyPunctured(BitVector &dst, const unsigned *puncture, const size_t plth)
BitVector head(size_t span)
Definition: BitVector.h:188
const char * begin() const
Definition: Vector.h:306
SoftVector alias()
Definition: BitVector.h:377
Parity(uint64_t wCoefficients, unsigned wParitySize, unsigned wCodewordSize)
Definition: BitVector.h:105
Definition: BitVector.h:333
SoftVector segment(size_t start, size_t span)
Definition: BitVector.h:369
std::string packToString() const
BitVector segment(size_t start, size_t span)
Definition: BitVector.h:160
void write0(size_t &writeIndex)
Definition: BitVector.h:230
BitVector(const BitVector &other)
Definition: BitVector.h:130
void dup(BitVector &other)
Definition: BitVector.h:269
char * mEnd
end of useful data + 1
Definition: Vector.h:134
#define VECTORDEBUG(...)
Definition: Vector.h:40
uint64_t peekFieldReversed(size_t readIndex, unsigned length) const
uint64_t syndrome(Generator &gen) const
const BitVector cloneSegment(size_t start, size_t span) const
Definition: BitVector.h:174
const SoftVector segment(size_t start, size_t span) const
Definition: BitVector.h:380
const char & operator[](size_t index) const
Definition: BitVector.h:300
uint64_t peekField(size_t readIndex, unsigned length) const
SoftVector(size_t wSize=0)
Definition: BitVector.h:338
Vector< T > segment(size_t start, size_t span)
Definition: Vector.h:352
void unknown()
Definition: BitVector.h:396
uint64_t readField(size_t &readIndex, unsigned length) const
void pack2(unsigned char *) const
void unmap(const unsigned *map, size_t mapSize, BitVector &dest) const
uint64_t parity(Generator &gen) const
void clone(const VectorBase< char > &other)
Definition: Vector.h:193
unsigned size() const
Definition: BitVector.h:65
void fillField(size_t writeIndex, uint64_t value, unsigned length)
BitVector(size_t len)
Definition: BitVector.h:142
const SoftVector tail(size_t start) const
Definition: BitVector.h:386
BitVector alias() const
Definition: BitVector.h:184
void fillFieldReversed(size_t writeIndex, uint64_t value, unsigned length)
Generator(uint64_t wCoeff, unsigned wLen)
Definition: BitVector.h:54
Definition: BitVector.h:42
SoftVector(float *wData, unsigned length)
Definition: BitVector.h:350
void zero()
Definition: BitVector.h:198
void hex(std::ostream &) const
BitVector()
Definition: BitVector.h:143
uint64_t syndrome(const BitVector &receivedCodeword)
void settfb(size_t index, float value)
Definition: BitVector.h:421
void writeField(size_t &writeIndex, uint64_t value, unsigned length)
void map(const unsigned *map, size_t mapSize, BitVector &dest) const
bool bit(size_t index) const
Definition: BitVector.h:286
char & operator[](size_t index)
Definition: BitVector.h:294
const char * end() const
Definition: Vector.h:308
float getEnergy(float *low=0) const
void settfb(size_t index, int value)
Definition: BitVector.h:307
const char * const_iterator
Definition: BitVector.h:315
const T * getData() const
Definition: Vector.h:313
unsigned mCodewordSize
Definition: BitVector.h:101
void copyUnPunctured(SoftVector &dst, const unsigned *puncture, const size_t plth)
bool bit(size_t index) const
Definition: BitVector.h:399
SoftVector head(size_t span)
Definition: BitVector.h:383