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