
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