If I follow the standards and your mail correctly: C99 says "long double" does not necessarily map to an IEEE754 type. While enforcing IEEE754-compliant rounding on "double" makes sense, I don't understand it on long double. You are talking about the 80-bit x86 extended double format as 'long double'? To have 'proper long double support' in libm, means functions with long double type signature that take these 80-bit quantities and operate on them? Most compilers use SSE when the code says long double, but SSE/SSE2 is only regular double. C99 defines eg "cosl" that takes and returns long double. Fortunately we have no system calls with long doubles, so there are no issues there. So are you proposing then 1) Make gcc and clang use larger storage (maybe already true) and avoid SSE instructions for variables declared as long double? 2) Add functions in libm so that instead of float/double versions we will have float/double/long double versions of each function? I'm not sure that this leads to a lot of incremental usefulness, and it's a fair bit of work. But from the standards-weenie view I don't see anything wrong with doing it.
Attachment:
pgpTfVupiIhK6.pgp
Description: PGP signature