diff --git a/pac_encoder.hh b/pac_encoder.hh index d2f63ee..c3ab9c0 100644 --- a/pac_encoder.hh +++ b/pac_encoder.hh @@ -20,12 +20,19 @@ class PACEncoder } static bool conv(int *state, bool input) { +#if 0 bool b1 = (*state >> 1) & 1; bool b3 = (*state >> 3) & 1; bool b4 = (*state >> 4) & 1; bool b6 = (*state >> 6) & 1; bool output = input ^ b1 ^ b3 ^ b4 ^ b6; *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; } public: diff --git a/pac_list_decoder.hh b/pac_list_decoder.hh index 10dd82f..2e55df5 100644 --- a/pac_list_decoder.hh +++ b/pac_list_decoder.hh @@ -19,12 +19,19 @@ struct PACListLeaf typedef typename PH::MAP MAP; static bool conv(int *state, bool input) { +#if 0 bool b1 = (*state >> 1) & 1; bool b3 = (*state >> 3) & 1; bool b4 = (*state >> 4) & 1; bool b6 = (*state >> 6) & 1; bool output = input ^ b1 ^ b3 ^ b4 ^ b6; *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; } static MAP rate0(PATH *metric, int *state, TYPE *hard, TYPE *soft)