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


Reply via email to