in python3/frodokem.py [0:0]
def unpack(self, b, n1, n2):
"""Unpack a bitstring (represented in Python as a bytes object) into a
matrix mod q (FrodoKEM specification, Algorithm 4)"""
C = [[0 for j in range(n2)] for i in range(n1)]
bbits = bitstring.Bits(b)
# 1. for i = 0; i < n1; i += 1
for i in range(n1):
# 2. for j = 0; j < n2; j += 1
for j in range(n2):
# 3. Cij = sum_{l=0}^{D-1} b_{(i*n2+j)*D+l} * 2^{D-1-l}
for l in range(self.D):
if bbits[(i * n2 + j) * self.D + l]: C[i][j] += 2 ** (self.D - 1 - l)
return C