use super::funejson::Value; use super::math_rational_rational::{rational_from_value, rational_from_wide, rational_parts, rational_to_value}; /// a + b, reduced. /// /// # Panics /// Panics on a zero denominator or a result outside ±(2^53 - 1). pub fn add_rational(a: &Rational, b: &Rational) -> Rational { let (an, ad) = rational_parts(a); let (bn, bd) = rational_parts(b); rational_from_wide(an * bd + bn * ad, ad * bd) } pub fn fune_vector(args: &[Value]) -> Value { rational_to_value(&add_rational(&rational_from_value(&args[0]), &rational_from_value(&args[1]))) }