diff options
Diffstat (limited to 'generic/tclStrToD.c')
| -rw-r--r-- | generic/tclStrToD.c | 28 |
1 files changed, 2 insertions, 26 deletions
diff --git a/generic/tclStrToD.c b/generic/tclStrToD.c index d4843e7..69aafaa 100644 --- a/generic/tclStrToD.c +++ b/generic/tclStrToD.c @@ -2352,33 +2352,9 @@ static int RequiredPrecision( Tcl_WideUInt w) /* Number to interrogate. */ { - int rv; - unsigned int wi; + /* assert(sizeof(Tcl_WideUInt) <= sizeof(long long)) */ - if (w & ((Tcl_WideUInt)0xFFFFFFFF << 32)) { - wi = (unsigned int)(w >> 32); rv = 32; - } else { - wi = (unsigned int)w; rv = 0; - } - if (wi & 0xFFFF0000) { - wi >>= 16; rv += 16; - } - if (wi & 0xFF00) { - wi >>= 8; rv += 8; - } - if (wi & 0xF0) { - wi >>= 4; rv += 4; - } - if (wi & 0xC) { - wi >>= 2; rv += 2; - } - if (wi & 0x2) { - wi >>= 1; ++rv; - } - if (wi & 0x1) { - ++rv; - } - return rv; + return w ? 1 + TclMSB((unsigned long long) w) : 0; } /* |
