* @param y
     * @return x/y
     */
    public static BigDecimal divideNoRounding(
            BigDecimal x,
            BigInteger y) {
        // Deal with special cases
        if (x.compareTo(BigDecimal.ZERO) == 0) {
            return BigDecimal.ZERO;
        }
        if (y.compareTo(BigInteger.ZERO) == 0) {
            throw new ArithmeticException("Attempted division by zero...");
        }
        if (y.compareTo(BigInteger.ONE) == 0) {
            return new BigDecimal(x.toString());
        }
        BigDecimal y_BigDecimal = new BigDecimal(y);
        if (x.compareTo(y_BigDecimal) == 0) {
            return BigDecimal.ONE;
        }
        return divideNoCaseCheckNoRounding(
                x,
                y_BigDecimal);
    }