def test_generate(self): h = 3 N = 35 f = [19, 14, 1] k = 2 X = math.ceil( (pow(2, - 1 / 2) * pow(h * k, -1 / (h * k - 1))) * pow(N, (h - 1) / (h * k - 1))) - 1 degree = 2 ans = [[1225.0, 0, 0, 0, 0, 0], [0.0, 2450.0, 0, 0, 0, 0], [665.0, 980.0, 140.0, 0, 0, 0], [0.0, 1330.0, 1960.0, 280.0, 0, 0], [361.0, 1064.0, 936.0, 224.0, 16.0, 0], [0.0, 722.0, 2128.0, 1872.0, 448.0, 32.0]] self.assertEqual(cs.generate(f, N, h, X, degree), ans)
def test_generate_and_lll(self): h = 3 N = 35 f = [19, 14, 1] degree = 2 k = 2 X = math.ceil( (pow(2, - 1 / 2) * pow(h * k, -1 / (h * k - 1))) * pow(N, (h - 1) / (h * k - 1))) - 1 gen = cs.generate(f, N, h, degree, X) ans = [[3, 8 * 2, -24 * 2 * 2, -8 * pow(2, 3), -1 * pow(2, 4), 2 * pow(2, 5)], [49, 50 * 2, 0 * 2 * 2, 20 * pow(2, 3), 0 * pow(2, 4), 2 * pow(2, 5)], [115, -83 * 2, 4 * 2 * 2, 13 * pow(2, 3), 6 * pow(2, 4), 2 * pow(2, 5)], [61, 16 * 2, 37 * 2 * 2, -16 * pow(2, 3), 3 * pow(2, 4), 4 * pow(2, 5)], [21, -37 * 2, -14 * 2 * 2, 2 * pow(2, 3), 14 * pow(2, 4), -4 * pow(2, 5)], [-201, 4 * 2, 33 * 2 * 2, -4 * pow(2, 3), -3 * pow(2, 4), 1 * pow(2, 5)]] self.assertEqual(cs.lll(gen), ans)