def decode()

in python3/frodokem.py [0:0]


    def decode(self, K):
        """Decode a mod-q integer matrix into a bitstring (represented in Python 
        as a bytes object) (FrodoKEM specification, Algorithm 2)"""
        k = bitstring.BitArray(length=self.B * self.mbar * self.nbar)
        # 1. for i = 0; i < mbar; i += 1
        for i in range(self.mbar):
            # 2. for j = 0; j < nbar; j += 1
            for j in range(self.nbar):
                # 3. tmp = dc(K[i][j]) = round(K[i][j] * 2^B / q) mod 2^B
                tmp = round(K[i][j] * (2 ** self.B) / self.q) % (2 ** self.B)
                # 4. tmp' = sum_{l=0}^{B-1} tmp_l * 2^l
                tmpbits = [0 for l in range(self.B)]
                for l in range(self.B):
                    tmpbits[l] = tmp % 2
                    tmp >>= 1
                # 5. for l = 0; l < B; l += 1
                for l in range(self.B):
                    # 6. k[(i*nbar+j)*B+l] = tmpbits[l]
                    k.set(tmpbits[l], (i * self.nbar + j) * self.B + l)
        return FrodoKEM.__bit_array_to_bytes(k)