You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

77 lines
1.3 KiB

def run_test(a, b):
print("\nnew test:")
print(a)
print(b)
c = a*b
print(c)
print(c.list())
n_iters = 100
Q= 65537
print(Q)
N=4
F = GF(Q)
R = QuotientRing(F[x], x^N + 1, names="X")
print(R)
a = R([4,2,1,0])
b = R([1,2,3,4])
run_test(a,b)
# print("Elements of the polynomial ring:")
# for e in R:
# print(e)
# Other:
# ======
#
# t = R.gen()
# a = 0 + t + 2*t^2 + 3*t^3 + 4*t^4 + 5*t^5
# b = 5 + 4*t + 3*t^2 + 2*t^3 + 1*t^4 + 0*t^5
# print("add", a+b)
# print("sub", a-b)
# print("mul", a*b)
# a = 0 + t + 2*t^2 + 3*t^3 + 4*t^4 + 5*t^5
# print("ring elem mul testvectors")
#
#
# def randvec(size=N):return [int(random()*(Q-1)) for t in range(size)]
#
# a_vecs = [None]*n_iters
# b_vecs = [None]*n_iters
# c_vecs = [None]*n_iters
#
# for i in range(n_iters):
# a_vec = randvec()
# b_vec = randvec()
# a_pol = R(a_vec)
# b_pol = R(b_vec)
#
# c_pol = a_pol*b_pol
#
# a_vecs[i] = a_pol.list()
# b_vecs[i] = b_pol.list()
# c_vecs[i] = c_pol.list()
#
# print("let a_vecs = vec!{};\n".format(a_vecs))
# print("let b_vecs = vec!{};\n".format(b_vecs))
# print("let c_vecs = vec!{};".format(c_vecs))
# # cyclotomic
#
# Q= 65537
# print(Q)
# N=4
# F = GF(Q)
# R = QuotientRing(F[x], x^N - 1, names="X")
# print(R)
#
# a = R([1,0,0,2])
# b = R([0,0,0,2])
# run_test(a, b)