import checkedint.sticky : smartOp; // use IntFlagPolicy.sticky
assert(smartOp.modPow2( 101, 1) == 1);
assert(smartOp.modPow2( 101, 3) == 5);
assert(smartOp.modPow2(-101, 3) == -5);
assert(smartOp.modPow2(101, -2) == 0);
assert(smartOp.modPow2(101, 1_000) == 101);
Equivalent to left % pow(2, exp), but faster and works with a wider range of inputs. This is a safer alternative to left & ((1 << exp) - 1) that is still very fast.