You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ah...@apache.org on 2020/04/16 21:35:16 UTC

[commons-numbers] branch master updated: BigFraction: Mantissa cannot be zero in subnormal number

This is an automated email from the ASF dual-hosted git repository.

aherbert 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 5daca57  BigFraction: Mantissa cannot be zero in subnormal number
5daca57 is described below

commit 5daca57eea93e42323d35659c118aea43815f3cf
Author: Alex Herbert <ah...@apache.org>
AuthorDate: Thu Apr 16 22:35:11 2020 +0100

    BigFraction: Mantissa cannot be zero in subnormal number
    
    Since the value has already been tested against zero any sub-normal
    number has a non-zero mantissa.
---
 .../java/org/apache/commons/numbers/fraction/BigFraction.java     | 8 +++-----
 1 file changed, 3 insertions(+), 5 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 d71c1db..996899f 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
@@ -252,12 +252,10 @@ public final class BigFraction
         int k;
 
         if (exponent == 0) {
+            // Subnormal number, the effective exponent bias is 1022, not 1023.
+            // Note: mantissa is never zero as that case has been eliminated.
             m = mantissa;
-            k = 0; // For simplicity, when number is 0.
-            if (m != 0) {
-                // Subnormal number, the effective exponent bias is 1022, not 1023.
-                k = -1074;
-            }
+            k = -1074;
         } else {
             // Normalized number: Add the implicit most significant bit.
             m = mantissa | 0x0010000000000000L;