Subject: Re: [boost] Fixed point integer proposal
From: Soren Holstebroe (holstebroe_at_[hidden])
Date: 2009-06-25 22:07:18


> In this (slightly-less non-toy case), floats were a little bit faster. If
> you actually used fixed-point here, rather than floats, then the difference
> would be much larger again.

You are indeed right, that enabling SSE2 gives float speed close to
integer speed.
I tested your code example and depending on which operations that were
used in the calculation I got different winner types (i changed the
mod operator in your array access, since that was very expensive and
biased the results).
I also tested my fixed point template and interestingly it performed
best of the three for some calculations. I was surprised about that
one and have no good explanation to that yet. I might have to look
into the generated assembly code to check out what is going on.

Anyway, as you point out, speed isn't the only justification for a
fixed point class, if at all, though you might get considerable speed
gains on some architectures.

I have enjoyed the seamless syntax of converting third party fixed
point audio stream (libmad) to floats for audio filtering and then to
the sound system output. Since I defined my float audio to be in
normal range between -1 and 1 I just had to define a 16 bit signed
fixed point for the audio output type.

Driftless accumulation is another obvious benefit of fixed point in
many applications.

All in all I still believe a fixed point class would fit in the boost
library, since it has many general applications.

Regards
Soren