Trait rug::ops::DivRoundingFrom
source · pub trait DivRoundingFrom<Lhs = Self> {
// Required methods
fn div_trunc_from(&mut self, lhs: Lhs);
fn div_ceil_from(&mut self, lhs: Lhs);
fn div_floor_from(&mut self, lhs: Lhs);
fn div_euc_from(&mut self, lhs: Lhs);
}
Expand description
Compound assignment to the rhs operand and rounding variants of division.
Examples
use rug::ops::DivRoundingFrom;
struct I(i32);
impl DivRoundingFrom<i32> for I {
fn div_trunc_from(&mut self, lhs: i32) {
self.0 = lhs / self.0;
}
fn div_ceil_from(&mut self, lhs: i32) {
let (q, r) = (lhs / self.0, lhs % self.0);
let change = if self.0 > 0 { r > 0 } else { r < 0 };
self.0 = if change { q + 1 } else { q };
}
fn div_floor_from(&mut self, lhs: i32) {
let (q, r) = (lhs / self.0, lhs % self.0);
let change = if self.0 > 0 { r < 0 } else { r > 0 };
self.0 = if change { q - 1 } else { q };
}
fn div_euc_from(&mut self, lhs: i32) {
let (q, r) = (lhs / self.0, lhs % self.0);
self.0 = if r < 0 {
if self.0 < 0 {
q + 1
} else {
q - 1
}
} else {
q
};
}
}
let mut div_ceil = I(3);
div_ceil.div_ceil_from(10);
assert_eq!(div_ceil.0, 4);
Required Methods§
sourcefn div_trunc_from(&mut self, lhs: Lhs)
fn div_trunc_from(&mut self, lhs: Lhs)
Performs division, rounding the quotient towards zero.
sourcefn div_ceil_from(&mut self, lhs: Lhs)
fn div_ceil_from(&mut self, lhs: Lhs)
Performs division, rounding the quotient up.
sourcefn div_floor_from(&mut self, lhs: Lhs)
fn div_floor_from(&mut self, lhs: Lhs)
Performs division, rounding the quotient down.
sourcefn div_euc_from(&mut self, lhs: Lhs)
fn div_euc_from(&mut self, lhs: Lhs)
Performs Euclidean division, rounding the quotient so that the remainder cannot be negative.