com.vividsolutions.jts.index.quadtree
Class DoubleBits

java.lang.Object
  extended bycom.vividsolutions.jts.index.quadtree.DoubleBits

public class DoubleBits
extends java.lang.Object

DoubleBits manipulates Double numbers by using bit manipulation and bit-field extraction. For some operations (such as determining the exponent) this is more accurate than using mathematical operations (which suffer from round-off error).

The algorithms and constants in this class apply only to IEEE-754 double-precision floating point format.

Version:
1.7

Field Summary
static int EXPONENT_BIAS
           
 
Constructor Summary
DoubleBits(double x)
           
 
Method Summary
 int biasedExponent()
          Determines the exponent for the number
static int exponent(double d)
           
 int getBit(int i)
           
 double getDouble()
           
 int getExponent()
          Determines the exponent for the number
static double maximumCommonMantissa(double d1, double d2)
           
 int numCommonMantissaBits(DoubleBits db)
          This computes the number of common most-significant bits in the mantissa.
static double powerOf2(int exp)
           
static java.lang.String toBinaryString(double d)
           
 java.lang.String toString()
          A representation of the Double bits formatted for easy readability
static double truncateToPowerOfTwo(double d)
           
 void zeroLowerBits(int nBits)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

EXPONENT_BIAS

public static final int EXPONENT_BIAS
See Also:
Constant Field Values
Constructor Detail

DoubleBits

public DoubleBits(double x)
Method Detail

powerOf2

public static double powerOf2(int exp)

exponent

public static int exponent(double d)

truncateToPowerOfTwo

public static double truncateToPowerOfTwo(double d)

toBinaryString

public static java.lang.String toBinaryString(double d)

maximumCommonMantissa

public static double maximumCommonMantissa(double d1,
                                           double d2)

getDouble

public double getDouble()

biasedExponent

public int biasedExponent()
Determines the exponent for the number


getExponent

public int getExponent()
Determines the exponent for the number


zeroLowerBits

public void zeroLowerBits(int nBits)

getBit

public int getBit(int i)

numCommonMantissaBits

public int numCommonMantissaBits(DoubleBits db)
This computes the number of common most-significant bits in the mantissa. It does not count the hidden bit, which is always 1. It does not determine whether the numbers have the same exponent - if they do not, the value computed by this function is meaningless.

Parameters:
db -
Returns:
the number of common most-significant mantissa bits

toString

public java.lang.String toString()
A representation of the Double bits formatted for easy readability