I'm looking at this patch now but it'd be good if someone else
(especially Travis and/or Brad) could spend some time reviewing
it too. The goal here is to eventually provide implementations
for these functions (or similar) on all platforms.
Thanks
Martin
Farid Zaripov (JIRA) wrote:
[
https://issues.apache.org/jira/browse/STDCXX-51?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Farid Zaripov updated STDCXX-51:
--------------------------------
Attachment: num_put.diff
The proposed patch attached.
ChangeLog:
* src/num_put.cpp (__rw_isinfnan): New function to detect inf and nan values.
(__rw_isinf): New function to detect inf values.
(__rw_isneginf): New function to detect negative inf values.
(__rw_isnan): New function to detect nan values.
(__rw_isnegnan): New function to detect negative nan values.
(__rw_isqnan): New function to detect quiet nan values.
(__rw_issnan): New function to detect signaling nan values.
(__rw_fmat_infnan): New function to format inf and nan values.
(__rw_put_num): Use __rw_isinfnan() and __rw_fmat_infnan() to format inf and
nan values.
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
Environment: all
Reporter: Martin Sebor
Assignee: Farid Zaripov
Priority: Minor
Attachments: num_put.diff
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).
$ 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