diff --git a/ldpc_decoder.hh b/ldpc_decoder.hh index 577f150..8303819 100644 --- a/ldpc_decoder.hh +++ b/ldpc_decoder.hh @@ -66,10 +66,15 @@ class LDPCDecoder } static void cnp(TYPE *out, const TYPE *inp, int cnt) { - auto beta = vunsigned(vdup(BETA)); TYPE mags[cnt]; for (int i = 0; i < cnt; ++i) - mags[i] = vsigned(vqsub(vunsigned(vqabs(inp[i])), beta)); + mags[i] = vqabs(inp[i]); + + if (BETA) { + auto beta = vunsigned(vdup(BETA)); + for (int i = 0; i < cnt; ++i) + mags[i] = vsigned(vqsub(vunsigned(mags[i]), beta)); + } TYPE mins[2]; mins[0] = vmin(mags[0], mags[1]); diff --git a/ldpc_decoder2.hh b/ldpc_decoder2.hh index f3bb076..29aea52 100644 --- a/ldpc_decoder2.hh +++ b/ldpc_decoder2.hh @@ -68,10 +68,15 @@ class LDPCDecoder } static void cnp(TYPE *out, const TYPE *inp, int cnt) { - auto beta = vunsigned(vdup(BETA)); TYPE mags[cnt]; for (int i = 0; i < cnt; ++i) - mags[i] = vsigned(vqsub(vunsigned(vqabs(inp[i])), beta)); + mags[i] = vqabs(inp[i]); + + if (BETA) { + auto beta = vunsigned(vdup(BETA)); + for (int i = 0; i < cnt; ++i) + mags[i] = vsigned(vqsub(vunsigned(mags[i]), beta)); + } TYPE mins[2]; mins[0] = vmin(mags[0], mags[1]);