pub fn sqrt(y: u128) -> u128 {
if y > 3u128 {
let mut z = y;
let mut x: u128 = y / 2 + 1;
while x < z {
z = x;
x = (y / x + x) / 2;
}
z
} else if y != 0 {
let z = 1;
z
} else {
y
}
}
pub fn min(x: u128, y: u128) -> u128 {
let z = match x < y {
true => x,
_ => y,
};
z
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn sqrt_works() {
assert_eq!(2, sqrt(4));
}
#[test]
fn min_works() {
assert_eq!(1, min(1, 3));
}
}