<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Windows-1252">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.0.6249.1">
<TITLE>RE: [linux-audio-dev] next power of two</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/plain format -->

<P><FONT SIZE=2>Very interesting,</FONT>
</P>

<P><FONT SIZE=2>"in the name of all DSP programmers" - thanksalot!</FONT>
</P>

<P><FONT SIZE=2>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)..</FONT></P>

<P><FONT SIZE=2>Hannes</FONT>
</P>

<P><FONT SIZE=2>P.S. Maybe you have similar code for the "bitreverse" operation.. ?  just asking.. :) </FONT>
</P>

<P><FONT SIZE=2>//</FONT>

<BR><FONT SIZE=2>// we apologize for the inconvenience</FONT>

<BR><FONT SIZE=2>//</FONT>

<BR><FONT SIZE=2>// Hannes Guddat</FONT>

<BR><FONT SIZE=2>// Fraunhofer IGD</FONT>

<BR><FONT SIZE=2>// A9 - Communication and Cooperation</FONT>

<BR><FONT SIZE=2>// Rundeturmstrasse 6</FONT>

<BR><FONT SIZE=2>// 64283 Darmstadt</FONT>

<BR><FONT SIZE=2>//</FONT>

<BR><FONT SIZE=2>// Tel.:        +49 6151 155-217</FONT>

<BR><FONT SIZE=2>// Fax.:        +49 6151 155-559</FONT>

<BR><FONT SIZE=2>//</FONT>
</P>
<BR>

<P><FONT SIZE=2>> -----Original Message-----</FONT>

<BR><FONT SIZE=2>> From: linux-audio-dev-admin@music.columbia.edu</FONT>

<BR><FONT SIZE=2>> [<A HREF="mailto:linux-audio-dev-admin@music.columbia.edu">mailto:linux-audio-dev-admin@music.columbia.edu</A>]On Behalf Of </FONT>

<BR><FONT SIZE=2>> Maarten de</FONT>

<BR><FONT SIZE=2>> Boer</FONT>

<BR><FONT SIZE=2>> Sent: Mittwoch, 17. September 2003 14:22</FONT>

<BR><FONT SIZE=2>> To: linux-audio-dev@music.columbia.edu</FONT>

<BR><FONT SIZE=2>> Subject: [linux-audio-dev] next power of two</FONT>

<BR><FONT SIZE=2>> </FONT>

<BR><FONT SIZE=2>> </FONT>

<BR><FONT SIZE=2>> Hi,</FONT>

<BR><FONT SIZE=2>> </FONT>

<BR><FONT SIZE=2>> A colleague of mine found this very clever algoritm to calculate the</FONT>

<BR><FONT SIZE=2>> next power of two for a given number. It comes from the </FONT>

<BR><FONT SIZE=2>> Prophecy SDK for</FONT>

<BR><FONT SIZE=2>> 3d game development</FONT>

<BR><FONT SIZE=2>> <A HREF="http://www.twilight3d.com/modules.php?op=modload&name=Download">http://www.twilight3d.com/modules.php?op=modload&name=Download</A></FONT>

<BR><FONT SIZE=2>> s&file=index</FONT>

<BR><FONT SIZE=2>> </FONT>

<BR><FONT SIZE=2>> Since this is a kind of thing often needed in audio </FONT>

<BR><FONT SIZE=2>> processing, I wanted</FONT>

<BR><FONT SIZE=2>> to share it with you. I certainly can not think of a faster (or more</FONT>

<BR><FONT SIZE=2>> elegant) way of doing it. </FONT>

<BR><FONT SIZE=2>> </FONT>

<BR><FONT SIZE=2>> Maarten</FONT>

<BR><FONT SIZE=2>> </FONT>

<BR><FONT SIZE=2>>          //////</FONT>

<BR><FONT SIZE=2>>          /// Returns the closest power-of-two number greater or equal</FONT>

<BR><FONT SIZE=2>>          /// to n for the given (unsigned) integer n.</FONT>

<BR><FONT SIZE=2>>          /// Will return 0 when n = 0 and 1 when n = 1.</FONT>

<BR><FONT SIZE=2>>          //////</FONT>

<BR><FONT SIZE=2>>          inline uint32_t nextPowerOfTwo(uint32_t n)</FONT>

<BR><FONT SIZE=2>>          {</FONT>

<BR><FONT SIZE=2>>                  --n;</FONT>

<BR><FONT SIZE=2>>                  n |= n >> 16;</FONT>

<BR><FONT SIZE=2>>                  n |= n >> 8;</FONT>

<BR><FONT SIZE=2>>                  n |= n >> 4;</FONT>

<BR><FONT SIZE=2>>                  n |= n >> 2;</FONT>

<BR><FONT SIZE=2>>                  n |= n >> 1;</FONT>

<BR><FONT SIZE=2>>                  ++n;</FONT>

<BR><FONT SIZE=2>>                  return n;</FONT>

<BR><FONT SIZE=2>>          }</FONT>

<BR><FONT SIZE=2>> </FONT>
</P>

</BODY>
</HTML>