Thread overview | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
October 06, 2012 next power of 2 | ||||
---|---|---|---|---|
| ||||
is there any Phobos function to calculate the next power of 2 of the specified number? |
October 06, 2012 Re: next power of 2 | ||||
---|---|---|---|---|
| ||||
Posted in reply to ref2401 | On 10/6/12 4:48 PM, ref2401 wrote: > is there any Phobos function to calculate the next power of 2 of the > specified number? Use 1U << bsr(x). http://dlang.org/phobos/core_bitop.html#bsr Andrei |
October 06, 2012 Re: next power of 2 | ||||
---|---|---|---|---|
| ||||
Posted in reply to ref2401 | On 07-Oct-12 00:48, ref2401 wrote: > is there any Phobos function to calculate the next power of 2 of the > specified number? No though it's reinvented in a couple of places I think. Anyway this should work for unsigned numbers: import core.bitop; T nextPow2(T)(T x){ return x == 0 ? 1 : 1^^(bsr(x)+1); } -- Dmitry Olshansky |
October 06, 2012 Re: next power of 2 | ||||
---|---|---|---|---|
| ||||
Posted in reply to Dmitry Olshansky | On 07-Oct-12 00:54, Dmitry Olshansky wrote: > On 07-Oct-12 00:48, ref2401 wrote: >> is there any Phobos function to calculate the next power of 2 of the >> specified number? > > No though it's reinvented in a couple of places I think. > > Anyway this should work for unsigned numbers: > > import core.bitop; > T nextPow2(T)(T x){ > return x == 0 ? 1 : 1^^(bsr(x)+1); > } Yikes, 1<<(bsr(x)+1) or 2 ^^ (bsr(x)+1) ... still haven't got used to 2^^x notation compared to shifts. -- Dmitry Olshansky |
October 06, 2012 Re: next power of 2 | ||||
---|---|---|---|---|
| ||||
Posted in reply to Dmitry Olshansky | On 10/6/12 4:54 PM, Dmitry Olshansky wrote:
> On 07-Oct-12 00:48, ref2401 wrote:
>> is there any Phobos function to calculate the next power of 2 of the
>> specified number?
>
> No though it's reinvented in a couple of places I think.
>
> Anyway this should work for unsigned numbers:
>
> import core.bitop;
> T nextPow2(T)(T x){
> return x == 0 ? 1 : 1^^(bsr(x)+1);
> }
That's right, apologies for my buggy suggestion.
Andrei
|
October 06, 2012 Re: next power of 2 | ||||
---|---|---|---|---|
| ||||
Posted in reply to Dmitry Olshansky | On 10/6/12 4:57 PM, Dmitry Olshansky wrote:
> On 07-Oct-12 00:54, Dmitry Olshansky wrote:
>> On 07-Oct-12 00:48, ref2401 wrote:
>>> is there any Phobos function to calculate the next power of 2 of the
>>> specified number?
>>
>> No though it's reinvented in a couple of places I think.
>>
>> Anyway this should work for unsigned numbers:
>>
>> import core.bitop;
>> T nextPow2(T)(T x){
>> return x == 0 ? 1 : 1^^(bsr(x)+1);
>> }
>
> Yikes, 1<<(bsr(x)+1) or 2 ^^ (bsr(x)+1) ...
> still haven't got used to 2^^x notation compared to shifts.
That's right, apologies for my buggy suggestion and my suggestion of a buggy suggestion :o).
Andrei
|
October 06, 2012 Re: next power of 2 | ||||
---|---|---|---|---|
| ||||
Posted in reply to Andrei Alexandrescu | On 07-Oct-12 00:58, Andrei Alexandrescu wrote: > On 10/6/12 4:57 PM, Dmitry Olshansky wrote: >> On 07-Oct-12 00:54, Dmitry Olshansky wrote: >>> On 07-Oct-12 00:48, ref2401 wrote: >>>> is there any Phobos function to calculate the next power of 2 of the >>>> specified number? >>> >>> No though it's reinvented in a couple of places I think. >>> >>> Anyway this should work for unsigned numbers: >>> >>> import core.bitop; >>> T nextPow2(T)(T x){ >>> return x == 0 ? 1 : 1^^(bsr(x)+1); >>> } >> >> Yikes, 1<<(bsr(x)+1) or 2 ^^ (bsr(x)+1) ... >> still haven't got used to 2^^x notation compared to shifts. > > That's right, apologies for my buggy suggestion and my suggestion of a > buggy suggestion :o). > Post of the day :) -- Dmitry Olshansky |
October 06, 2012 Re: next power of 2 | ||||
---|---|---|---|---|
| ||||
Posted in reply to ref2401 | On Saturday, 6 October 2012 at 21:00:57 UTC, ref2401 wrote: > is there any Phobos function to calculate the next power of 2 of the specified number? See: http://d.puremagic.com/issues/show_bug.cgi?id=6343 Bye, bearophile |
Copyright © 1999-2021 by the D Language Foundation