Esempio n. 1
0
    def sqrt(self, modulus=None):
        """Return the largest Integer that does not
        exceed the square root"""

        if modulus is None:
            if self < 0:
                raise ValueError("Square root of negative value")
            result = Integer(0)
            _gmp.mpz_sqrt(result._mpz_p, self._mpz_p)
        else:
            if modulus <= 0:
                raise ValueError("Modulus must be positive")
            modulus = int(modulus)
            result = Integer(
                SlowInteger._tonelli_shanks(int(self) % modulus, modulus))

        return result
Esempio n. 2
0
    def sqrt(self, modulus=None):
        """Return the largest Integer that does not
        exceed the square root"""

        if modulus is None:
            if self < 0:
                raise ValueError("Square root of negative value")
            result = Integer(0)
            _gmp.mpz_sqrt(result._mpz_p,
                          self._mpz_p)
        else:
            if modulus <= 0:
                raise ValueError("Modulus must be positive")
            modulus = int(modulus)
            result = Integer(SlowInteger._tonelli_shanks(int(self) % modulus, modulus))

        return result