oil_spill/get_basis.sage.py
2023-07-02 03:26:39 -04:00

86 lines
1.9 KiB
Python

# This file was *autogenerated* from the file get_basis.sage
from sage.all_cmdline import * # import sage library
_sage_const_3301 = Integer(3301); _sage_const_8 = Integer(8); _sage_const_20 = Integer(20); _sage_const_0 = Integer(0); _sage_const_1 = Integer(1); _sage_const_2 = Integer(2)
from random import randint
from tqdm import tqdm
F = GF(_sage_const_3301 , names=("z", ))
f_a = list(F)
# m = 32
# n = 80
# m = 44
# n = 112
# m = 72
# n = 184
m = _sage_const_8
n = _sage_const_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(_sage_const_0 , len(P1.rows())):
for k in range(_sage_const_0 , j):
P1[j, k] = _sage_const_0
P2 = random_matrix(F, (n - m), m)
P3 = -O.T * P1 * O - O.T * P2
for j in range(_sage_const_0 , len(P3.rows())):
for k in range(j+_sage_const_1 , len(P3.rows())):
P3[j, k] += P3[k, j]
P3[k, j] = _sage_const_0
for i in P1:
for j in i:
output += hex(f_a.index(j))[_sage_const_2 :]
for i in P2:
for j in i:
output += hex(f_a.index(j))[_sage_const_2 :]
for i in P3:
for j in i:
output += hex(f_a.index(j))[_sage_const_2 :]
P = block_matrix([ [P1, P2], [z, P3]])
poly_m.append(P)
v = matrix(F, n, _sage_const_1 , [randint(_sage_const_0 , _sage_const_1 ) for i in range(n)])
oil_basis = block_matrix(F, _sage_const_2 , _sage_const_1 , [O, identity_matrix(F, m)])
hint = [zero_matrix(F, n, _sage_const_1 ) for i in range(_sage_const_1 )]
value = zero_matrix(F, n, _sage_const_1 )
for i in oil_basis.columns():
for j in range(len(hint)):
hint[j] += F.random_element() * matrix(F, n, _sage_const_1 , list(i))
value += F.random_element() * matrix(F, n, _sage_const_1 , list(i))
for P in poly_m:
print(value.T * (P + P.T) * hint[_sage_const_0 ])