Logarithmic Fixed-Point Numbers

In some situations it makes sense to use *logarithmic
fixed-point*. This number format can be regarded as a floating-point
format consisting of an exponent and no explicit significand.
However, the exponent is not interpreted as an integer as it is in
floating point. Instead, it has a fractional part which is a true
*mantissa*. (The integer part is then the ``characteristic'' of
the logarithm.) In other words, a logarithmic fixed-point number is a
binary encoding of the log-base-2 of the signal-sample magnitude. The
sign bit is of course separate.

An example 16-bit logarithmic fixed-point number format suitable for digital audio consists of one sign bit, a 5-bit characteristic, and a 10-bit mantissa:

S CCCCC MMMMMMMMMM

The 5-bit characteristic gives a dynamic range of about 6 dB = 192 dB. This is an excellent dynamic range for digital audio. (While 120 dB would seem to be enough for audio, consider that when digitally modeling a brass musical instrument, say, the internal air pressure near the ``virtual mouthpiece'' can be far higher than what actually reaches the ears in the audience.)

A nice property of logarithmic fixed-point numbers is that multiplies simply become additions and divisions become subtractions. The hard elementary operation are now addition and subtraction, and these are normally done using table lookups to keep them simple.

One ``catch'' when working with logarithmic fixed-point numbers is that you can't let ``dc'' build up. A wandering dc component will cause the quantization to be coarse even for low-level ``ac'' signals. It's a good idea to make sure dc is always filtered out in logarithmic fixed-point.

[How to cite this work] [Order a printed hardcopy] [Comment on this page via email]

Copyright ©

Center for Computer Research in Music and Acoustics (CCRMA), Stanford University