[
https://issues.apache.org/jira/browse/STDCXX-51?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12584675#action_12584675
]
Martin Sebor commented on STDCXX-51:
------------------------------------
I think this is the right approach. At some point we will probably want to move
these functions into their own platform-specific header (analogous to the
{{_config-*.h}} headers and to what you're doing with {{_atomic.h}}).
A few suggestions regarding names:
# I think we might want to change {{\_\_rw_isinfnan}} to {{\_\_rw_isfinite}}
for consistency with C99.
# Similarly, I suggest to replace the {{\_\_rw_isneginf}}, {{\_\_rw_isposinf}},
{{\_\_rw_isnegnan}} and {{\_\_rw_isposnan}} functions with {{\_\_rw_signbit}}
and their uses with, for example {{\_\_rw_isinf\(x) && 0 >
\_\_rw_signbit\(x)}}. Besides the names being consistent with C99 breaking them
up like this should also make {{\_\_rw_fmat_infnan}} slightly more efficient in
that the function won't need to be testing for the special values repeatedly.
# Lastly, in the same vein as (1), I would suggest to rename
{{\_\_rw_fmat_infnan}} to {{\_\_rw_fmat_infinite}} since _infinite_ (i.e.,
{{!isfinite\(x)}}) implies that {{x}} is either an Infinity or NaN.
> 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
> Environment: all
> Reporter: Martin Sebor
> Assignee: Farid Zaripov
> Priority: Minor
> Fix For: 4.2.1
>
> Attachments: num_put.diff
>
> Original Estimate: 13h
> Time Spent: 13h
> Remaining Estimate: 0h
>
> 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
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.