code: public static final long[] getExpAndMantissa(double myDouble) {
  		long lbits = Double.doubleToLongBits(myDouble);
  		long lsign = lbits >>> 63;// 0(+) or 1(-)
  		long lexp = (lbits >>> 52 & ((1 << 11) - 1)) - ((1 << 10) - 1);
  		long lmantissa = lbits & ((1L << 52) - 1);
  		long[] ret = new long[] { lsign, lexp, lmantissa };
  		log.debug("double  : " + myDouble);
  		log.debug("sign    : " + lsign);
  		log.debug("exp     : " + lexp);
  		log.debug("mantissa: " + lmantissa);
  		log.debug("reverse : " + Double.longBitsToDouble((lsign << 63)	| (lexp + ((1 << 10) - 1)) << 52 | lmantissa));
  		log.debug("log(d)  : " + Math.log1p(myDouble));
  		return ret;
  	}
docs: Extract the sign (the leftmost bit), exponent (the 11 following bits)
  and mantissa (the 52 rightmost bits) from a double.
  @see http://www.particle.kth.se/~lindsey/JavaCourse/Book/Part1/Tech/Chapter02/floatingPt.html