On 2017/5/16 0:43, Vincent Lefevre wrote: > On 2017-05-15 22:35:33 +0800, Liu Hao wrote: >> Yeah but `printf()` from glibc doesn't think it is a NaN... From >> your point of view, is this a glibc bug? > > I think so. If I understand correctly, the output of floating-point > data in glibc is handled in stdio-common/printf_fp.c, which uses: > > extern mp_size_t __mpn_extract_long_double (mp_ptr res_ptr, mp_size_t size, > int *expt, int *is_neg, > long double value); > > The code is one of (not sure): > sysdeps/i386/ldbl2mpn.c > sysdeps/ieee754/ldbl-96/ldbl2mpn.c > > In sysdeps/i386/ldbl2mpn.c only, there is a special case for > "pseudo zero" (no comments about the choice of the behavior, > though), which was added here: > > commit 835abc5c0dfd1ba8aabeb52d46793b13702c708b > Author: Ulrich Drepper <[email protected]> > Date: 2007-06-08 02:50:59 +0000 > > [BZ #4586] > > 2007-06-06 Jakub Jelinek <[email protected]> > BZ #4586 > * sysdeps/i386/ldbl2mpn.c (__mpn_extract_long_double): Treat > pseudo-zeros as zero. > * sysdeps/x86_64/ldbl2mpn.c: New file. > * sysdeps/ia64/ldbl2mpn.c: New file. > > This corresponds to Bruno Haible's bug report: > > https://sourceware.org/bugzilla/show_bug.cgi?id=4586 > > (though this was for IA64). He said: > > Additionally, the printf results for pseudo-NaN and pseudo-Inf > should better be "nan", because these numbers behave like NaNs > in comparisons, as you can see from the program's output. > > Not sure about the reason of the current choice. > It seems that MinGW-w64 is suffering from the same problem. I CC'd both. Looking forward to other people's opinion.
Reference: https://gcc.gnu.org/ml/gcc-help/2017-05/msg00123.html -- Best regards, LH_Mouse ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Mingw-w64-public mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/mingw-w64-public
