On 2005-06-19 11:12:49 +0200, Gabriel Dos Reis wrote: > Vincent Lefevre <[EMAIL PROTECTED]> writes: > | Other solutions that would fix the bug (but not ultimate solutions): > | 1) Do not claim that gcc is a conforming ISO C implementation. > > As far as I can see, there is no such claim.
The standard says: __STDC__ The decimal constant 1, intended to indicate a conforming implementation. __STDC_VERSION__ The decimal constant 199901L.138) In my program, I have: #if __STDC__ == 1 && __STDC_VERSION__ >= 199901 && defined(__STDC_IEC_559__) printf ("__STDC_IEC_559__ defined:\n" "The implementation shall conform to the IEEE-754 standard.\n" "FLT_EVAL_METHOD is %d (see ISO/IEC 9899, 5.2.4.2.2#7).\n", (int) FLT_EVAL_METHOD); #endif [...] and it outputs: __STDC_IEC_559__ defined: The implementation shall conform to the IEEE-754 standard. FLT_EVAL_METHOD is 2 (see ISO/IEC 9899, 5.2.4.2.2#7). The IEEE-754 result is 9007199254740994 with double precision. The IEEE-754 result is 9007199254740996 with extended precision. The obtained result is 9007199254740996. BUG: The implementation doesn't seem to convert values to the target type after an assignment (see ISO/IEC 9899: 5.1.2.3#12, 6.3.1.5#2 and 6.3.1.8#2[52]). -- Vincent Lefèvre <[EMAIL PROTECTED]> - Web: <http://www.vinc17.org/> 100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/> Work: CR INRIA - computer arithmetic / SPACES project at LORIA