public static double expQuick(double value){
  if (USE_JDK_MATH) {
    return STRICT_MATH ? StrictMath.exp(value) : Math.exp(value);
  }
  if (false) {
    return Double.longBitsToDouble((long)(EXP_QUICK_A * value + (EXP_QUICK_B - EXP_QUICK_C)));
  }
  return Double.longBitsToDouble(((long)(int)(EXP_QUICK_A / (1L << 32) * value + (EXP_QUICK_B - EXP_QUICK_C) / (1L << 32))) << 32);
}

public static double expQuick ( double value ) { if ( USE_JDK_MATH ) { return STRICT_MATH ? StrictMath . exp ( value ) : Math . exp ( value ) ; } if ( false ) { return Double . longBitsToDouble ( ( long ) ( EXP_QUICK_A * value + ( EXP_QUICK_B - EXP_QUICK_C ) ) ) ; } return Double . longBitsToDouble ( ( ( long ) ( int ) ( EXP_QUICK_A / ( 1L << 32 ) * value + ( EXP_QUICK_B - EXP_QUICK_C ) / ( 1L << 32 ) ) ) << 32 ) ; }
quick exp , with a max relative error of about 3e - 2 for | value | & lt ; 700 . 0 or so , and no accuracy at all outside this range . derived from a note by nicol n . schraudolph , idsia , 1998 .
