RE: [linux-audio-dev] next power of two

New Message Reply About this list Date view Thread view Subject view Author view Other groups

Subject: RE: [linux-audio-dev] next power of two
From: Hannes Guddat (hannes.guddat_AT_igd.fhg.de)
Date: Wed Sep 17 2003 - 16:50:40 EEST


Very interesting,

"in the name of all DSP programmers" - thanksalot!

Do you have any estimation how many cycles this would spend on a pentium? I
would have make a wild guess of about 16-21 cycles + call overhead (if not
inlined)..

Hannes

P.S. Maybe you have similar code for the "bitreverse" operation.. ? just
asking.. :)

//
// we apologize for the inconvenience
//
// Hannes Guddat
// Fraunhofer IGD
// A9 - Communication and Cooperation
// Rundeturmstrasse 6
// 64283 Darmstadt
//
// Tel.: +49 6151 155-217
// Fax.: +49 6151 155-559
//

> -----Original Message-----
> From: linux-audio-dev-admin_AT_music.columbia.edu
> [mailto:linux-audio-dev-admin_AT_music.columbia.edu]On Behalf Of
> Maarten de
> Boer
> Sent: Mittwoch, 17. September 2003 14:22
> To: linux-audio-dev_AT_music.columbia.edu
> Subject: [linux-audio-dev] next power of two
>
>
> Hi,
>
> A colleague of mine found this very clever algoritm to calculate the
> next power of two for a given number. It comes from the
> Prophecy SDK for
> 3d game development
> http://www.twilight3d.com/modules.php?op=modload&name=Download
> s&file=index
>
> Since this is a kind of thing often needed in audio
> processing, I wanted
> to share it with you. I certainly can not think of a faster (or more
> elegant) way of doing it.
>
> Maarten
>
> //////
> /// Returns the closest power-of-two number greater or equal
> /// to n for the given (unsigned) integer n.
> /// Will return 0 when n = 0 and 1 when n = 1.
> //////
> inline uint32_t nextPowerOfTwo(uint32_t n)
> {
> --n;
> n |= n >> 16;
> n |= n >> 8;
> n |= n >> 4;
> n |= n >> 2;
> n |= n >> 1;
> ++n;
> return n;
> }
>


New Message Reply About this list Date view Thread view Subject view Author view Other groups

This archive was generated by hypermail 2b28 : Thu Sep 18 2003 - 05:59:24 EEST