from .math_rational_rational import rational_from_wide, rational_parts from .math_rational_types import Rational def divide_rational(a: Rational, b: Rational) -> Rational: """a รท b, reduced. Dividing by zero is an error, never an infinity.""" an, ad = rational_parts(a) bn, bd = rational_parts(b) if bn == 0: raise ValueError("division by zero") return rational_from_wide(an * bd, ad * bn)