diff options
Diffstat (limited to 'theta_lib/utilities/fast_sqrt.py')
-rw-r--r-- | theta_lib/utilities/fast_sqrt.py | 55 |
1 files changed, 0 insertions, 55 deletions
diff --git a/theta_lib/utilities/fast_sqrt.py b/theta_lib/utilities/fast_sqrt.py deleted file mode 100644 index 0609fe5..0000000 --- a/theta_lib/utilities/fast_sqrt.py +++ /dev/null @@ -1,55 +0,0 @@ - -# ============================================ # -# Fast square root and quadratic roots # -# ============================================ # - -""" -Most of this code has been taken from: -https://github.com/FESTA-PKE/FESTA-SageMath - -Copyright (c) 2023 Andrea Basso, Luciano Maino and Giacomo Pope. - -Functions with another Copyright mention are not from the above authors. -""" - -def sqrt_Fp2(a): - """ - Efficiently computes the sqrt - of an element in Fp2 using that - we always have a prime p such that - p ≡ 3 mod 4. - """ - Fp2 = a.parent() - p = Fp2.characteristic() - i = Fp2.gen() # i = √-1 - - a1 = a ** ((p - 3) // 4) - x0 = a1 * a - alpha = a1 * x0 - - if alpha == -1: - x = i * x0 - else: - b = (1 + alpha) ** ((p - 1) // 2) - x = b * x0 - - return x - -def n_sqrt(a, n): - for _ in range(n): - a = sqrt_Fp2(a) - return a - -def sqrt_Fp(a): - """ - Efficiently computes the sqrt - of an element in Fp using that - we always have a prime p such that - p ≡ 3 mod 4. - - Copyright (c) Pierrick Dartois 2025. - """ - Fp = a.parent() - p = Fp.characteristic() - - return a**((p+1)//4) |