summaryrefslogtreecommitdiffstats
path: root/generic/tclStrToD.c
diff options
context:
space:
mode:
Diffstat (limited to 'generic/tclStrToD.c')
-rw-r--r--generic/tclStrToD.c28
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;
}
/*