From 6af9798553c4360fe5080dcdd583d8d3ecd95500 Mon Sep 17 00:00:00 2001 From: Ahmet Inan Date: Sat, 15 Dec 2018 19:42:58 +0100 Subject: [PATCH] calculate first q entries directly --- ldpc_decoder.hh | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/ldpc_decoder.hh b/ldpc_decoder.hh index 90dcb21..defa287 100644 --- a/ldpc_decoder.hh +++ b/ldpc_decoder.hh @@ -208,20 +208,13 @@ public: for (int g = 0; TABLE::LEN[g]; ++g) { int bit_deg = TABLE::DEG[g]; for (int r = 0; r < TABLE::LEN[g]; ++r) { - int acc_pos[bit_deg]; - for (int d = 0; d < bit_deg; ++d) - acc_pos[d] = row_ptr[d]; - row_ptr += bit_deg; - for (int j = 0; j < M; ++j) { - for (int d = 0; d < bit_deg; ++d) { - int n = acc_pos[d]; - if (n < q) - pos[CNC*n+cnc[n]++] = bit_pos; - } - ++bit_pos; - for (int d = 0; d < bit_deg; ++d) - acc_pos[d] = (acc_pos[d] + q) % R; + for (int d = 0; d < bit_deg; ++d) { + int n = row_ptr[d] % q; + int m = row_ptr[d] / q; + pos[CNC*n+cnc[n]++] = bit_pos + (M - m) % M; } + row_ptr += bit_deg; + bit_pos += M; } } }