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