77 lines
1.3 KiB
Python
77 lines
1.3 KiB
Python
|
from random import randint
|
||
|
from tqdm import tqdm
|
||
|
|
||
|
F = GF(3301, names=("z", ))
|
||
|
|
||
|
f_a = list(F)
|
||
|
|
||
|
# m = 32
|
||
|
# n = 80
|
||
|
|
||
|
# m = 44
|
||
|
# n = 112
|
||
|
|
||
|
# m = 72
|
||
|
# n = 184
|
||
|
|
||
|
m = 8
|
||
|
n = 20
|
||
|
|
||
|
# m = 2
|
||
|
# n = 5
|
||
|
|
||
|
O = random_matrix(F, (n - m), m)
|
||
|
|
||
|
output = ""
|
||
|
poly_m = []
|
||
|
|
||
|
z = zero_matrix(F, m, (n - m))
|
||
|
|
||
|
for i in range(m):
|
||
|
|
||
|
P1 = random_matrix(F, (n - m), (n - m))
|
||
|
|
||
|
for j in range(0, len(P1.rows())):
|
||
|
for k in range(0, j):
|
||
|
P1[j, k] = 0
|
||
|
|
||
|
P2 = random_matrix(F, (n - m), m)
|
||
|
P3 = -O.T * P1 * O - O.T * P2
|
||
|
|
||
|
for j in range(0, len(P3.rows())):
|
||
|
for k in range(j+1, len(P3.rows())):
|
||
|
P3[j, k] += P3[k, j]
|
||
|
P3[k, j] = 0
|
||
|
|
||
|
for i in P1:
|
||
|
for j in i:
|
||
|
output += hex(f_a.index(j))[2:]
|
||
|
|
||
|
for i in P2:
|
||
|
for j in i:
|
||
|
output += hex(f_a.index(j))[2:]
|
||
|
|
||
|
for i in P3:
|
||
|
for j in i:
|
||
|
output += hex(f_a.index(j))[2:]
|
||
|
|
||
|
P = block_matrix([ [P1, P2], [z, P3]])
|
||
|
poly_m.append(P)
|
||
|
|
||
|
v = matrix(F, n, 1, [randint(0, 1) for i in range(n)])
|
||
|
|
||
|
oil_basis = block_matrix(F, 2, 1, [O, identity_matrix(F, m)])
|
||
|
|
||
|
hint = [zero_matrix(F, n, 1) for i in range(1)]
|
||
|
|
||
|
value = zero_matrix(F, n, 1)
|
||
|
|
||
|
for i in oil_basis.columns():
|
||
|
for j in range(len(hint)):
|
||
|
hint[j] += F.random_element() * matrix(F, n, 1, list(i))
|
||
|
value += F.random_element() * matrix(F, n, 1, list(i))
|
||
|
|
||
|
|
||
|
|
||
|
|