Lines Matching +full:zero +full:- +full:based
1 // -*- C++ -*-
2 //===----------------------------------------------------------------------===//
6 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
8 //===----------------------------------------------------------------------===//
45 /// The algorithm is based on
49 /// zero is set to one. This means the first element of the lookup table is
50 /// zero.
52 auto __t = (32 - std::__libcpp_clz(static_cast<type>(__v | 1))) * 1233 >> 12;
53 return __t - (__v < __itoa::__pow10_32[__t]) + 1;
71 /// The algorithm is based on
75 /// zero is set to one. This means the first element of the lookup table is
76 /// zero.
78 auto __t = (64 - std::__libcpp_clz(static_cast<type>(__v | 1))) * 1233 >> 12;
79 return __t - (__v < __itoa::__pow10_64[__t]) + 1;
98 /// The algorithm is based on
102 /// zero is set to one. This means the first element of the lookup table is
103 /// zero.
107 // There's always a bit set in the upper 64-bits.
108 auto __t = (128 - std::__libcpp_clz(static_cast<uint64_t>(__v >> 64))) * 1233 >> 12;
111 return __t - (__v < __itoa::__pow10_128[__t - __itoa::__pow10_128_offset]) + 1;
159 // precondition: at least one non-zero character available
163 int __j = digits - 1;
168 __cprod[--__i] = *__p++ - '0';
172 if (__itoa::__mul_overflowed(__cprod[__j], __pow()[__j - __i], __b))
173 --__p;