@Test(timeout = 5000L) public void powIntIntExact() { BigInteger mod = BigUtils.BI_MAX_INT.add(BigInteger.ONE).shiftLeft(1); for (int i : INTS) for (int j : INTS) if (j >= 0) { BigInteger expected = BigInteger.valueOf(i).modPow(BigInteger.valueOf(j), mod); assertEquals(i + " ^ " + j, expected.intValue(), pow(i, j)); } }
@Test(timeout = 5000L) public void powIntIntRandom() { BigInteger mod = BigUtils.BI_MAX_INT.add(BigInteger.ONE).shiftLeft(1); for (int i = 0; i < 100; i++) { int base = RANDOM.nextInt(); for (int j = 0; j < 100; j++) { int power = RANDOM.nextInt(Integer.MAX_VALUE); BigInteger expected = BigInteger.valueOf(base).modPow(BigInteger.valueOf(power), mod); assertEquals(i + " ^ " + j, expected.intValue(), pow(base, power)); } } }