[LAD] Is -ffast-math safe for audio?

Will Godfrey willgodfrey at musically.me.uk
Sat Nov 24 11:49:46 CET 2018

On Sat, 24 Nov 2018 11:14:06 +0100
Fons Adriaensen <fons at linuxaudio.org> wrote:
>The dangerous thing to do is: 
>// given float p
>int i = (int) floorf (p);
>float f = fmodf (p, 1.0f);
>as you could end up with i + f != p.
>The safe way is of course:
>int i = (int) floorf (p);
>float f = p - i;

Thanks very much for that Fons :)

I'd been mulling over *exactly* that point for some time. My reasoning being
that in the latter case, if the integer was slightly wrong then using it for
the subtraction should give a remainder that was also slightly wrong, but in a
direction that tends to compensate for the error.

The other thing, is why do we need the floorf? Or in the original example
(which was taken from working code) truncf?

A straight cast to int seems to give exactly the same result, and is at least
twice as fast with -O3 and about 4 times as fast unoptimised.

Will J Godfrey
Say you have a poem and I have a tune.
Exchange them and we can both have a poem, a tune, and a song.

More information about the Linux-audio-dev mailing list