ark-curves-cherry-picked/bw6_767/scripts/base_field.sage
bw6_767/scripts/base_field.sageRaw
1modulus = 496597749679620867773432037469214230242402307330180853437434581099336634619713640485778675608223760166307530047354464605410050411581079376994803852937842168733702867087556948851016246640584660942486895230518034810309227309966899431
2
3assert(modulus.is_prime())
4
5Fp = GF(modulus)
6
7generator = Fp(0);
8for i in range(0, 20):
9 i = Fp(i);
10 neg_i = Fp(-i)
11 if not(i.is_primitive_root() or neg_i.is_primitive_root()):
12 continue
13 elif i.is_primitive_root():
14 assert(i.is_primitive_root());
15 print("Generator: %d" % i)
16 generator = i
17 break
18 else:
19 assert(neg_i.is_primitive_root());
20 print("Generator: %d" % neg_i)
21 generator = neg_i
22 break
23
24
25two_adicity = valuation(modulus - 1, 2);
26trace = (modulus - 1) / 2**two_adicity;
27two_adic_root_of_unity = generator^trace
28print("2-adic Root of Unity: %d " % two_adic_root_of_unity)