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>float</code> type.
   31    *
   32    * @author Joseph D. Darcy
   33    */
   34   
   35   public class FloatConsts {
   36       /**
   37        * Don't let anyone instantiate this class.
   38        */
   39       private FloatConsts() {}
   40   
   41       public static final float POSITIVE_INFINITY = java.lang.Float.POSITIVE_INFINITY;
   42       public static final float NEGATIVE_INFINITY = java.lang.Float.NEGATIVE_INFINITY;
   43       public static final float NaN = java.lang.Float.NaN;
   44       public static final float MAX_VALUE = java.lang.Float.MAX_VALUE;
   45       public static final float MIN_VALUE = java.lang.Float.MIN_VALUE;
   46   
   47       /**
   48        * A constant holding the smallest positive normal value of type
   49        * <code>float</code>, 2<sup>-126</sup>.  It is equal to the value
   50        * returned by <code>Float.intBitsToFloat(0x00800000)</code>.
   51        */
   52       public static final float   MIN_NORMAL      = 1.17549435E-38f;
   53   
   54       /**
   55        * The number of logical bits in the significand of a
   56        * <code>float</code> number, including the implicit bit.
   57        */
   58       public static final int SIGNIFICAND_WIDTH   = 24;
   59   
   60       /**
   61        * Maximum exponent a finite <code>float</code> number may have.
   62        * It is equal to the value returned by
   63        * <code>Math.ilogb(Float.MAX_VALUE)</code>.
   64        */
   65       public static final int     MAX_EXPONENT    = 127;
   66   
   67       /**
   68        * Minimum exponent a normalized <code>float</code> number may
   69        * have.  It is equal to the value returned by
   70        * <code>Math.ilogb(Float.MIN_NORMAL)</code>.
   71        */
   72       public static final int     MIN_EXPONENT    = -126;
   73   
   74       /**
   75        * The exponent the smallest positive <code>float</code> subnormal
   76        * value would have if it could be normalized.  It is equal to the
   77        * value returned by <code>FpUtils.ilogb(Float.MIN_VALUE)</code>.
   78        */
   79       public static final int     MIN_SUB_EXPONENT = MIN_EXPONENT -
   80                                                      (SIGNIFICAND_WIDTH - 1);
   81   
   82       /**
   83        * Bias used in representing a <code>float</code> exponent.
   84        */
   85       public static final int     EXP_BIAS        = 127;
   86   
   87       /**
   88        * Bit mask to isolate the sign bit of a <code>float</code>.
   89        */
   90       public static final int     SIGN_BIT_MASK   = 0x80000000;
   91   
   92       /**
   93        * Bit mask to isolate the exponent field of a
   94        * <code>float</code>.
   95        */
   96       public static final int     EXP_BIT_MASK    = 0x7F800000;
   97   
   98       /**
   99        * Bit mask to isolate the significand field of a
  100        * <code>float</code>.
  101        */
  102       public static final int     SIGNIF_BIT_MASK = 0x007FFFFF;
  103   
  104       static {
  105           // verify bit masks cover all bit positions and that the bit
  106           // masks are non-overlapping
  107           assert(((SIGN_BIT_MASK | EXP_BIT_MASK | SIGNIF_BIT_MASK) == ~0) &&
  108                  (((SIGN_BIT_MASK & EXP_BIT_MASK) == 0) &&
  109                   ((SIGN_BIT_MASK & SIGNIF_BIT_MASK) == 0) &&
  110                   ((EXP_BIT_MASK & SIGNIF_BIT_MASK) == 0)));
  111       }
  112   }

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