def from_sympy(self, a): """Convert SymPy's Integer to `dtype`. """ if a.is_Rational: return GMPYRationalType(a.p, a.q) elif a.is_Float: from sympy.polys.domains import RR return GMPYRationalType(*RR.as_integer_ratio(a)) else: raise CoercionFailed("expected `Rational` object, got %s" % a)
def factorial(self, a): """Returns factorial of `a`. """ return GMPYRationalType(gmpy_factorial(int(a)))
def div(self, a, b): """Division of `a` and `b`, implies `__div__`. """ return GMPYRationalType(a.qdiv(b)), self.zero
def quo(self, a, b): """Quotient of `a` and `b`, implies `__div__`. """ return GMPYRationalType(a.qdiv(b))
def from_RR_mpmath(K1, a, K0): """Convert a mpmath `mpf` object to `dtype`. """ return GMPYRationalType(*K0.as_integer_ratio(a))
def from_RR_sympy(K1, a, K0): """Convert a SymPy `Float` object to `dtype`. """ return GMPYRationalType(*K0.as_integer_ratio(a))
def from_ZZ_gmpy(K1, a, K0): """Convert a GMPY `mpz` object to `dtype`. """ return GMPYRationalType(a)
def from_QQ_sympy(K1, a, K0): """Convert a SymPy `Rational` object to `dtype`. """ return GMPYRationalType(a.p, a.q)
def from_ZZ_sympy(K1, a, K0): """Convert a SymPy `Integer` object to `dtype`. """ return GMPYRationalType(a.p)
def from_QQ_python(K1, a, K0): """Convert a Python `Fraction` object to `dtype`. """ return GMPYRationalType(a.numerator, a.denominator)
def from_ZZ_python(K1, a, K0): """Convert a Python `int` object to `dtype`. """ return GMPYRationalType(a)