summaryrefslogtreecommitdiff
path: root/numeric.c
diff options
context:
space:
mode:
authorJarkko Hietaniemi <jhi@iki.fi>2015-12-04 18:22:30 -0500
committerJarkko Hietaniemi <jhi@iki.fi>2015-12-04 21:28:06 -0500
commit406d5545e79665094180534380eba323110f99bc (patch)
tree65f794bed67c485fc6e74904dac8603a9703fb07 /numeric.c
parentdf3d8cc3eeca597a21c2d7ad7686adbef4df784b (diff)
downloadperl-406d5545e79665094180534380eba323110f99bc.tar.gz
hexfp: Use Perl_fp_class_nzero unconditionally.
Otherwise in platforms with Perl_fp_class_nzero there would be no return for the x != 0.0 case.
Diffstat (limited to 'numeric.c')
-rw-r--r--numeric.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/numeric.c b/numeric.c
index 9cf6f6f523..f1de219e98 100644
--- a/numeric.c
+++ b/numeric.c
@@ -1630,11 +1630,9 @@ Users should just always call C<Perl_signbit()>.
int
Perl_signbit(NV x) {
# ifdef Perl_fp_class_nzero
- if (x == 0)
- return Perl_fp_class_nzero(x);
- /* Try finding the high byte, and assume it's highest
- * bit is the sign. This assumption is probably wrong
- * somewhere. */
+ return Perl_fp_class_nzero(x);
+ /* Try finding the high byte, and assume it's highest bit
+ * is the sign. This assumption is probably wrong somewhere. */
# elif defined(USE_LONG_DOUBLE) && LONG_DOUBLEKIND == LONG_DOUBLE_IS_X86_80_BIT_LITTLE_ENDIAN
return (((unsigned char *)&x)[9] & 0x80);
# elif defined(NV_LITTLE_ENDIAN)
@@ -1645,7 +1643,7 @@ Perl_signbit(NV x) {
# elif defined(NV_BIG_ENDIAN)
return (((unsigned char *)&x)[0] & 0x80);
# else
- /* This last fallback will fail for the negative zero. */
+ /* This last resort fallback is wrong for the negative zero. */
return (x < 0.0) ? 1 : 0;
# endif
}