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

Reply via email to