Why don't we switch to C like floating pointed arithmetic instead of automatic expansion to reals?

Ilya Yaroshenko via Digitalmars-d digitalmars-d at puremagic.com
Sat Aug 6 02:48:25 PDT 2016


On Saturday, 6 August 2016 at 09:35:32 UTC, Walter Bright wrote:
> On 8/6/2016 1:21 AM, Ilya Yaroshenko wrote:
>> We need 2 new pragmas with the same syntax as `pragma(inline, 
>> xxx)`:
>>
>> 1. `pragma(fusedMath)` allows fused mul-add, mul-sub, div-add, 
>> div-sub operations.
>> 2. `pragma(fastMath)` equivalents to [1]. This pragma can be 
>> used to allow
>> extended precision.
>
>
> The LDC fastmath bothers me a lot. It throws away proper NaN 
> and infinity handling, and throws away precision by allowing 
> reciprocal and algebraic transformations. As I've said before, 
> correctness should be first, not speed, and fastmath has 
> nothing to do with this thread.

OK, then we need a third pragma,`pragma(ieeeRound)`. But 
`pragma(fusedMath)` and `pragma(fastMath)` should be presented 
too.

> I don't know what the point of fusedMath is.

It allows a compiler to replace two arithmetic operations with 
single composed one, see AVX2 (FMA3 for intel and FMA4 for AMD) 
instruction set.


More information about the Digitalmars-d mailing list