From 595cf80cc5e31fcaa871766a231113908c2f2f08 Mon Sep 17 00:00:00 2001 From: Ahmet Inan Date: Fri, 21 Apr 2023 09:00:19 +0200 Subject: [PATCH] degree of poly is always larger than of the element --- galois_field.hh | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/galois_field.hh b/galois_field.hh index 8ac3713..b54229c 100644 --- a/galois_field.hh +++ b/galois_field.hh @@ -393,14 +393,19 @@ GaloisFieldReference rcp(GaloisFieldReference a) { assert(a.v); #if 1 - uint32_t r = POLY, newr = a.v; - uint32_t t = 0, newt = 1; + if (a.v == 1) + return a; + uint32_t newr = POLY, r = a.v; + uint32_t newt = 0, t = 1; auto degree = [](uint32_t a) { int d = 0; while (a >>= 1) ++d; return d; }; + int j = M - degree(r); + newr ^= r << j; + newt ^= t << j; while (newr != 1) { int j = degree(newr) - degree(r); if (j < 0) {