|| r.equals(zero));
assertTrue("wrong sign on quotient", q.signum() == 0
|| q.signum() == i1.signum() * i2.signum());
assertTrue("wrong sign on remainder", r.signum() == 0
|| r.signum() == i1.signum());
assertTrue("remainder out of range", r.abs().compareTo(i2.abs()) < 0);
assertTrue("quotient too small", q.abs().add(one).multiply(i2.abs())
.compareTo(i1.abs()) > 0);
assertTrue("quotient too large", q.abs().multiply(i2.abs()).compareTo(
i1.abs()) <= 0);
BigInteger p = q.multiply(i2);