You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by er...@apache.org on 2019/11/02 23:11:14 UTC
[commons-numbers] branch master updated: Fixed method
"compareTo(BigFraction)".
This is an automated email from the ASF dual-hosted git repository.
erans pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-numbers.git
The following commit(s) were added to refs/heads/master by this push:
new bfa6fcc Fixed method "compareTo(BigFraction)".
bfa6fcc is described below
commit bfa6fcc4fa63bc0fb1726bb1aaf851e7894900be
Author: Gilles Sadowski <gi...@harfang.homelinux.org>
AuthorDate: Sun Nov 3 00:07:59 2019 +0100
Fixed method "compareTo(BigFraction)".
Implementation still assumed that only the numerator can be negative.
---
.../commons/numbers/fraction/BigFraction.java | 18 +++++++--------
.../commons/numbers/fraction/BigFractionTest.java | 27 ++++++++++++++--------
2 files changed, 26 insertions(+), 19 deletions(-)
diff --git a/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/BigFraction.java b/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/BigFraction.java
index 89a7e3d..fd1ff52 100644
--- a/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/BigFraction.java
+++ b/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/BigFraction.java
@@ -535,16 +535,16 @@ public class BigFraction
* Compares this object to another based on size.
* </p>
*
- * @param object
- * the object to compare to, must not be <code>null</code>.
+ * @param other Object to compare to, must not be {@code null}.
* @return -1 if this is less than {@code object}, +1 if this is greater
- * than {@code object}, 0 if they are equal.
- * @see java.lang.Comparable#compareTo(java.lang.Object)
+ * than {@code object}, 0 if they are equal.
+ *
+ * @see Comparable#compareTo(Object)
*/
@Override
- public int compareTo(final BigFraction object) {
- int lhsSigNum = numerator.signum();
- int rhsSigNum = object.numerator.signum();
+ public int compareTo(final BigFraction other) {
+ final int lhsSigNum = signum();
+ final int rhsSigNum = other.signum();
if (lhsSigNum != rhsSigNum) {
return (lhsSigNum > rhsSigNum) ? 1 : -1;
@@ -553,8 +553,8 @@ public class BigFraction
return 0;
}
- BigInteger nOd = numerator.multiply(object.denominator);
- BigInteger dOn = denominator.multiply(object.numerator);
+ final BigInteger nOd = numerator.multiply(other.denominator);
+ final BigInteger dOn = denominator.multiply(other.numerator);
return nOd.compareTo(dOn);
}
diff --git a/commons-numbers-fraction/src/test/java/org/apache/commons/numbers/fraction/BigFractionTest.java b/commons-numbers-fraction/src/test/java/org/apache/commons/numbers/fraction/BigFractionTest.java
index 24f3f46..c6a5eaf 100644
--- a/commons-numbers-fraction/src/test/java/org/apache/commons/numbers/fraction/BigFractionTest.java
+++ b/commons-numbers-fraction/src/test/java/org/apache/commons/numbers/fraction/BigFractionTest.java
@@ -158,14 +158,21 @@ public class BigFractionTest {
@Test
public void testCompareTo() {
- BigFraction first = BigFraction.of(1, 2);
- BigFraction second = BigFraction.of(1, 3);
- BigFraction third = BigFraction.of(1, 2);
-
- Assertions.assertEquals(0, first.compareTo(first));
- Assertions.assertEquals(0, first.compareTo(third));
- Assertions.assertEquals(1, first.compareTo(second));
- Assertions.assertEquals(-1, second.compareTo(first));
+ BigFraction a = BigFraction.of(1, 2);
+ BigFraction b = BigFraction.of(1, 3);
+ BigFraction c = BigFraction.of(1, 2);
+ BigFraction d = BigFraction.of(-1, 2);
+ BigFraction e = BigFraction.of(1, -2);
+
+ Assertions.assertEquals(0, a.compareTo(a));
+ Assertions.assertEquals(0, a.compareTo(c));
+ Assertions.assertEquals(1, a.compareTo(b));
+ Assertions.assertEquals(-1, b.compareTo(a));
+ Assertions.assertEquals(-1, d.compareTo(a));
+ Assertions.assertEquals(1, a.compareTo(d));
+ Assertions.assertEquals(-1, e.compareTo(a));
+ Assertions.assertEquals(1, a.compareTo(e));
+ Assertions.assertEquals(0, d.compareTo(e));
// these two values are different approximations of PI
// the first one is approximately PI - 3.07e-18
@@ -173,9 +180,8 @@ public class BigFractionTest {
BigFraction pi1 = BigFraction.of(1068966896, 340262731);
BigFraction pi2 = BigFraction.of( 411557987, 131002976);
Assertions.assertEquals(-1, pi1.compareTo(pi2));
- Assertions.assertEquals( 1, pi2.compareTo(pi1));
+ Assertions.assertEquals(1, pi2.compareTo(pi1));
Assertions.assertEquals(0.0, pi1.doubleValue() - pi2.doubleValue(), 1.0e-20);
-
}
@Test
@@ -517,6 +523,7 @@ public class BigFractionTest {
Assertions.assertEquals(-Integer.MAX_VALUE, f.getDenominatorAsInt());
Assertions.assertEquals(-1, f.getNumeratorAsInt());
+ Assertions.assertEquals(BigFraction.ZERO, BigFraction.of(0, 3).divide(BigInteger.valueOf(11)));
}
@Test