from .math_rational_add_rational import add_rational from .math_rational_divide_rational import divide_rational from .math_rational_multiply_rational import multiply_rational from .math_rational_subtract_rational import subtract_rational from .math_rational_types import Rational, RationalOp def calculate_rational(a: Rational, op: RationalOp, b: Rational) -> Rational: """Add, subtract, multiply or divide two fractions exactly. The result is always reduced with a positive denominator, so equal values have equal fields. """ if op == "add": return add_rational(a, b) if op == "subtract": return subtract_rational(a, b) if op == "multiply": return multiply_rational(a, b) if op == "divide": return divide_rational(a, b) raise ValueError('unknown operation "%s"' % (op,))