Save This Page
Home » openjdk-7 » sun » misc » [javadoc | source]
    1   /*
    2    * Copyright (c) 2003, 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.  It is
   81        * equal to the value returned by
   82        * <code>FpUtils.ilogb(Double.MIN_VALUE)</code>.
   83        */
   84       public static final int     MIN_SUB_EXPONENT = MIN_EXPONENT -
   85                                                      (SIGNIFICAND_WIDTH - 1);
   86   
   87       /**
   88        * Bias used in representing a <code>double</code> exponent.
   89        */
   90       public static final int     EXP_BIAS        = 1023;
   91   
   92       /**
   93        * Bit mask to isolate the sign bit of a <code>double</code>.
   94        */
   95       public static final long    SIGN_BIT_MASK   = 0x8000000000000000L;
   96   
   97       /**
   98        * Bit mask to isolate the exponent field of a
   99        * <code>double</code>.
  100        */
  101       public static final long    EXP_BIT_MASK    = 0x7FF0000000000000L;
  102   
  103       /**
  104        * Bit mask to isolate the significand field of a
  105        * <code>double</code>.
  106        */
  107       public static final long    SIGNIF_BIT_MASK = 0x000FFFFFFFFFFFFFL;
  108   
  109       static {
  110           // verify bit masks cover all bit positions and that the bit
  111           // masks are non-overlapping
  112           assert(((SIGN_BIT_MASK | EXP_BIT_MASK | SIGNIF_BIT_MASK) == ~0L) &&
  113                  (((SIGN_BIT_MASK & EXP_BIT_MASK) == 0L) &&
  114                   ((SIGN_BIT_MASK & SIGNIF_BIT_MASK) == 0L) &&
  115                   ((EXP_BIT_MASK & SIGNIF_BIT_MASK) == 0L)));
  116       }
  117   }

Save This Page
Home » openjdk-7 » sun » misc » [javadoc | source]