You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by tn...@apache.org on 2013/10/17 23:12:28 UTC
svn commit: r1533260 - in /commons/proper/math/trunk/src: changes/changes.xml
main/java/org/apache/commons/math3/fraction/BigFraction.java
test/java/org/apache/commons/math3/fraction/BigFractionTest.java
Author: tn
Date: Thu Oct 17 21:12:28 2013
New Revision: 1533260
URL: http://svn.apache.org/r1533260
Log:
[MATH-1029] Make overflow check symmetric for positive/negative values.
Modified:
commons/proper/math/trunk/src/changes/changes.xml
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/changes/changes.xml
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/changes/changes.xml?rev=1533260&r1=1533259&r2=1533260&view=diff
==============================================================================
--- commons/proper/math/trunk/src/changes/changes.xml (original)
+++ commons/proper/math/trunk/src/changes/changes.xml Thu Oct 17 21:12:28 2013
@@ -51,6 +51,11 @@ If the output is not quite correct, chec
</properties>
<body>
<release version="x.y" date="TBD" description="TBD">
+ <action dev="tn" type="fix" issue="MATH-1029">
+ The "BigFraction" constructor will throw a "FractionConversionException"
+ also in case negative values are provided which exceed the allowed range
+ (+/- Integer.MAX_VALUE).
+ </action>
<action dev="erans" type="add" issue="MATH-1041" due-to="Sean Owen">
"Pair": added factory method and "toString" method.
</action>
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=1533260&r1=1533259&r2=1533260&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 Thu Oct 17 21:12:28 2013
@@ -272,7 +272,8 @@ public class BigFraction
long overflow = Integer.MAX_VALUE;
double r0 = value;
long a0 = (long) FastMath.floor(r0);
- if (a0 > overflow) {
+
+ if (FastMath.abs(a0) > overflow) {
throw new FractionConversionException(value, a0, 1l);
}
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=1533260&r1=1533259&r2=1533260&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 Thu Oct 17 21:12:28 2013
@@ -156,7 +156,19 @@ public class BigFractionTest {
assertFraction(769, 1250, new BigFraction(0.6152, 9999));
// MATH-996
- assertFraction(1, 2, new BigFraction(0.5000000001, 10));
+ assertFraction(1, 2, new BigFraction(0.5000000001, 10));
+ }
+
+ // MATH-1029
+ @Test(expected=FractionConversionException.class)
+ public void testPositiveValueOverflow() {
+ assertFraction((long) 1e10, 1, new BigFraction(1e10, 1000));
+ }
+
+ // MATH-1029
+ @Test(expected=FractionConversionException.class)
+ public void testNegativeValueOverflow() {
+ assertFraction((long) -1e10, 1, new BigFraction(-1e10, 1000));
}
@Test