On Thu, 11 Jul 2019 at 22:15, Neill Clift via Boost-users <boost-users@lists.boost.org> wrote:

I use the same sort of logic to calculate Floor(Log2(n)) (number of largest bit set), to clear the bottom say b bits of an integer.

Is this a reasonable (though probably not idea) way to go?


Iff you're gonna fiddle with the limbs anyway, why not just set the bits to zero, directly.
 

I noted that the limbs are 32 bits on Windows and this leads me to my second question. How can I get the internals of boost using bigger chunks like 64 bit?


You'll have to compile the code for 64-bits (x64), then you'll get 64-bit limbs.

It seems I need a compiler supporting __int64.


 You should use the std-types std::int64_t and std::uint64_t (#include <cstdint>).

I tried LLVM but that seemed quite slow. I may not have put enough effort into investigating LLVM up to this point.


Clang/LLVM (and gcc) has a builtin type (in 64-bit mode only) as an extension __uint128_t (pass (-Xclang) -fforce-enable-int128).

degski
--
@realdegski
"Anyone who believes that exponential growth can go on forever in a finite world is either a madman or an economist" - Kenneth E. Boulding