jdk/src/java.base/share/classes/sun/misc/DoubleConsts.java
changeset 34852 bd26599f2098
parent 34851 3359dd18cde0
parent 34848 a3eed4c1badb
child 34858 ec69df775846
equal deleted inserted replaced
34851:3359dd18cde0 34852:bd26599f2098
     1 /*
       
     2  * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
       
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       
     4  *
       
     5  * This code is free software; you can redistribute it and/or modify it
       
     6  * under the terms of the GNU General Public License version 2 only, as
       
     7  * published by the Free Software Foundation.  Oracle designates this
       
     8  * particular file as subject to the "Classpath" exception as provided
       
     9  * by Oracle in the LICENSE file that accompanied this code.
       
    10  *
       
    11  * This code is distributed in the hope that it will be useful, but WITHOUT
       
    12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
       
    13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
       
    14  * version 2 for more details (a copy is included in the LICENSE file that
       
    15  * accompanied this code).
       
    16  *
       
    17  * You should have received a copy of the GNU General Public License version
       
    18  * 2 along with this work; if not, write to the Free Software Foundation,
       
    19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
       
    20  *
       
    21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
       
    22  * or visit www.oracle.com if you need additional information or have any
       
    23  * questions.
       
    24  */
       
    25 
       
    26 package sun.misc;
       
    27 
       
    28 /**
       
    29  * This class contains additional constants documenting limits of the
       
    30  * <code>double</code> type.
       
    31  *
       
    32  * @author Joseph D. Darcy
       
    33  */
       
    34 
       
    35 public class DoubleConsts {
       
    36     /**
       
    37      * Don't let anyone instantiate this class.
       
    38      */
       
    39     private DoubleConsts() {}
       
    40 
       
    41     public static final double POSITIVE_INFINITY = java.lang.Double.POSITIVE_INFINITY;
       
    42     public static final double NEGATIVE_INFINITY = java.lang.Double.NEGATIVE_INFINITY;
       
    43     public static final double NaN = java.lang.Double.NaN;
       
    44     public static final double MAX_VALUE = java.lang.Double.MAX_VALUE;
       
    45     public static final double MIN_VALUE = java.lang.Double.MIN_VALUE;
       
    46 
       
    47     /**
       
    48      * A constant holding the smallest positive normal value of type
       
    49      * <code>double</code>, 2<sup>-1022</sup>.  It is equal to the
       
    50      * value returned by
       
    51      * <code>Double.longBitsToDouble(0x0010000000000000L)</code>.
       
    52      *
       
    53      * @since 1.5
       
    54      */
       
    55     public static final double  MIN_NORMAL      = 2.2250738585072014E-308;
       
    56 
       
    57 
       
    58     /**
       
    59      * The number of logical bits in the significand of a
       
    60      * <code>double</code> number, including the implicit bit.
       
    61      */
       
    62     public static final int SIGNIFICAND_WIDTH   = 53;
       
    63 
       
    64     /**
       
    65      * Maximum exponent a finite <code>double</code> number may have.
       
    66      * It is equal to the value returned by
       
    67      * <code>Math.ilogb(Double.MAX_VALUE)</code>.
       
    68      */
       
    69     public static final int     MAX_EXPONENT    = 1023;
       
    70 
       
    71     /**
       
    72      * Minimum exponent a normalized <code>double</code> number may
       
    73      * have.  It is equal to the value returned by
       
    74      * <code>Math.ilogb(Double.MIN_NORMAL)</code>.
       
    75      */
       
    76     public static final int     MIN_EXPONENT    = -1022;
       
    77 
       
    78     /**
       
    79      * The exponent the smallest positive <code>double</code>
       
    80      * subnormal value would have if it could be normalized..
       
    81      */
       
    82     public static final int     MIN_SUB_EXPONENT = MIN_EXPONENT -
       
    83                                                    (SIGNIFICAND_WIDTH - 1);
       
    84 
       
    85     /**
       
    86      * Bias used in representing a <code>double</code> exponent.
       
    87      */
       
    88     public static final int     EXP_BIAS        = 1023;
       
    89 
       
    90     /**
       
    91      * Bit mask to isolate the sign bit of a <code>double</code>.
       
    92      */
       
    93     public static final long    SIGN_BIT_MASK   = 0x8000000000000000L;
       
    94 
       
    95     /**
       
    96      * Bit mask to isolate the exponent field of a
       
    97      * <code>double</code>.
       
    98      */
       
    99     public static final long    EXP_BIT_MASK    = 0x7FF0000000000000L;
       
   100 
       
   101     /**
       
   102      * Bit mask to isolate the significand field of a
       
   103      * <code>double</code>.
       
   104      */
       
   105     public static final long    SIGNIF_BIT_MASK = 0x000FFFFFFFFFFFFFL;
       
   106 
       
   107     static {
       
   108         // verify bit masks cover all bit positions and that the bit
       
   109         // masks are non-overlapping
       
   110         assert(((SIGN_BIT_MASK | EXP_BIT_MASK | SIGNIF_BIT_MASK) == ~0L) &&
       
   111                (((SIGN_BIT_MASK & EXP_BIT_MASK) == 0L) &&
       
   112                 ((SIGN_BIT_MASK & SIGNIF_BIT_MASK) == 0L) &&
       
   113                 ((EXP_BIT_MASK & SIGNIF_BIT_MASK) == 0L)));
       
   114     }
       
   115 }