In perl.git, the branch blead has been updated <http://perl5.git.perl.org/perl.git/commitdiff/c36075711e5fbe1f39d9cd2a98188b063f104be6?hp=efc743073c032a6311bed2650f8305d96fe60943>
- Log ----------------------------------------------------------------- commit c36075711e5fbe1f39d9cd2a98188b063f104be6 Author: Jarkko Hietaniemi <[email protected]> Date: Wed Sep 3 08:11:48 2014 -0400 POSIX math: simplify the fpclassify emulation. M ext/POSIX/POSIX.xs commit b05fd80e8a75b8bba137db6cd6688f7aa8a0ec39 Author: Jarkko Hietaniemi <[email protected]> Date: Wed Sep 3 08:06:26 2014 -0400 POSIX math: s = "0" is not happy with -Wwrite-strings. Also, an empty string is probably better than "0". M ext/POSIX/POSIX.xs ----------------------------------------------------------------------- Summary of changes: ext/POSIX/POSIX.xs | 64 ++++-------------------------------------------------- 1 file changed, 4 insertions(+), 60 deletions(-) diff --git a/ext/POSIX/POSIX.xs b/ext/POSIX/POSIX.xs index 9c7e77d..74c0483 100644 --- a/ext/POSIX/POSIX.xs +++ b/ext/POSIX/POSIX.xs @@ -572,71 +572,15 @@ static NV my_fmin(NV x, NV y) static IV my_fpclassify(NV x) { -#if defined(HAS_FPCLASSIFY) && defined(FP_PLUS_INF) /* E.g. HP-UX */ - switch (Perl_fp_class(x)) { - case FP_PLUS_INF: case FP_MINUS_INF: return FP_INFINITE; - case FP_SNAN: case FP_QNAN: return FP_NAN; - case FP_PLUS_NORM: case FP_MINUS_NORM: return FP_NORMAL; - case FP_PLUS_DENORM: case FP_MINUS_DENORM: return FP_SUBNORMAL; - case FP_PLUS_ZERO: case FP_MINUS_ZERO: return FP_ZERO; - default: return -1; - } -# define c99_fpclassify my_fpclassify -#elif (defined(HAS_FPCLASS) || defined(HAS_FPCLASSL)) && defined(FP_CLASS_SNAN) - switch (Perl_fp_class(x)) { - case FP_CLASS_NINF: case FP_CLASS_PINF: return FP_INFINITE; - case FP_CLASS_SNAN: case FP_CLASS_QNAN: return FP_NAN; - case FP_CLASS_NNORM: case FP_CLASS_PNORM: return FP_NORMAL; - case FP_CLASS_NDENORM: case FP_CLASS_PDENORM: return FP_SUBNORMAL; - case FP_CLASS_NZERO: case FP_CLASS_PZERO: return FP_ZERO; - default: return -1; - } -# define c99_fpclassify my_fpclassify -#elif (defined(HAS_FPCLASS) || defined(HAS_FP_CLASSL)) && defined(FP_SNAN) - switch (Perl_fp_class(x)) { - case FP_NINF: case FP_PINF: return FP_INFINITE; - case FP_SNAN: case FP_QNAN: return FP_NAN; - case FP_NNORM: case FP_PNORM: return FP_NORMAL; - case FP_NDENORM: case FP_PDENORM: return FP_SUBNORMAL; - case FP_NZERO: case FP_PZERO: return FP_ZERO; - default: return -1; - } -# define c99_fpclassify my_fpclassify -#elif defined(HAS_FP_CLASS) && defined(FP_POS_INF) - switch (Perl_fp_class(x)) { - case FP_NEG_INF: case FP_POS_INF: return FP_INFINITE; - case FP_SNAN: case FP_QNAN: return FP_NAN; - case FP_NEG_NORM: case FP_POS_NORM: return FP_NORMAL; - case FP_NEG_DENORM: case FP_POS_DENORM: return FP_SUBNORMAL; - case FP_NEG_ZERO: case FP_POS_ZERO: return FP_ZERO; - default: return -1; - } -# define c99_fpclassify my_fpclassify -#elif defined(HAS_CLASS) && defined(FP_PLUS_INF) - switch (Perl_fp_class(x)) { - case FP_MINUS_INF: case FP_PLUS_INF: return FP_INFINITE; - case FP_SNAN: case FP_QNAN: return FP_NAN; - case FP_MINUS_NORM: case FP_PLUS_NORM: return FP_NORMAL; - case FP_MINUS_DENORM: case FP_PLUS_DENORM: return FP_SUBNORMAL; - case FP_MINUS_ZERO: case FP_PLUS_ZERO: return FP_ZERO; - default: return -1; - } -# define c99_fpclassify my_fpclassify -#elif defined(HAS_FP_CLASSIFY) - return Perl_fp_class(x); -# define c99_fpclassify my_fpclassify -#elif defined(WIN32) - int fpclass = _fpclass(x); +#ifdef Perl_fp_class_inf if (Perl_fp_class_inf(x)) return FP_INFINITE; if (Perl_fp_class_nan(x)) return FP_NAN; if (Perl_fp_class_norm(x)) return FP_NORMAL; if (Perl_fp_class_denorm(x)) return FP_SUBNORMAL; if (Perl_fp_class_zero(x)) return FP_ZERO; - return -1; # define c99_fpclassify my_fpclassify -#else - return -1; #endif + return -1; } #endif @@ -2348,11 +2292,11 @@ fma(x,y,z) RETVAL NV -nan(s = "0") +nan(s = 0) char* s; CODE: #ifdef c99_nan - RETVAL = c99_nan(s); + RETVAL = c99_nan(s ? s : ""); #else RETVAL = NV_NAN; not_here("nan"); -- Perl5 Master Repository
