zkboo-modular 0.1.0

Modular arithmetic primitives for the ZKBoo ecosystem.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#[allow(dead_code)]
pub fn modinv_i128(a: i128, m: i128) -> Option<i128> {
    let (mut t, mut new_t) = (0, 1);
    let (mut r, mut new_r) = (m, a);
    while new_r != 0 {
        let q = r / new_r;
        (t, new_t) = (new_t, t - q * new_t);
        (r, new_r) = (new_r, r - q * new_r);
    }
    if r > 1 {
        return None;
    }
    if t < 0 {
        t += m;
    }
    return Some(t);
}