Avoid reassigning parameters.
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 9cbc43d..60f2c06 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
@@ -71,13 +71,12 @@
// reduce numerator and denominator by greatest common denominator
final BigInteger gcd = num.gcd(den);
if (BigInteger.ONE.compareTo(gcd) < 0) {
- num = num.divide(gcd);
- den = den.divide(gcd);
+ numerator = num.divide(gcd);
+ denominator = den.divide(gcd);
+ } else {
+ numerator = num;
+ denominator = den;
}
-
- // store the values in the final fields
- numerator = num;
- denominator = den;
}
/**
diff --git a/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/Fraction.java b/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/Fraction.java
index f8fa171..a2acc21 100644
--- a/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/Fraction.java
+++ b/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/Fraction.java
@@ -73,23 +73,29 @@
numerator = 1;
denominator = 1;
} else {
+ // Reduce numerator (p) and denominator (q) by greatest common divisor.
+ int p;
+ int q;
+
// If num and den are both 2^-31, or if one is 0 and the other is 2^-31,
// the calculation of the gcd below will fail. Ensure that this does not
// happen by dividing both by 2 in case both are even.
if (((num | den) & 1) == 0) {
- num >>= 1;
- den >>= 1;
+ p = num >> 1;
+ q = den >> 1;
+ } else {
+ p = num;
+ q = den;
}
- // Reduce numerator and denominator by greatest common divisor.
- final int d = ArithmeticUtils.gcd(num, den);
+ final int d = ArithmeticUtils.gcd(p, q);
if (d > 1) {
- num /= d;
- den /= d;
+ p /= d;
+ q /= d;
}
- numerator = num;
- denominator = den;
+ numerator = p;
+ denominator = q;
}
}