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
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