MathUtils
a collection of math-related functions

```
npm install mathutils
```

Currently available functions
isEven(n) / isOdd(n)
Check if the bit for `2^0`

is set. If it is, `n must be odd.

powermod(a, b, c)
powermod is a way of computing `(a ^ b) mod c`

without having to deal with giant numbers that would loose their precision.

slowIsPrime(n)
Returns if `n`

is a prime. Extremely slow, but absolutely accurate.

fastIsPrime(n)
Retuns if a `n`

is a prime. Based upon Fermat's little theorem .

Note: Doesn't take care of carmichael primes, so you probably want to use this in combination with slowIsPrime.

isPrime(n)
Runs both `fastIsPrime`

and `slowIsPrime`

. This way, it manages to be both (relatively) fast and accurate.

randomPrime(length)
Returns a pseudo-random prime number (based on `Math.random`

). `length`

defaults to 3.

gcd(a, b)
Returns the greatest common divisor of `a`

and `b`

. Based on Euclids algorithm

egcd(a, b)
Computes the extended Euclidean algorithm . Returns an array `[d, s, t]`

.

```
gcd(a, b) = d = s * a + t * b
```

modularInverse(a, b)
Returns the modular multiplicative inverse of `a`

and `b`

.

TODO
write tests
add more documentation
learn how to breakdance