On 2016-07-07 18:18, John Platts wrote:
Here is the current significand normalization loop below in the
BigDecimal(double, MathContext) constructor:
// Normalize
while ((significand & 1) == 0) { // i.e., significand is even
significand >>= 1;
exponent++;
}
Here is a better way to normalize the significand in the BigDecimal(double,
MathContext) constructor:
int significandTz = Long.numberOfTrailingZeros(significand);
significand >>= significandTz;
exponent += significandTz;
Seems correct.
Do you have any benchmark showing an improvement from this change?
/Claes