[−][src]Trait zerocaf::traits::ops::ModSqrt
Associated Types
type Output
Required methods
#[must_use]
fn mod_sqrt(self, choice: Choice) -> Self::Output
Performs the modular Square Root operation over a finite
field ie. sqrt(x) (mod l).
With the given Choice, the impl is able to provide the
result that corresponds to the positive or negative sign choosen.
Returns
Some(symb_choosen_result) if the input is a QR for the prime modulo.
Otherways it returns None
Implementors
impl<'a> ModSqrt for &'a FieldElement[src]
type Output = Option<FieldElement>
fn mod_sqrt(self, sign: Choice) -> Option<FieldElement>[src]
Performs the op: sqrt(a) (mod l).
Tonelli-Shanks prime modular square root
algorithm implementation for FieldElement.
Conditionally selects and returns the positive or the
negative result of the mod_sqrt by analyzing the
Choice sent as input:
For Choice(0) -> Negative result.
For Choice(1) -> Positive result.
Daniel Shanks. Five Number Theoretic Algorithms. Proceedings of the Second Manitoba Conference on Numerical Mathematics. Pp. 51–70. 1973.
This algorithm was translated from the python impl found in: https://codereview.stackexchange.com/questions/43210/tonelli-shanks-algorithm-implementation-of-prime-modular-square-root