diff options
| author | dgp <dgp@users.sourceforge.net> | 2025-05-09 18:13:17 (GMT) |
|---|---|---|
| committer | dgp <dgp@users.sourceforge.net> | 2025-05-09 18:13:17 (GMT) |
| commit | 0e8128247f4e30a8267d342c323765b6bf6cd644 (patch) | |
| tree | 178ac8dfc9bc556dc9b906db4b10fbec1d068146 /generic/tclStrToD.c | |
| parent | 9c7449fb49496cf68c0eef7452e0ad2bb3fac931 (diff) | |
| download | tcl-0e8128247f4e30a8267d342c323765b6bf6cd644.zip tcl-0e8128247f4e30a8267d342c323765b6bf6cd644.tar.gz tcl-0e8128247f4e30a8267d342c323765b6bf6cd644.tar.bz2 | |
[fd1585e2a1] Adopt efficient internal indexing calculation utility TclMSB().
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; } /* |
