You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ps...@apache.org on 2011/04/04 06:51:37 UTC

svn commit: r1088473 - in /commons/proper/math/trunk/src: main/java/org/apache/commons/math/util/MathUtils.java site/xdoc/changes.xml test/java/org/apache/commons/math/util/MathUtilsTest.java

Author: psteitz
Date: Mon Apr  4 04:51:37 2011
New Revision: 1088473

URL: http://svn.apache.org/viewvc?rev=1088473&view=rev
Log:
Changed MathUtils.round(double,int,int) to propagate rather than
wrap runtime exceptions.  Instead of MathRuntimeException, this method
now throws IllegalArgumentException or ArithmeticException under
the conditions specified in the javadoc.
JIRA: MATH-555



Modified:
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/util/MathUtils.java
    commons/proper/math/trunk/src/site/xdoc/changes.xml
    commons/proper/math/trunk/src/test/java/org/apache/commons/math/util/MathUtilsTest.java

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/util/MathUtils.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/util/MathUtils.java?rev=1088473&r1=1088472&r2=1088473&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/util/MathUtils.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/util/MathUtils.java Mon Apr  4 04:51:37 2011
@@ -33,7 +33,6 @@ import org.apache.commons.math.exception
 import org.apache.commons.math.exception.NotPositiveException;
 import org.apache.commons.math.exception.MathArithmeticException;
 import org.apache.commons.math.exception.MathIllegalArgumentException;
-import org.apache.commons.math.exception.MathRuntimeException;
 import org.apache.commons.math.exception.NumberIsTooLargeException;
 import org.apache.commons.math.exception.NotFiniteNumberException;
 
@@ -1333,15 +1332,22 @@ public final class MathUtils {
     }
 
     /**
-     * Round the given value to the specified number of decimal places. The
+     * <p>Round the given value to the specified number of decimal places. The
      * value is rounded using the given method which is any method defined in
-     * {@link BigDecimal}.
+     * {@link BigDecimal}.</p>
+     *
+     * <p>If {@code x} is infinite or NaN, then the value of {@code x} is
+     * returned unchanged, regardless of the other parameters.</p>
      *
      * @param x the value to round.
      * @param scale the number of digits to the right of the decimal point.
      * @param roundingMethod the rounding method as defined in
      *        {@link BigDecimal}.
      * @return the rounded value.
+     * @throws ArithmeticException if roundingMethod==ROUND_UNNECESSARY and the
+     * specified scaling operation would require rounding.
+     * @throws IllegalArgumentException if roundingMethod does not represent a
+     * valid rounding mode.
      * @since 1.1
      */
     public static double round(double x, int scale, int roundingMethod) {
@@ -1356,8 +1362,6 @@ public final class MathUtils {
             } else {
                 return Double.NaN;
             }
-        } catch (RuntimeException ex) {
-            throw new MathRuntimeException(ex);
         }
     }
 

Modified: commons/proper/math/trunk/src/site/xdoc/changes.xml
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/site/xdoc/changes.xml?rev=1088473&r1=1088472&r2=1088473&view=diff
==============================================================================
--- commons/proper/math/trunk/src/site/xdoc/changes.xml (original)
+++ commons/proper/math/trunk/src/site/xdoc/changes.xml Mon Apr  4 04:51:37 2011
@@ -52,6 +52,12 @@ The <action> type attribute can be add,u
     If the output is not quite correct, check for invisible trailing spaces!
      -->
     <release version="3.0" date="TBD" description="TBD">
+      <action dev="psteitz" type="update" issue="MATH-555">
+        Changed MathUtils.round(double,int,int) to propagate rather than
+        wrap runtime exceptions.  Instead of MathRuntimeException, this method
+        now throws IllegalArgumentException or ArithmeticException under
+        the conditions specified in the javadoc.
+      </action>
       <action dev="luc" type="fix" issue="MATH-554" >
         Reduced cancellation errors in Vector3D.crossProduct
       </action>

Modified: commons/proper/math/trunk/src/test/java/org/apache/commons/math/util/MathUtilsTest.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/java/org/apache/commons/math/util/MathUtilsTest.java?rev=1088473&r1=1088472&r2=1088473&view=diff
==============================================================================
--- commons/proper/math/trunk/src/test/java/org/apache/commons/math/util/MathUtilsTest.java (original)
+++ commons/proper/math/trunk/src/test/java/org/apache/commons/math/util/MathUtilsTest.java Mon Apr  4 04:51:37 2011
@@ -1136,8 +1136,8 @@ public final class MathUtilsTest {
         try {
             MathUtils.round(1.234, 2, BigDecimal.ROUND_UNNECESSARY);
             Assert.fail();
-        } catch (MathRuntimeException ex) { // XXX Loosing semantics?
-            // success
+        } catch (ArithmeticException ex) { 
+            // expected
         }
 
         Assert.assertEquals(1.24, MathUtils.round(x, 2, BigDecimal.ROUND_UP), 0.0);
@@ -1150,8 +1150,8 @@ public final class MathUtilsTest {
         try {
             MathUtils.round(1.234, 2, 1923);
             Assert.fail();
-        } catch (MathRuntimeException ex) { // XXX Loosing semantics?
-            // success
+        } catch (IllegalArgumentException ex) {
+            // expected
         }
 
         // MATH-151