use crate::Rational;
use malachite_base::num::arithmetic::traits::{Abs, Ceiling, Floor};
pub fn mod_op_naive(x: Rational, y: Rational) -> Rational {
let q = &x / &y;
x - y * Rational::from(q.floor())
}
pub fn rem_naive(x: Rational, y: Rational) -> Rational {
let q = &x / &y;
let sign = (x >= 0u32) == (y >= 0u32);
let z = y * Rational::from(q.abs().floor());
if sign { x - z } else { x + z }
}
pub fn ceiling_mod_naive(x: Rational, y: Rational) -> Rational {
let q = &x / &y;
x - y * Rational::from(q.ceiling())
}