??? 08/17/06 19:15 Read: times |
#122494 - Things you find ... |
I've recently been having a look at some production-grade code (old, has been around for over ten years, running on different processors).
I found a function that uses a 2.5 kB lookup table, an intricate table-search algorithm, and interpolation, all very well documented ... to calculate the square root of a 32-bit integer. Several people have looked at this code before me. Why didn't anyone spot this ? I don't get it. I suggested replacing it with 10 lines of C that do the same job. |
Topic | Author | Date |
Things you find ... | 01/01/70 00:00 | |
10 lines PLUS a whole bunch of 'lines' | 01/01/70 00:00 | |
I forgot to mention ... | 01/01/70 00:00 | |
sounds reasonable | 01/01/70 00:00 | |
I'll optimize it tomorrow. | 01/01/70 00:00 | |
haven't heard of that one | 01/01/70 00:00 | |
Do it using the RLC instruction. | 01/01/70 00:00 | |
Optimized results: | 01/01/70 00:00 | |
how does the lookup table approach time | 01/01/70 00:00 | |
Comparison: | 01/01/70 00:00 | |
Table error | 01/01/70 00:00 | |
No error. | 01/01/70 00:00 | |
So how did you calculate/measure the average? | 01/01/70 00:00 | |
Right below the table: | 01/01/70 00:00 | |
I do the same thing | 01/01/70 00:00 | |
Lookup table will win hands down | 01/01/70 00:00 | |
For floats, yes. For long ints ... not so sure. | 01/01/70 00:00 | |
one more thing | 01/01/70 00:00 | |
if the precision is not 'critical' | 01/01/70 00:00 | |
Another source | 01/01/70 00:00 | |
What about a Hardware Solution? | 01/01/70 00:00 |