Boost logo

Boost :

Subject: Re: [boost] Bits and Ints: Intention Request
From: Murilo Adriano Vasconcelos (muriloufg_at_[hidden])
Date: 2010-07-14 16:38:40


I did that way because GCC do not have those __builtin functions for 16-bit
and 8-bit integral types.
So, that way I implemented it works for 64, 32, 16 an 8-bit *unsigned*
integral values.

2010/7/14 Tim Blechmann <tim_at_[hidden]>

> hi,
>
> > - *Count Leading Zeros*
>
> as for:
>
> template <typename T>
> inline int count_leading_zeros(T value)
> {
> #ifndef BOOST_HAS_NO_INT64_T
> return __builtin_clzll(value) - (64 - (sizeof(T) << 3));
> #else
> return __builtin_clz(value) - (32 - (sizeof(T) << 3));
> #endif
> }
>
> __builtin_clz comes in different versions for unsigned int, unsigned long
> and unsigned long long. i think the safest way to make use of the correct
> version is by using template specialization ... maybe similar to [1] ... i
> am also not sure, how it will behave for signed types ...
>
> but it is great to see an ilog2 implementation ...
>
=)

>
> cheers, tim
>
> [1]
>
> http://tim.klingt.org/git?p=boost_heap.git;a=blob;f=boost/heap/detail/ilog2.hpp
>
>
> --
> tim_at_[hidden]
> http://tim.klingt.org
>
> Cheat your landlord if you can and must, but do not try to shortchange
> the Muse. It cannot be done. You can't fake quality any more than you
> can fake a good meal.
> William S. Burroughs
>
>
> _______________________________________________
> Unsubscribe & other changes:
> http://lists.boost.org/mailman/listinfo.cgi/boost
>

Best,

-- 
Murilo Adriano Vasconcelos
http://murilo.wordpress.com

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk