diff options
author | Jarkko Hietaniemi <jhi@iki.fi> | 2014-09-08 17:14:01 -0400 |
---|---|---|
committer | Jarkko Hietaniemi <jhi@iki.fi> | 2014-09-08 17:16:09 -0400 |
commit | 78c93c95da82e34162caa33df525a9f0c1d651a5 (patch) | |
tree | 1d4490cbbb707b6ce290681c54d83629c8d2fdcd /hints | |
parent | 8f1f21f636a6ab9be5eacad384d974cf6309c7cd (diff) | |
download | perl-78c93c95da82e34162caa33df525a9f0c1d651a5.tar.gz |
Document the IBM admission of weirdness of AIX long doubles.
Also skip the infnan test in AIX + long doubles because given
the IBM documentation it ain't gonna happen.
Diffstat (limited to 'hints')
-rw-r--r-- | hints/aix.sh | 39 |
1 files changed, 37 insertions, 2 deletions
diff --git a/hints/aix.sh b/hints/aix.sh index a09c85c2e8..956e80666b 100644 --- a/hints/aix.sh +++ b/hints/aix.sh @@ -546,6 +546,43 @@ fi # Some releases (and patch levels) of AIX cannot have both # long doubles and infinity (infinity plus one equals ... NaNQ!) +# +# This deficiency, and others, is apparently a well-documented feature +# of AIX 128-bit long doubles: +# +# http://www-01.ibm.com/support/knowledgecenter/ssw_aix_61/com.ibm.aix.genprogc/128bit_long_double_floating-point_datatype.htm +# +# The URL seems to be fragile, it has moved around over the years, +# but searching AIX docs at ibm.com for "128-bit long double +# floating-point data type" should surface the latest info. +# +# Some salient points: +# +# <quote> +# * The 128-bit implementation differs from the IEEE standard for long double +# in the following ways: +# * Supports only round-to-nearest mode. If the application changes +# the rounding mode, results are undefined. +# * Does not fully support the IEEE special numbers NaN and INF. +# * Does not support IEEE status flags for overflow, underflow, +# and other conditions. These flags have no meaning for the 128-bit +# long double inplementation. +# * The 128-bit long double data type does not support the following math +# APIs: atanhl, cbrtl, copysignl, exp2l, expm1l, fdiml, fmal, fmaxl, +# fminl, hypotl, ilogbl, llrintl, llroundl, log1pl, log2l, logbl, +# lrintl, lroundl, nanl, nearbyintl, nextafterl, nexttoward, +# nexttowardf, nexttowardl, remainderl, remquol, rintl, roundl, +# scalblnl, scalbnl, tgammal, and truncl. +# * The representation of 128-bit long double numbers means that the +# following macros required by standard C in the values.h file do not +# have clear meaning: +# * Number of bits in the mantissa (LDBL_MANT_DIG) +# * Epsilon (LBDL_EPSILON) +# * Maximum representable finite value (LDBL_MAX) +# </quote> +# +# The missing math functions affect the POSIX extension math interfaces. + case "$uselongdouble" in define) echo "Checking if your infinity is working with long doubles..." >&4 @@ -564,7 +601,6 @@ EOF *) # NaNQ echo " " echo "Your infinity is broken, I suggest disabling long doubles." >&4 - echo "The t/op/infnan.t will fail if broken long doubles are enabled. ">&4 rp="Disable long doubles?" dflt="y" . UU/myread @@ -578,7 +614,6 @@ EOF ;; *) echo "Okay, keeping long doubles enabled." >&4 - echo "But please note that t/op/infnan.t will fail a lot." >&4 ;; esac ;; |