The BKM algorithm is a shift-and-add method for computing elementary functions, first published in 1994 by Jean-Claude Bajard, Sylvanus Kla and Jean-Michel Muller. It works on complex logarithms (called L-mode) and complex exponentials (E-mode), using an approach similar to the one Henry Briggs used to compute logarithms by hand. A precomputed table of logarithms of terms built from negative powers of two lets the method evaluate a function using only integer addition, shifting and comparison, with no multiplication. BKM resembles CORDIC but stores a table of logarithms where CORDIC stores arctangents. On each iteration BKM chooses a coefficient from a set of nine complex numbers, rather than only minus one or plus one as CORDIC does, and unlike CORDIC it needs no scaling factor applied to the result. Like CORDIC it gains roughly one bit of precision per iteration, but it needs more table entries for the same precision because the table holds logarithms of complex operands. As with other shift-and-add algorithms, it suits hardware implementation well, while its speed in software compared with polynomial or rational approximation depends on fast multi-bit shifts such as a barrel shifter, or on hardware floating point.
Sources
BKM algorithm (Wikipedia)
Reader Challenges (0)
No disputes yet. Spotted an error or a better source? Open the first one.
Sign in to dispute this or suggest a correction.