On 16.05.2016 07:49, Max Samukha wrote:
On Monday, 16 May 2016 at 04:02:54 UTC, Manu wrote:
extended x = 1.3;
x + y;
If that code were to CTFE, I expect the CTFE to use extended precision.
My point is, CTFE should surely follow the types and language
semantics as if it were runtime generated code... It's not reasonable
that CTFE has higher precision applied than the same code at runtime.
CTFE must give the exact same result as runtime execution of the
function.
You are not even guaranteed to get the same result on two different x86
implementations.
Without reading the x86 specification, I think it is safe to claim that
you actually are guaranteed to get the same result.
AMD64:
"The processor produces a floating-point result defined by the IEEE
standard to be infinitely precise.
This result may not be representable exactly in the destination format,
because only a subset of the
continuum of real numbers finds exact representation in any particular
floating-point format."
This just says that results of computations will need to be rounded to
fit into constant-size storage.