<!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>