CTFE Status 2

Stefan Koch via Digitalmars-d digitalmars-d at puremagic.com
Tue Jun 20 05:55:33 PDT 2017


On Tuesday, 20 June 2017 at 12:07:00 UTC, Stefan Koch wrote:
> On Thursday, 16 February 2017 at 21:05:51 UTC, Stefan Koch 
> wrote:
>> [ ... ]
>
> limited Support for 32bit floating point ops [+, -, *, /, %] 
> has just landed in newCTFE.
>
> float fmadd(float a, float b, float c)
> {
>     return b + a * c;
> }
>
> pragma(msg, fmadd(6.7, 8.9, 1.3)/* == 17.61f*/);
> pragma(msg, fmadd(6.7, 8.9, -1.3)/* == 19.00f*/);
These will pass with newCTFE:
static assert(fmadd(0x1.acccccp+2, 0x1.166666p+3, 0x1.4cccccp+0) 
== 0x1.168f5cp+4);
static assert(fmadd(0x1.acccccp+2, 0x1.166666p+3, -0x1.4cccccp+0) 
== -0x1.47a8p-7);

Proving that newCTFE's floating-point-math works the same as 
runtime-floating-point math.
Which is not surprising since the interpreter uses same code as 
the runtime version.
At-least if you bootstrap dmd with itself.



More information about the Digitalmars-d mailing list