18 int random(
int lowerbounds,
int upperbounds)
20 assert(upperbounds - lowerbounds < RAND_MAX);
21 return lowerbounds + std::rand() % (upperbounds - lowerbounds + 1);
45 for (
int i = 1;
i <= number; ++
i) {
58 for (
uint64 mask = 0x8000000000000000; mask; mask >>= 1) {
59 if (mask & exponent) {
76 int64 y1 = 0, y2 = 1, tmp;
78 tmp = y1 - (module / number) * y2;
81 tmp = module % number;
95 for (;
powerModulo(number, order, module) != 1 && order != module; ++order)
97 return order != module ? order : 0;
CPP_UTILITIES_EXPORT int factorial(int number)
Returns the factorial of the given number.
CPP_UTILITIES_EXPORT uint64 orderModulo(uint64 number, uint64 module)
Computes the order of number modulo module.
std::int64_t int64
signed 64-bit integer
CPP_UTILITIES_EXPORT int64 inverseModulo(int64 number, int64 module)
Computes the inverse of number modulo module.
Contains various mathematical functions.
std::uint64_t uint64
unsigned 64-bit integer
CPP_UTILITIES_EXPORT int random(int lowerbounds, int upperbounds)
Returns a pseudo random number between lowerbounds and upperbounds.
CPP_UTILITIES_EXPORT int digitsum(int number, int base=10)
Returns the digitsum of the given number using the specified base.
CPP_UTILITIES_EXPORT uint64 powerModulo(uint64 base, uint64 expontent, uint64 module)
Computes base power exponent modulo module.