You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ce...@apache.org on 2012/02/27 05:38:45 UTC
svn commit: r1294027 - in /commons/proper/math/trunk/src:
main/java/org/apache/commons/math3/fraction/BigFraction.java
test/java/org/apache/commons/math3/fraction/BigFractionTest.java
Author: celestin
Date: Mon Feb 27 04:38:45 2012
New Revision: 1294027
URL: http://svn.apache.org/viewvc?rev=1294027&view=rev
Log:
BigFraction.divide(BigFraction) now throws MathArithmeticException (see MATH-755).
Modified:
commons/proper/math/trunk/src/main/java/org/apache/commons/math3/fraction/BigFraction.java
commons/proper/math/trunk/src/test/java/org/apache/commons/math3/fraction/BigFractionTest.java
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math3/fraction/BigFraction.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math3/fraction/BigFraction.java?rev=1294027&r1=1294026&r2=1294027&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math3/fraction/BigFraction.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math3/fraction/BigFraction.java Mon Feb 27 04:38:45 2012
@@ -21,13 +21,14 @@ import java.math.BigDecimal;
import java.math.BigInteger;
import org.apache.commons.math3.FieldElement;
+import org.apache.commons.math3.exception.MathArithmeticException;
import org.apache.commons.math3.exception.MathIllegalArgumentException;
import org.apache.commons.math3.exception.NullArgumentException;
import org.apache.commons.math3.exception.ZeroException;
import org.apache.commons.math3.exception.util.LocalizedFormats;
+import org.apache.commons.math3.util.ArithmeticUtils;
import org.apache.commons.math3.util.FastMath;
import org.apache.commons.math3.util.MathUtils;
-import org.apache.commons.math3.util.ArithmeticUtils;
/**
* Representation of a rational number without any overflow. This class is
@@ -598,36 +599,34 @@ public class BigFraction
/**
* <p>
- * Divide the value of this fraction by the passed <code>BigInteger</code>,
- * ie "this * 1 / bg", returning the result in reduced form.
+ * Divide the value of this fraction by the passed {@code BigInteger},
+ * ie {@code this * 1 / bg}, returning the result in reduced form.
* </p>
*
- * @param bg
- * the <code>BigInteger</code> to divide by, must not be
- * <code>null</code>.
- * @return a {@link BigFraction} instance with the resulting values.
- * @throws NullArgumentException if the {@code BigInteger} is {@code null}.
- * @throws ZeroException
- * if the fraction to divide by is zero.
+ * @param bg the {@code BigInteger} to divide by, must not be {@code null}
+ * @return a {@link BigFraction} instance with the resulting values
+ * @throws NullArgumentException if the {@code BigInteger} is {@code null}
+ * @throws MathArithmeticException if the fraction to divide by is zero
*/
public BigFraction divide(final BigInteger bg) {
+ if (bg == null) {
+ throw new NullArgumentException(LocalizedFormats.FRACTION);
+ }
if (BigInteger.ZERO.equals(bg)) {
- throw new ZeroException(LocalizedFormats.ZERO_DENOMINATOR);
+ throw new MathArithmeticException(LocalizedFormats.ZERO_DENOMINATOR);
}
return new BigFraction(numerator, denominator.multiply(bg));
}
/**
* <p>
- * Divide the value of this fraction by the passed <tt>int</tt>, ie
- * "this * 1 / i", returning the result in reduced form.
+ * Divide the value of this fraction by the passed {@code int}, ie
+ * {@code this * 1 / i}, returning the result in reduced form.
* </p>
*
- * @param i
- * the <tt>int</tt> to divide by.
- * @return a {@link BigFraction} instance with the resulting values.
- * @throws ArithmeticException
- * if the fraction to divide by is zero.
+ * @param i the {@code int} to divide by
+ * @return a {@link BigFraction} instance with the resulting values
+ * @throws MathArithmeticException if the fraction to divide by is zero
*/
public BigFraction divide(final int i) {
return divide(BigInteger.valueOf(i));
@@ -635,15 +634,13 @@ public class BigFraction
/**
* <p>
- * Divide the value of this fraction by the passed <tt>long</tt>, ie
- * "this * 1 / l", returning the result in reduced form.
+ * Divide the value of this fraction by the passed {@code long}, ie
+ * {@code this * 1 / l}, returning the result in reduced form.
* </p>
*
- * @param l
- * the <tt>long</tt> to divide by.
- * @return a {@link BigFraction} instance with the resulting values.
- * @throws ArithmeticException
- * if the fraction to divide by is zero.
+ * @param l the {@code long} to divide by
+ * @return a {@link BigFraction} instance with the resulting values
+ * @throws MathArithmeticException if the fraction to divide by is zero
*/
public BigFraction divide(final long l) {
return divide(BigInteger.valueOf(l));
@@ -658,14 +655,14 @@ public class BigFraction
* @param fraction Fraction to divide by, must not be {@code null}.
* @return a {@link BigFraction} instance with the resulting values.
* @throws NullArgumentException if the {@code fraction} is {@code null}.
- * @throws ZeroException if the fraction to divide by is zero.
+ * @throws MathArithmeticException if the fraction to divide by is zero
*/
public BigFraction divide(final BigFraction fraction) {
if (fraction == null) {
throw new NullArgumentException(LocalizedFormats.FRACTION);
}
if (BigInteger.ZERO.equals(fraction.numerator)) {
- throw new ZeroException(LocalizedFormats.ZERO_DENOMINATOR);
+ throw new MathArithmeticException(LocalizedFormats.ZERO_DENOMINATOR);
}
return multiply(fraction.reciprocal());
Modified: commons/proper/math/trunk/src/test/java/org/apache/commons/math3/fraction/BigFractionTest.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/java/org/apache/commons/math3/fraction/BigFractionTest.java?rev=1294027&r1=1294026&r2=1294027&view=diff
==============================================================================
--- commons/proper/math/trunk/src/test/java/org/apache/commons/math3/fraction/BigFractionTest.java (original)
+++ commons/proper/math/trunk/src/test/java/org/apache/commons/math3/fraction/BigFractionTest.java Mon Feb 27 04:38:45 2012
@@ -21,6 +21,7 @@ import java.math.BigInteger;
import org.apache.commons.math3.TestUtils;
import org.apache.commons.math3.exception.ConvergenceException;
+import org.apache.commons.math3.exception.MathArithmeticException;
import org.apache.commons.math3.exception.NullArgumentException;
import org.apache.commons.math3.exception.ZeroException;
import org.apache.commons.math3.util.FastMath;
@@ -423,8 +424,8 @@ public class BigFractionTest {
BigFraction f2 = BigFraction.ZERO;
try {
f1.divide(f2);
- Assert.fail("expecting ArithmeticException");
- } catch (ZeroException ex) {
+ Assert.fail("expecting MathArithmeticException");
+ } catch (MathArithmeticException ex) {
}
f1 = new BigFraction(0, 5);