# mathutils

a collection of math-related functions

#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