arnaucube
arnaucube/fhe-studyPublic Self-hosted repository
fhe-study/arith/sage/ring.sage
arith/sage/ring.sageRaw
 1def run_test(a, b):
 2	print("\nnew test:")
 3	print(a)
 4	print(b)
 5	c = a*b
 6	print(c)
 7	print(c.list())
 8
 9
10
11n_iters = 100
12Q= 65537
13print(Q)
14N=4
15F = GF(Q)
16R = QuotientRing(F[x], x^N + 1, names="X")
17print(R)
18
19a = R([4,2,1,0])
20b = R([1,2,3,4])
21run_test(a,b)
22
23
24#  print("Elements of the polynomial ring:")
25#  for e in R:
26#      print(e)
27
28
29# Other:
30# ======
31#
32#  t = R.gen()
33#  a =  0 + t   + 2*t^2 + 3*t^3 + 4*t^4 + 5*t^5
34#  b =  5 + 4*t + 3*t^2 + 2*t^3 + 1*t^4 + 0*t^5
35#  print("add", a+b)
36#  print("sub", a-b)
37#  print("mul", a*b)
38#  a =  0 + t   + 2*t^2 + 3*t^3 + 4*t^4 + 5*t^5
39
40# print("ring elem mul testvectors")
41#
42#
43# def randvec(size=N):return [int(random()*(Q-1)) for t in range(size)]
44#
45# a_vecs = [None]*n_iters
46# b_vecs = [None]*n_iters
47# c_vecs = [None]*n_iters
48#
49# for i in range(n_iters):
50#     a_vec = randvec()
51#     b_vec = randvec()
52#     a_pol = R(a_vec)
53#     b_pol = R(b_vec)
54#
55#     c_pol = a_pol*b_pol
56#
57#     a_vecs[i] = a_pol.list()
58#     b_vecs[i] = b_pol.list()
59#     c_vecs[i] = c_pol.list()
60#
61# print("let a_vecs = vec!{};\n".format(a_vecs))
62# print("let b_vecs = vec!{};\n".format(b_vecs))
63# print("let c_vecs = vec!{};".format(c_vecs))
64
65
66# # cyclotomic
67# 
68# Q= 65537
69# print(Q)
70# N=4
71# F = GF(Q)
72# R = QuotientRing(F[x], x^N - 1, names="X")
73# print(R)
74# 
75# a = R([1,0,0,2])
76# b = R([0,0,0,2])
77# run_test(a, b)