arnaucube
arnaucube/ark-curves-cherry-pickedPublic Self-hosted repository
ark-curves-cherry-picked/bw6_761/scripts/base_field.sage
bw6_761/scripts/base_field.sageRaw
 1modulus = 6891450384315732539396789682275657542479668912536150109513790160209623422243491736087683183289411687640864567753786613451161759120554247759349511699125301598951605099378508850372543631423596795951899700429969112842764913119068299
 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)