Re: [linux-audio-dev] Fixed vs. floating point

From: Hannu Savolainen <hannu@email-addr-hidden>
Date: Fri Oct 14 2005 - 11:37:30 EEST

On Fri, 14 Oct 2005 cpolymeris@email-addr-hidden wrote:

> I am in the early planning stage of an audio processing application and I
> have come to the point of making the choice between floating point or fixed
> point (signed 2's complement) processing.
> What do you think is better, and why? Why does jack use floating point? Why
> does AES use fixed point in most of their standards?

Fixed point is ideal format for transferring audio data between
devices/systems/applications (for many reasons). However there are
some serious problems when using fixed point as the internal format inside
the applications.

For example if you divide a sample by a large enough value the result
will be zero (total loss of precision). Equally well if you multiply it by
a large number there will be an overflow. This means that a programmer
using fixed point needs to keep thinking about precision and overflows
all the time. This may require much more hacking energy than developing
the algorithms. In particular debugging will be pain.

Floating point in turn has 24 bits of precision which is enough for audio.
The exponent part takes care of scaling while the mantissa stays always
normalized to the full 24 bit precision. In fact 64 bit precision is used
for computations and intermediate results inside the FPU (x86 at least).
In this way the programmer doesn't need to think about the precision (in
most cases).

This is the main reason why many audio applications use floating point
internally. However many (or most) applications do just simple
computations which are easy to do in fixed point too.

Hint: Scale the input samples to the -1.0..1.0 range regardless of the
input precision (8/16/24). Scale samples to the desired output format just
before writing them to the device or to a file. This
will make your life much easier.

Best regards,

Hannu
-----
Hannu Savolainen (hannu@email-addr-hidden)
http://www.opensound.com (Open Sound System (OSS))
http://www.compusonic.fi (Finnish OSS pages)
OH2GLH QTH: Karkkila, Finland LOC: KP20CM
Received on Fri Oct 14 12:15:06 2005

This archive was generated by hypermail 2.1.8 : Fri Oct 14 2005 - 12:15:07 EEST