Walter Bright wrote:
The rounding mode should be determined by reading the FPU's current
rounding mode.
1. Two different systems for handling rounding is confusing and
excessively complicated.
2. The FPU can be used for handling the lower precision calculations,
where it will use its rounding mode anyway.
3. If specialized template versions of BigFloat will be the native
types, then they'll use the FPU rounding mode.
4. No new API is necessary to get/set the modes.
5. It'll respond appropriately when interfacing with code from other
languages that manipulate the FPU rounding modes.
This goes ditto for the floating point exceptions.
I'm not even sure how that should work. On x86, there are two completely
independent FPU rounding modes and exception masks: one for x87, and one
for SSE. Additionally, some of these may have rounding modes which
aren't support by the others (almost all CPUs other than x87 have a
flush-subnormals-to-zero mode; and in the IEEE spec, decimal floating
point has two extra rounding modes that binary doesn't have).
What this means, I think, is that the D-supplied mechanism for
controlling rounding mode and exceptions needs to be general enough to
support them all.