glibc/sysdeps/ieee754/dbl-64
Joseph Myers f6987f5aa4 Fix hypot missing underflows (bug 18803).
Similar to various other bugs in this area, hypot functions can fail
to raise the underflow exception when the result is tiny and inexact
but one or more low bits of the intermediate result that is scaled
down (or, in the i386 case, converted from a wider evaluation format)
are zero.  This patch forces the exception in a similar way to
previous fixes.

Note that this issue cannot arise for implementations of hypotf using
double (or wider) for intermediate evaluation (if hypotf should
underflow, that means the double square root is being computed of some
number of the form N*2^-298, for 0 < N < 2^46, which is exactly
represented as a double, and whatever the rounding mode such a square
root cannot have a mantissa with all zeroes after the initial 23
bits).  Thus no changes are made to hypotf implementations in this
patch, only to hypot and hypotl.

Tested for x86_64, x86, mips64 and powerpc.

	[BZ #18803]
	* sysdeps/i386/fpu/e_hypot.S: Use DEFINE_DBL_MIN.
	(MO): New macro.
	(__ieee754_hypot) [PIC]: Load PIC register.
	(__ieee754_hypot): Use DBL_NARROW_EVAL_UFLOW_NONNEG instead of
	DBL_NARROW_EVAL.
	* sysdeps/ieee754/dbl-64/e_hypot.c (__ieee754_hypot): Use
	math_check_force_underflow_nonneg in case where result might be
	tiny.
	* sysdeps/ieee754/ldbl-128/e_hypotl.c (__ieee754_hypotl):
	Likewise.
	* sysdeps/ieee754/ldbl-128ibm/e_hypotl.c (__ieee754_hypotl):
	Likewise.
	* sysdeps/ieee754/ldbl-96/e_hypotl.c (__ieee754_hypotl): Likewise.
	* sysdeps/powerpc/fpu/e_hypot.c (__ieee754_hypot): Likewise.
	* math/auto-libm-test-in: Add more tests of hypot.
	* math/auto-libm-test-out: Regenerated.
2015-09-24 23:43:57 +00:00
..
wordsize-64 Since we now inline isinf, isnan and isfinite in math.h, replace uses of __isinf_ns(l/f) 2015-09-18 20:51:52 +01:00
asincos.tbl Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
atnat2.h Fix several build failures with GCC6 due to unused static variables. 2015-09-18 20:42:54 +01:00
atnat.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
branred.c Remove various ABS macros and replace uses with fabs (or in one case abs) 2015-05-15 11:04:40 +00:00
branred.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
dbl2mpn.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
dla.h Remove various ABS macros and replace uses with fabs (or in one case abs) 2015-05-15 11:04:40 +00:00
doasin.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
doasin.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
dosincos.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
dosincos.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
e_acos.c Update. 2001-03-12 00:04:52 +00:00
e_acosh.c Format floating routines. 2013-10-17 16:03:24 +02:00
e_asin.c Refactor code forcing underflow exceptions. 2015-09-23 22:42:30 +00:00
e_atan2.c Fix dbl-64 atan2 in non-default rounding modes (bug 18210, bug 18211). 2015-04-08 17:32:17 +00:00
e_atanh.c Refactor code forcing underflow exceptions. 2015-09-23 22:42:30 +00:00
e_cosh.c Avoid excess range overflowing results from cosh, sinh, lgamma (bug 18980). 2015-09-18 20:00:48 +00:00
e_exp2.c Refactor code forcing underflow exceptions. 2015-09-23 22:42:30 +00:00
e_exp10.c This patch renames all uses of __isinf*, __isnan*, __finite* and __signbit* to use standard C99 macros. This has no effect on generated code. 2015-06-03 15:41:36 +01:00
e_exp.c Refactor code forcing underflow exceptions. 2015-09-23 22:42:30 +00:00
e_fmod.c Use glibc_likely instead __builtin_expect. 2014-02-10 15:07:12 +01:00
e_gamma_r.c Refactor code forcing underflow exceptions. 2015-09-23 22:42:30 +00:00
e_hypot.c Fix hypot missing underflows (bug 18803). 2015-09-24 23:43:57 +00:00
e_ilogb.c Format floating routines. 2013-10-17 16:03:24 +02:00
e_j0.c Avoid uninitialized warnings in Bessel functions. 2015-02-26 21:49:19 +00:00
e_j1.c Refactor code forcing underflow exceptions. 2015-09-23 22:42:30 +00:00
e_jn.c Refactor code forcing underflow exceptions. 2015-09-23 22:42:30 +00:00
e_lgamma_r.c Avoid excess range overflowing results from cosh, sinh, lgamma (bug 18980). 2015-09-18 20:00:48 +00:00
e_log2.c Use glibc_likely instead __builtin_expect. 2014-02-10 15:07:12 +01:00
e_log10.c Use glibc_likely instead __builtin_expect. 2014-02-10 15:07:12 +01:00
e_log.c Remove various ABS macros and replace uses with fabs (or in one case abs) 2015-05-15 11:04:40 +00:00
e_pow.c This patch renames all uses of __isinf*, __isnan*, __finite* and __signbit* to use standard C99 macros. This has no effect on generated code. 2015-06-03 15:41:36 +01:00
e_rem_pio2.c Format floating routines. 2013-10-17 16:03:24 +02:00
e_remainder.c Remove various ABS macros and replace uses with fabs (or in one case abs) 2015-05-15 11:04:40 +00:00
e_sinh.c Refactor code forcing underflow exceptions. 2015-09-23 22:42:30 +00:00
e_sqrt.c Fix libm fegetround namespace (bug 17748). 2015-01-02 20:44:42 +00:00
gamma_product.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
gamma_productf.c Use math_narrow_eval more consistently. 2015-09-23 18:14:57 +00:00
halfulp.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
k_cos.c Update. 2001-03-12 00:04:52 +00:00
k_rem_pio2.c Use math_narrow_eval more consistently. 2015-09-23 18:14:57 +00:00
k_sin.c Update. 2001-03-12 00:04:52 +00:00
k_tan.c Replace sysdeps/ieee754/dbl-64/k_tan.c with empty file 2012-02-26 16:10:46 +01:00
lgamma_neg.c Use math_narrow_eval more consistently. 2015-09-23 18:14:57 +00:00
lgamma_product.c Fix lgamma (negative) inaccuracy (bug 2542, bug 2543, bug 2558). 2015-09-10 22:27:58 +00:00
Makefile powerpc: Fix incorrect results for pow when using FMA 2015-03-10 09:38:54 -04:00
MathLib.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mpa-arch.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mpa.c Fix sysdeps/ieee754/dbl-64/mpa.c for -Wuninitialized. 2015-05-21 23:05:45 +00:00
mpa.h Remove various ABS macros and replace uses with fabs (or in one case abs) 2015-05-15 11:04:40 +00:00
mpatan2.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mpatan.c Remove various ABS macros and replace uses with fabs (or in one case abs) 2015-05-15 11:04:40 +00:00
mpatan.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mpexp.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mplog.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mpn2dbl.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mpsqrt.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mpsqrt.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mptan.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mydefs.h Remove various ABS macros and replace uses with fabs (or in one case abs) 2015-05-15 11:04:40 +00:00
powtwo.tbl Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
root.tbl Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_asinh.c Refactor code forcing underflow exceptions. 2015-09-23 22:42:30 +00:00
s_atan.c Refactor code forcing underflow exceptions. 2015-09-23 22:42:30 +00:00
s_cbrt.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_ceil.c Format floating routines. 2013-10-17 16:03:24 +02:00
s_copysign.c Format floating routines. 2013-10-17 16:03:24 +02:00
s_cos.c Update. 2001-03-12 00:04:52 +00:00
s_erf.c Refactor code forcing underflow exceptions. 2015-09-23 22:42:30 +00:00
s_expm1.c Refactor code forcing underflow exceptions. 2015-09-23 22:42:30 +00:00
s_fabs.c 2015-05-28 Wilco Dijkstra <wdijkstr@arm.com> 2015-05-28 11:42:55 +01:00
s_finite.c Reduce number of constants in __finite* (bug 15384). 2015-09-17 16:47:14 +00:00
s_floor.c Format floating routines. 2013-10-17 16:03:24 +02:00
s_fma.c Refactor code forcing underflow exceptions. 2015-09-23 22:42:30 +00:00
s_fmaf.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_fpclassify.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_frexp.c Format floating routines. 2013-10-17 16:03:24 +02:00
s_isinf.c Format floating routines. 2013-10-17 16:03:24 +02:00
s_isnan.c Format floating routines. 2013-10-17 16:03:24 +02:00
s_issignaling.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_llrint.c Use math_narrow_eval more consistently. 2015-09-23 18:14:57 +00:00
s_llround.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_log1p.c Refactor code forcing underflow exceptions. 2015-09-23 22:42:30 +00:00
s_logb.c Use glibc_likely instead __builtin_expect. 2014-02-10 15:07:12 +01:00
s_lrint.c Use math_narrow_eval more consistently. 2015-09-23 18:14:57 +00:00
s_lround.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_modf.c Use glibc_likely instead __builtin_expect. 2014-02-10 15:07:12 +01:00
s_nearbyint.c Format floating routines. 2013-10-17 16:03:24 +02:00
s_nexttoward.c Update. 1999-07-14 00:54:57 +00:00
s_remquo.c Fix sign of remquo zero remainder in round-downward mode (bug 17987). 2015-02-17 00:41:50 +00:00
s_rint.c Format floating routines. 2013-10-17 16:03:24 +02:00
s_round.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_scalbln.c [BZ #6803] Set errno for scalbln, scalbn 2014-06-20 07:48:20 +05:30
s_scalbn.c Make scalbn set errno (bug 6803). 2015-09-16 21:11:00 +00:00
s_signbit.c Use the GCC builtin functions for the non-inlined signbit implementations. 2015-09-18 16:39:08 +01:00
s_sin.c Refactor code forcing underflow exceptions. 2015-09-23 22:42:30 +00:00
s_sincos.c Since we now inline isinf, isnan and isfinite in math.h, replace uses of __isinf_ns(l/f) 2015-09-18 20:51:52 +01:00
s_tan.c Refactor code forcing underflow exceptions. 2015-09-23 22:42:30 +00:00
s_tanh.c Refactor code forcing underflow exceptions. 2015-09-23 22:42:30 +00:00
s_trunc.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
sincos32.c Remove various ABS macros and replace uses with fabs (or in one case abs) 2015-05-15 11:04:40 +00:00
sincos32.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
sincostab.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
slowexp.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
slowpow.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
t_exp2.h Update. 1999-07-14 00:54:57 +00:00
t_exp.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
uasncs.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
uatan.tbl Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
uexp.h Fix several build failures with GCC6 due to unused static variables. 2015-09-18 20:42:54 +01:00
uexp.tbl Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
ulog.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
ulog.tbl Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
upow.h Fix several build failures with GCC6 due to unused static variables. 2015-09-18 20:42:54 +01:00
upow.tbl Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
urem.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
uroot.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
usncs.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
utan.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
utan.tbl Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
w_exp.c This patch renames all uses of __isinf*, __isnan*, __finite* and __signbit* to use standard C99 macros. This has no effect on generated code. 2015-06-03 15:41:36 +01:00
x2y2m1.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
x2y2m1f.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00