Floating point rounding modes: we should restrict them slightly
Don
nospam at nospam.com
Sun Sep 13 03:14:02 PDT 2009
Walter Bright wrote:
> Don wrote:
>> PROPOSAL:
>> Change the spec by adding the line to float.html:
>> "If the floating-point rounding mode is changed within a function, it
>> must be restored before the function exits. If this rule is violated
>> (for example, by the use of inline asm), the rounding mode used for
>> subsequent calculations is undefined."
>
> But that doesn't allow for changing the rounding mode at a global level,
> then rerunning one's computation to determine how rounding affects their
> final result.
It doesn't prevent that at all. You just need to change the rounding
mode before running your computation (at the start of main(), for
example), and then reset it after performing the computation. What it
does do is prevent different terms within a single expression from
interacting which other.
eg
double foo() {
return x() + y();
}
x() and y() can use whichever rounding modes they like, and if they are
impure, they can affect one another, but under this proposal, they
cannot change the meaning of the addition inside foo().
More information about the Digitalmars-d
mailing list