The problem is that the rounding mode affects all floating point operations, such as multiply and divide. And normally you must do rounding and not truncation. Thus changing the mode will change the results, and a compiler is not allowed to do that. Only in very specific cases, such as a loop that converts an array float values to integers, where the truncation is the only floating point operation in the loop, is the compiler allowed to do the mode settings outside the loop. But I'm not sure if gcc does this.
Ruben On Thursday 01 July 2004 10:14, Steve Harris wrote: > On Wed, Jun 30, 2004 at 11:09:28 +0200, Tim Goetze wrote: > > so if you want quick fractional sample lookups, the best option on x86 > > i see is to manually "fldcw" before and after your sample loop, and > > use lrintf() or "fistpl" directly to obtain integer indices inside > > the loop. > > I wonder why gcc doenst spot that? > > - Steve