Tech Talk

Linux, Python, E51, Scripting…

Writing my own algorithm

with 2 comments

I always considered myself a not-so-bad programmer, but I never have written my own algorithm for anything. Not to mean that I always lifted my code from somewhere, but almost always I would have coded some known algorithm to do the same work. You have pseudo codes in most algorithm text books.

Today, perhaps second or third time, I wrote my own algorithm to do a simple job: bit reverse an integer. It is a common thing in FFT implementations. In most cases, the bit reversal in FFT will use the block nature of FFT also. But my requirement is not in FFT. I looked around a bit and got quite a couple of links with working code. I ain’t linking them here.

Here is the snippet of code I wrote for this. I am not claiming anything by writing this code. Just that I spent a couple of minutes arriving at it. Its totally intuitive and “naive”, if you want to call it that.


int bitreverse(int val, int len) {
int i;
int br = 0;
for(i=0;i<len;i++) {
br += ((val&1) * ((int)exp2f((float)(len-i-1))));
val >>=1;
}
return br;
}

Zemanta Pixie

Written by abiya

June 27, 2008 at 12:03 pm

2 Responses

Subscribe to comments with RSS.

  1. There’s no need for the call to exp2f(), this does the same thing:

    br += (val & 1) << (len – i – 1);

    Anders Sandvig

    June 27, 2008 at 2:34 pm

  2. Ha! I should’ve noted that!! Anyways, thank you for pointing that out.

    Abishek Goda

    June 28, 2008 at 9:45 am


Leave a Reply