pub fn sqrt(&self) -> CtOption<Self> {
        // Because r = 3 (mod 4)
        // sqrt can be done with only one exponentiation,
        // via the computation of  self^((r + 1) // 4) (mod r)
        let sqrt = self.pow_vartime(&[
            0xb425c397b5bdcb2e,
            0x299a0824f3320420,
            0x4199cec0404d0ec0,
            0x039f6d3a994cebea,
        ]);

        CtOption::new(
            sqrt,
            (&sqrt * &sqrt).ct_eq(self), /* Only return Some if it's the
                                          * square root. */
        )
    }
/// Computes the square root of this element, if it exists.
Computes the square root of this element, if it exists.
Computes the square root of this element if it exists .
pub fn sqrt(&self) -> CtOption<Self> {
        // Because r = 3 (mod 4)
        // sqrt can be done with only one exponentiation,
        // via the computation of  self^((r + 1) // 4) (mod r)
        let sqrt = self.pow_vartime(&[
            0xb425c397b5bdcb2e,
            0x299a0824f3320420,
            0x4199cec0404d0ec0,
            0x039f6d3a994cebea,
        ]);
        CtOption::new(
            sqrt,
            (&sqrt * &sqrt).ct_eq(self), /* Only return Some if it's the
                                          * square root. */
        )
    }
pub fn sqrt ( & self ) -> CtOption < Self > { // Because r = 3 (mod 4) // sqrt can be done with only one exponentiation, // via the computation of  self^((r + 1) // 4) (mod r) let sqrt = self . pow_vartime ( & [ 0xb425c397b5bdcb2e , 0x299a0824f3320420 , 0x4199cec0404d0ec0 , 0x039f6d3a994cebea , ] ) ; CtOption :: new ( sqrt , ( & sqrt * & sqrt ) . ct_eq ( self ) , /* Only return Some if it's the
                                          * square root. */ ) }
Computes the square root of this element, if it exists.
Computes the square root of this element if it exists .
&self