7 unsigned int _m = (
unsigned int)(m);
8 unsigned long long r = 1;
9 unsigned long long y = x < 0 ? x % m + m : x % m;
38 for (
int i = 3; (
long long)(i)*i <= x; i += 2) {
49 for (
int g = 2;; g++) {
51 for (
int i = 0; i < cnt; i++) {
65 unsigned long long im;
68 :
_m(m),
im((unsigned long long)(-1) / m + 1) {}
70 unsigned int umod()
const {
return _m; }
72 unsigned int mul(
unsigned int a,
unsigned int b)
const {
84 unsigned long long z = a;
90 unsigned long long x =
91 (
unsigned long long)(((
unsigned __int128)(z)*
im) >> 64);
93 unsigned long long y = x *
_m;
94 return (
unsigned int)(z - y + (z < y ?
_m : 0));
constexpr int primitive_root_constexpr(int m)
Definition math.hpp:21
constexpr long long pow_mod_constexpr(long long x, long long n, int m)
Definition math.hpp:4
constexpr int primitive_root
Definition math.hpp:61
barrett(unsigned int m)
Definition math.hpp:67
unsigned int _m
Definition math.hpp:64
unsigned long long im
Definition math.hpp:65
unsigned int umod() const
Definition math.hpp:70
unsigned int mul(unsigned int a, unsigned int b) const
Definition math.hpp:72