public BigInteger divide(BigInteger val) throws ArithmeticException
private int[] divide(int[] x, int[] y)
    public BigInteger divide(BigInteger val) throws ArithmeticException    {        if (val.sign == 0)        {            throw new ArithmeticException("Divide by zero");        }        if (sign == 0)        {            return BigInteger.ZERO;        }        if (val.compareTo(BigInteger.ONE) == 0)        {            return this;        }        int[] mag = new int[this.magnitude.length];        System.arraycopy(this.magnitude, 0, mag, 0, mag.length);        return new BigInteger(this.sign * val.sign, divide(mag, val.magnitude));    }