From: Jacob Lifshay Date: Tue, 15 Mar 2022 05:24:12 +0000 (-0700) Subject: move pack/unpack_poly to separate file X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=8673a1aab78e5be0caf28faec0e42fd9186d795b;p=nmutil.git move pack/unpack_poly to separate file --- diff --git a/pack_poly.py b/pack_poly.py new file mode 100644 index 0000000..f5ab644 --- /dev/null +++ b/pack_poly.py @@ -0,0 +1,19 @@ +"""Polynomials with GF(2) coefficients.""" + + +def pack_poly(poly): + """`poly` is a list where `poly[i]` is the coefficient for `x ** i`""" + retval = 0 + for i, v in enumerate(poly): + retval |= v << i + return retval + + +def unpack_poly(v): + """returns a list `poly`, where `poly[i]` is the coefficient for `x ** i`. + """ + poly = [] + while v != 0: + poly.append(v & 1) + v >>= 1 + return poly