terra_math/
lib.rs

1pub fn sqrt(y: u128) -> u128 {
2    if y > 3u128 {
3        let mut z = y;
4        let mut x: u128 = y / 2 + 1;
5        while x < z {
6            z = x;
7            x = (y / x + x) / 2;
8        }
9        z
10    } else if y != 0 {
11        let z = 1;
12        z
13    } else {
14        y
15    }
16}
17
18pub fn min(x: u128, y: u128) -> u128 {
19    let z = match x < y {
20        true => x,
21        _ => y,
22    };
23    z
24}
25
26#[cfg(test)]
27mod tests {
28    use super::*;
29    #[test]
30    fn sqrt_works() {
31        assert_eq!(2, sqrt(4));
32    }
33
34    #[test]
35    fn min_works() {
36        assert_eq!(1, min(1, 3));
37    }
38}