From f83c7858676dbe893a0092e89e1e5a2619e62953 Mon Sep 17 00:00:00 2001 From: Ahmet Inan Date: Tue, 9 Jun 2020 22:09:56 +0200 Subject: [PATCH] skip metric computation if same as last word --- short_bch_code_decoder.hh | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/short_bch_code_decoder.hh b/short_bch_code_decoder.hh index ae3ab69..ac1dbb5 100644 --- a/short_bch_code_decoder.hh +++ b/short_bch_code_decoder.hh @@ -75,12 +75,14 @@ public: for (int j = 0; j < N; ++j) { int tmp = 1 << j; int dec = (*this)(cw ^ tmp); + if (dec == word) + continue; int met = metric(code, dec); if (met > best) { next = best; best = met; word = dec; - } else if (word != dec && met > next) { + } else if (met > next) { next = met; } } @@ -111,12 +113,14 @@ public: for (int i = 0; i < num; ++i) tmp |= ((j>>i)&1) << worst[i]; int dec = (*this)(cw ^ tmp); + if (dec == word) + continue; int met = metric(code, dec); if (met > best) { next = best; best = met; word = dec; - } else if (word != dec && met > next) { + } else if (met > next) { next = met; } } @@ -125,12 +129,14 @@ public: if (0) { for (int msg = 0; msg < W; ++msg) { int enc = (msg << P) | par[msg]; + if (enc == word) + continue; int met = metric(code, enc); if (met > best) { next = best; best = met; word = enc; - } else if (word != enc && met > next) { + } else if (met > next) { next = met; } }