Am Mittwoch, den 10.08.2005, 16:23 +0300 schrieb Stauros Passas: > Accurate logarithm algorithms are costly,and I don't think > are needed from kernel developers, usually a approximation is enough. > So if u want something realy accurate, > u must look how it is implemented on libc. No, I'm pretty find with a bit-shifted implementation - my question is: Why is there not a single implementation that fits most people's needs? The way log2 functions and macros are interpersed throughout the kernel looks very spaghetti to me - everyone brewing his own one. Wouldn't it be more sensible to supply one portable one, with bit shifts, and people with a need for O(1) timing could implement it using an array? > The easiest(and fastest) way to compute a logarithm > (with or without base 2) is to make bit shifts. > > > > > Is this desirable? While it may be some reduction for special cases using a > > table (like in the log2_2048 function I found - it computes only a certain of > > log2 and multiplies this with 2048), wouldn't a more generic implementation > > like ceil_log2 and floor_log2 not be desirable for all platforms? > > U can simply use the functions of bitops.h (of asm-alpha) inline > functions, removing the alpha special comands: Well, I could, but that is not quite my point. That would be a kernel patch to just my kernel. Wouldn't it be more wise to supply a patch providing a single implementation in the standard kernel and start converting most other log2 implementations to that one? I don't have a good feeling with everyone implementing the same, for really minimal gains. You may say I'm more worried about software engineering practice than a really quick solution. ;) Thanks and with kind regards, Oliver Korpilla -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ FAQ: http://kernelnewbies.org/faq/