let's try the recursive scrambler again

This commit is contained in:
Ahmet Inan 2025-12-23 17:14:47 +01:00
commit ba75e9e40e
2 changed files with 14 additions and 0 deletions

View file

@ -20,12 +20,19 @@ class PACEncoder
} }
static bool conv(int *state, bool input) static bool conv(int *state, bool input)
{ {
#if 0
bool b1 = (*state >> 1) & 1; bool b1 = (*state >> 1) & 1;
bool b3 = (*state >> 3) & 1; bool b3 = (*state >> 3) & 1;
bool b4 = (*state >> 4) & 1; bool b4 = (*state >> 4) & 1;
bool b6 = (*state >> 6) & 1; bool b6 = (*state >> 6) & 1;
bool output = input ^ b1 ^ b3 ^ b4 ^ b6; bool output = input ^ b1 ^ b3 ^ b4 ^ b6;
*state = ((*state & 126) << 1) | (input ? 2 : 0) | (output ? 1 : 0); *state = ((*state & 126) << 1) | (input ? 2 : 0) | (output ? 1 : 0);
#else
bool s1 = *state & 1;
bool s2 = *state & 2;
bool output = input ^ s1 ^ s2;
*state = (s1 << 1) | output;
#endif
return output; return output;
} }
public: public:

View file

@ -19,12 +19,19 @@ struct PACListLeaf
typedef typename PH::MAP MAP; typedef typename PH::MAP MAP;
static bool conv(int *state, bool input) static bool conv(int *state, bool input)
{ {
#if 0
bool b1 = (*state >> 1) & 1; bool b1 = (*state >> 1) & 1;
bool b3 = (*state >> 3) & 1; bool b3 = (*state >> 3) & 1;
bool b4 = (*state >> 4) & 1; bool b4 = (*state >> 4) & 1;
bool b6 = (*state >> 6) & 1; bool b6 = (*state >> 6) & 1;
bool output = input ^ b1 ^ b3 ^ b4 ^ b6; bool output = input ^ b1 ^ b3 ^ b4 ^ b6;
*state = ((*state & 126) << 1) | (input ? 2 : 0) | (output ? 1 : 0); *state = ((*state & 126) << 1) | (input ? 2 : 0) | (output ? 1 : 0);
#else
bool s1 = *state & 1;
bool s2 = *state & 2;
bool output = input ^ s1 ^ s2;
*state = (s1 << 1) | output;
#endif
return output; return output;
} }
static MAP rate0(PATH *metric, int *state, TYPE *hard, TYPE *soft) static MAP rate0(PATH *metric, int *state, TYPE *hard, TYPE *soft)