[
https://issues.apache.org/jira/browse/STDCXX-51?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12600139#action_12600139
]
Martin Sebor commented on STDCXX-51:
------------------------------------
Interesting. Unless there's a compiler switch or pragma to preserve the sign
iostreams will never be able to print signaling NaN on Win32 because the
{{num_put}} facet takes the numeric arguments by value.
FYI: I'm putting together a review of the bit patterns used to represent
Infinity and NaN on major platforms along with some other useful bits of info,
including the libc constants for each number and the format of each produced by
{{printf()}}.
> infinity, NaN formatted differently on different platforms
> ----------------------------------------------------------
>
> Key: STDCXX-51
> URL: https://issues.apache.org/jira/browse/STDCXX-51
> Project: C++ Standard Library
> Issue Type: Improvement
> Components: 22. Localization
> Affects Versions: 4.1.2, 4.1.3, 4.1.4, 4.2.0, 4.2.1
> Environment: all
> Reporter: Martin Sebor
> Assignee: Martin Sebor
> Priority: Minor
> Fix For: 4.2.2
>
> Attachments: num_put.diff
>
> Original Estimate: 13h
> Time Spent: 13h
> Remaining Estimate: 8h
>
> The output of the program below is different depending on the operating
> system it runs on. It should be the same (preferably like that on AIX).
> {noformat}
> $ cat u.cpp && uname -sr && make u -r && ./u
> #include <iostream>
> #include <limits>
> int main ()
> {
> std::cout << std::numeric_limits<double>::infinity () << '\n'
> << std::numeric_limits<double>::quiet_NaN () << '\n'
> << std::numeric_limits<double>::signaling_NaN () << '\n';
> }
> SunOS 5.9
> gcc -c -I/build/sebor/dev/stdlib/include/ansi -D_RWSTDDEBUG -pthreads
> -D_RWSTD_USE_CONFIG -I/build/sebor/gcc-3.4.3-15s/include
> -I/build/sebor/dev/stdlib/include -I/build/sebor/dev/stdlib/examples/include
> -pedantic -nostdinc++ -g -Wall -W -Wcast-qual -Winline -Wshadow
> -Wwrite-strings -Wno-long-long u.cpp
> gcc u.o -o u -pthreads -L/build/sebor/gcc-3.4.3-15s/lib -lstd15s -lsupc++ -lm
> rm u.o
> inf
> nan
> nan
> $ uname -vs && gmake u -r && ./u
> AIX 5
> xlCcore_r -c -I/build/sebor/dev/stdlib/include/ansi -D_RWSTDDEBUG
> -D_RWSTD_USE_CONFIG -I/build/sebor/vacpp-7.0.0.3-15D/include
> -I/build/sebor/dev/stdlib/include -I/build/sebor/dev/stdlib/examples/include
> -g -q64 -qtemplateregistry=u.ti u.cpp
> xlCcore_r u.o -o u -I/build/sebor/dev/stdlib/include/ansi -D_RWSTDDEBUG
> -D_RWSTD_USE_CONFIG -liconv -brtl -q64
> -I/build/sebor/dev/stdlib/include/ansi -D_RWSTDDEBUG -D_RWSTD_USE_CONFIG
> -I/build/sebor/vacpp-7.0.0.3-15D/include -I/build/sebor/dev/stdlib/include
> -I/build/sebor/dev/stdlib/examples/include -qtemplateregistry=u.ti
> -L/build/sebor/vacpp-7.0.0.3-15D/lib -lstd15D -lm
> rm u.o
> inf
> nanq
> nans
> {noformat}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.