public class ModRange { void testMult(int x, int y, boolean b) { if (x * 2 == y * 2 + 1) {} if (x * 3 == y * 3 + 1) {} // possible through overflow if (x * 6 == y * 2 + 1) {} int z = x * 4 + (b ? 1 : 3); switch (z % 8) { case -1:break; case -2:break; case -3:break; case -4:break; case -5:break; case -6:break; case -7:break; case 0:break; case 1:if(b) {} break; case 2:break; case 3:if(b) {} break; case 4:break; case 5:break; case 6:break; case 7:break; } } void testMultLimited(int i, int j) { if (i >= 0 && i < 10 && j >= 0 && j < 10) { int sum = i * 3 + j * 3 + 1; if (sum % 3 == 1) {} } } void testShl(long x) { if ((x << 32) % 16 == 0) {} if (x << 32 == (x << 16) + 16) {} } void testAnd(long x) { long res = x & 0xFFFF0001L; long rem = res % 16; if (rem == 0 || rem == 1) {} res = x & 0xFFFF0001; // res can be negative now rem = res % 16; if (rem == 0 || rem == 1 || rem == -15) {} } void testAnd2(long x) { long hi = x & 0xFF00; long lo = x & 0x00FF; if (hi == lo && hi % 32 == 0) {} } void testAndChain(long x) { long y = x & ~1; long z = y & ~2; long t = z & ~4; if (t == 0) {} if (t == 1) {} if (t == 2) {} if (t == 4) {} if (t == 7) {} if (t == 8) {} } void testOr(long x) { long y = x | 1; if (y % 2 == 0) {} } void testAndOr(long x) { if(((x & 4) | (x & 8)) == 3) {} } void testXor(int x, int y) { x = (x & ~2) | 1; y |= 3; int z = (x ^ y) % 4; switch (z) { case 0: case 1: case 2: case 3: } } }