Loss of precision errors in FP conversions

bearophile bearophileHUGS at lycos.com
Wed Apr 20 03:23:01 PDT 2011


Robert Jacques:

> I do GP GPU work, so I use floats all the time. They're also useful for  
> data storage purposes.

Today GPUs are just starting to manage doubles efficiently (Tesla?).


> For your information, the x87 can only perform computations at 80-bits.

If you compile D1 code that doesn't contain "real" types with 32-bit LDC it uses SSE instructions on default (just 8 registers), this means most computations are done with 64 bit doubles.

And in real programs, that use trigonometry, ecc, this is not the whole story.


> Yes, this auto-promotion of literals is very annoying, and it would be  
> nice if constants could smartly match the expression type.

Polysemus literals in general (here just floating point ones) have being discussed several times in past, but I don't know if floating point polysemus literals can be implemented well, and what consequences they will have in D code. Maybe Don is able to give a good comment on this.


> By the way, C/C++ also behave this way, which has gotten me into the
> habit of adding f after all my floating point constants.

I presume if you take a good amount of care, in C (and probably in D too) you are able to avoid the performance problems I was talking about. But given a perfect programmer most warnings become useless :-) The warnings are usually meant for for programmers that do mistakes, don't know enough yet, miss things, etc.

Bye,
bearophile


More information about the Digitalmars-d mailing list