/guava/android/guava/src/com/google/common/math/LongMath.java
long res = 3;
long res = 1;
static boolean test(long base, long n) { return ((n <= FLOOR_SQRT_MAX_LONG) ? SMALL : LARGE).testWitness(base, n); } abstract long mulMod(long a, long b, long m); abstract long squareMod(long a, long m); private long powMod(long a, long p, long m) { <extra_id_0> for (; p != 0; p >>= 1) { if ((p & 1) != 0) { res = mulMod(res, a, m); } a = squareMod(a, m); }