modinverse 0.1.1

Small library for finding the modular multiplicative inverses.
Documentation
rust-modinverse
===============
Small library for finding the modular multiplicative inverses. Also has an implementation of the extended Euclidean algorithm built in.

`modinverse`
------------
Calculates the [modular multiplicative
inverse](https://en.wikipedia.org/wiki/Modular_multiplicative_inverse) *x* of
an integer *a* such that *ax* ≡ 1 (mod *m*).

Such an integer may not exist. If so, this function will return `None`.
Otherwise, the inverse will be returned wrapped up in a `Some`.

```rust
use modinverse::modinverse;

let does_exist = modinverse(3, 26);
let does_not_exist = modinverse(4, 32);

match does_exist {
    Some(x) => assert_eq!(x, 9),
    None => panic!("modinverse() didn't work as expected"),
}

match does_not_exist {
   Some(x) => panic!("modinverse() found an inverse when it shouldn't have"),
   None => {},
}
```

`egcd`
------
Finds the greatest common denominator of two integers *a* and *b*, and two
integers *x* and *y* such that *ax* + *by* is the greatest common denominator
of *a* and *b* (Bézout coefficients).

This function is an implementation of the [extended Euclidean
algorithm](https://en.wikipedia.org/wiki/Extended_Euclidean_algorithm).

```rust
use modinverse::egcd;

let a = 26;
let b = 3;
let (g, x, y) = egcd(a, b);

assert_eq!(g, 1);
assert_eq!(x, -1);
assert_eq!(y, 9);
assert_eq!((a * x) + (b * y), g);
```