aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/ieee754
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2018-05-10 00:53:04 +0000
committerJoseph Myers <joseph@codesourcery.com>2018-05-10 00:53:04 +0000
commit8f5b00d375dbd7f5e15e57b24fec3bd5a4b1e98d (patch)
tree3976230e947a1f1103a45cd9d4ac138590017a19 /sysdeps/ieee754
parent9ed2e15ff4c9ff27c09103fa13a051e3605cbe5f (diff)
downloadglibc-8f5b00d375dbd7f5e15e57b24fec3bd5a4b1e98d.zip
glibc-8f5b00d375dbd7f5e15e57b24fec3bd5a4b1e98d.tar.gz
glibc-8f5b00d375dbd7f5e15e57b24fec3bd5a4b1e98d.tar.bz2
Move math_check_force_underflow macros to separate math-underflow.h.
This patch continues cleaning up math_private.h by moving the math_check_force_underflow set of macros to a separate header math-underflow.h. This header is included by the files that need it rather than from math_private.h. Moving these macros to a separate file removes the math_private.h uses of macros from float.h, so the inclusion of float.h in math_private.h is also removed; files that were depending on that inclusion are fixed to include float.h directly. The inclusion of math-barriers.h from math_private.h will be removed in a separate patch. Tested for x86_64 and x86. Also tested with build-many-glibcs.py that installed stripped shared libraries are unchanged by this patch. * math/math-underflow.h: New file. * sysdeps/generic/math_private.h: Do not include <float.h>. (fabs_tg): Remove macro. Moved to math-underflow.h. (min_of_type_f): Likewise. (min_of_type_): Likewise. (min_of_type_l): Likewise. (min_of_type_f128): Likewise. (min_of_type): Likewise. (math_check_force_underflow): Likewise. (math_check_force_underflow_nonneg): Likewise. (math_check_force_underflow_complex): Likewise. * math/e_exp2_template.c: Include <math-underflow.h>. * math/k_casinh_template.c: Likewise. * math/s_catan_template.c: Likewise. * math/s_catanh_template.c: Likewise. * math/s_ccosh_template.c: Likewise. * math/s_cexp_template.c: Likewise. * math/s_clog10_template.c: Likewise. * math/s_clog_template.c: Likewise. * math/s_csin_template.c: Likewise. * math/s_csinh_template.c: Likewise. * math/s_csqrt_template.c: Likewise. * math/s_ctan_template.c: Likewise. * math/s_ctanh_template.c: Likewise. * sysdeps/ieee754/dbl-64/e_asin.c: Likewise. * sysdeps/ieee754/dbl-64/e_atanh.c: Likewise. * sysdeps/ieee754/dbl-64/e_exp2.c: Likewise. * sysdeps/ieee754/dbl-64/e_gamma_r.c: Likewise. * sysdeps/ieee754/dbl-64/e_hypot.c: Likewise. * sysdeps/ieee754/dbl-64/e_j1.c: Likewise. * sysdeps/ieee754/dbl-64/e_jn.c: Likewise. * sysdeps/ieee754/dbl-64/e_pow.c: Likewise. * sysdeps/ieee754/dbl-64/e_sinh.c: Likewise. * sysdeps/ieee754/dbl-64/s_asinh.c: Likewise. * sysdeps/ieee754/dbl-64/s_atan.c: Likewise. * sysdeps/ieee754/dbl-64/s_erf.c: Likewise. * sysdeps/ieee754/dbl-64/s_expm1.c: Likewise. * sysdeps/ieee754/dbl-64/s_log1p.c: Likewise. * sysdeps/ieee754/dbl-64/s_sin.c: Likewise. * sysdeps/ieee754/dbl-64/s_sincos.c: Likewise. * sysdeps/ieee754/dbl-64/s_tan.c: Likewise. * sysdeps/ieee754/dbl-64/s_tanh.c: Likewise. * sysdeps/ieee754/flt-32/e_asinf.c: Likewise. * sysdeps/ieee754/flt-32/e_atanhf.c: Likewise. * sysdeps/ieee754/flt-32/e_gammaf_r.c: Likewise. * sysdeps/ieee754/flt-32/e_j1f.c: Likewise. * sysdeps/ieee754/flt-32/e_jnf.c: Likewise. * sysdeps/ieee754/flt-32/e_sinhf.c: Likewise. * sysdeps/ieee754/flt-32/k_sinf.c: Likewise. * sysdeps/ieee754/flt-32/k_tanf.c: Likewise. * sysdeps/ieee754/flt-32/s_asinhf.c: Likewise. * sysdeps/ieee754/flt-32/s_atanf.c: Likewise. * sysdeps/ieee754/flt-32/s_erff.c: Likewise. * sysdeps/ieee754/flt-32/s_expm1f.c: Likewise. * sysdeps/ieee754/flt-32/s_log1pf.c: Likewise. * sysdeps/ieee754/flt-32/s_tanhf.c: Likewise. * sysdeps/ieee754/ldbl-128/e_asinl.c: Likewise. * sysdeps/ieee754/ldbl-128/e_atanhl.c: Likewise. * sysdeps/ieee754/ldbl-128/e_expl.c: Likewise. * sysdeps/ieee754/ldbl-128/e_gammal_r.c: Likewise. * sysdeps/ieee754/ldbl-128/e_hypotl.c: Likewise. * sysdeps/ieee754/ldbl-128/e_j1l.c: Likewise. * sysdeps/ieee754/ldbl-128/e_jnl.c: Likewise. * sysdeps/ieee754/ldbl-128/e_sinhl.c: Likewise. * sysdeps/ieee754/ldbl-128/k_sincosl.c: Likewise. * sysdeps/ieee754/ldbl-128/k_sinl.c: Likewise. * sysdeps/ieee754/ldbl-128/k_tanl.c: Likewise. * sysdeps/ieee754/ldbl-128/s_asinhl.c: Likewise. * sysdeps/ieee754/ldbl-128/s_atanl.c: Likewise. * sysdeps/ieee754/ldbl-128/s_erfl.c: Likewise. * sysdeps/ieee754/ldbl-128/s_expm1l.c: Likewise. * sysdeps/ieee754/ldbl-128/s_log1pl.c: Likewise. * sysdeps/ieee754/ldbl-128/s_tanhl.c: Likewise. * sysdeps/ieee754/ldbl-128ibm/e_asinl.c: Likewise. * sysdeps/ieee754/ldbl-128ibm/e_atanhl.c: Likewise. * sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c: Likewise. * sysdeps/ieee754/ldbl-128ibm/e_hypotl.c: Likewise. * sysdeps/ieee754/ldbl-128ibm/e_j1l.c: Likewise. * sysdeps/ieee754/ldbl-128ibm/e_jnl.c: Likewise. * sysdeps/ieee754/ldbl-128ibm/e_powl.c: Likewise. * sysdeps/ieee754/ldbl-128ibm/e_sinhl.c: Likewise. * sysdeps/ieee754/ldbl-128ibm/k_sincosl.c: Likewise. * sysdeps/ieee754/ldbl-128ibm/k_sinl.c: Likewise. * sysdeps/ieee754/ldbl-128ibm/k_tanl.c: Likewise. * sysdeps/ieee754/ldbl-128ibm/s_asinhl.c: Likewise. * sysdeps/ieee754/ldbl-128ibm/s_atanl.c: Likewise. * sysdeps/ieee754/ldbl-128ibm/s_erfl.c: Likewise. * sysdeps/ieee754/ldbl-128ibm/s_fmal.c: Likewise. * sysdeps/ieee754/ldbl-128ibm/s_tanhl.c: Likewise. * sysdeps/ieee754/ldbl-96/e_asinl.c: Likewise. * sysdeps/ieee754/ldbl-96/e_atanhl.c: Likewise. * sysdeps/ieee754/ldbl-96/e_gammal_r.c: Likewise. * sysdeps/ieee754/ldbl-96/e_hypotl.c: Likewise. * sysdeps/ieee754/ldbl-96/e_j1l.c: Likewise. * sysdeps/ieee754/ldbl-96/e_jnl.c: Likewise. * sysdeps/ieee754/ldbl-96/e_sinhl.c: Likewise. * sysdeps/ieee754/ldbl-96/k_sinl.c: Likewise. * sysdeps/ieee754/ldbl-96/k_tanl.c: Likewise. * sysdeps/ieee754/ldbl-96/s_asinhl.c: Likewise. * sysdeps/ieee754/ldbl-96/s_erfl.c: Likewise. * sysdeps/ieee754/ldbl-96/s_tanhl.c: Likewise. * sysdeps/powerpc/fpu/e_hypot.c: Likewise. * sysdeps/x86/fpu/powl_helper.c: Likewise. * sysdeps/ieee754/dbl-64/s_nextup.c: Include <float.h>. * sysdeps/ieee754/flt-32/s_nextupf.c: Likewise. * sysdeps/ieee754/ldbl-128/s_nextupl.c: Likewise. * sysdeps/ieee754/ldbl-128ibm/s_nextupl.c: Likewise. * sysdeps/ieee754/ldbl-96/s_nextupl.c: Likewise.
Diffstat (limited to 'sysdeps/ieee754')
-rw-r--r--sysdeps/ieee754/dbl-64/e_asin.c1
-rw-r--r--sysdeps/ieee754/dbl-64/e_atanh.c1
-rw-r--r--sysdeps/ieee754/dbl-64/e_exp2.c1
-rw-r--r--sysdeps/ieee754/dbl-64/e_gamma_r.c1
-rw-r--r--sysdeps/ieee754/dbl-64/e_hypot.c1
-rw-r--r--sysdeps/ieee754/dbl-64/e_j1.c1
-rw-r--r--sysdeps/ieee754/dbl-64/e_jn.c1
-rw-r--r--sysdeps/ieee754/dbl-64/e_pow.c1
-rw-r--r--sysdeps/ieee754/dbl-64/e_sinh.c1
-rw-r--r--sysdeps/ieee754/dbl-64/s_asinh.c1
-rw-r--r--sysdeps/ieee754/dbl-64/s_atan.c1
-rw-r--r--sysdeps/ieee754/dbl-64/s_erf.c1
-rw-r--r--sysdeps/ieee754/dbl-64/s_expm1.c1
-rw-r--r--sysdeps/ieee754/dbl-64/s_log1p.c1
-rw-r--r--sysdeps/ieee754/dbl-64/s_nextup.c1
-rw-r--r--sysdeps/ieee754/dbl-64/s_sin.c1
-rw-r--r--sysdeps/ieee754/dbl-64/s_sincos.c1
-rw-r--r--sysdeps/ieee754/dbl-64/s_tan.c1
-rw-r--r--sysdeps/ieee754/dbl-64/s_tanh.c1
-rw-r--r--sysdeps/ieee754/flt-32/e_asinf.c1
-rw-r--r--sysdeps/ieee754/flt-32/e_atanhf.c1
-rw-r--r--sysdeps/ieee754/flt-32/e_gammaf_r.c1
-rw-r--r--sysdeps/ieee754/flt-32/e_j1f.c1
-rw-r--r--sysdeps/ieee754/flt-32/e_jnf.c1
-rw-r--r--sysdeps/ieee754/flt-32/e_sinhf.c1
-rw-r--r--sysdeps/ieee754/flt-32/k_sinf.c1
-rw-r--r--sysdeps/ieee754/flt-32/k_tanf.c1
-rw-r--r--sysdeps/ieee754/flt-32/s_asinhf.c1
-rw-r--r--sysdeps/ieee754/flt-32/s_atanf.c1
-rw-r--r--sysdeps/ieee754/flt-32/s_erff.c1
-rw-r--r--sysdeps/ieee754/flt-32/s_expm1f.c1
-rw-r--r--sysdeps/ieee754/flt-32/s_log1pf.c1
-rw-r--r--sysdeps/ieee754/flt-32/s_nextupf.c1
-rw-r--r--sysdeps/ieee754/flt-32/s_tanhf.c1
-rw-r--r--sysdeps/ieee754/ldbl-128/e_asinl.c1
-rw-r--r--sysdeps/ieee754/ldbl-128/e_atanhl.c1
-rw-r--r--sysdeps/ieee754/ldbl-128/e_expl.c1
-rw-r--r--sysdeps/ieee754/ldbl-128/e_gammal_r.c1
-rw-r--r--sysdeps/ieee754/ldbl-128/e_hypotl.c1
-rw-r--r--sysdeps/ieee754/ldbl-128/e_j1l.c1
-rw-r--r--sysdeps/ieee754/ldbl-128/e_jnl.c1
-rw-r--r--sysdeps/ieee754/ldbl-128/e_sinhl.c1
-rw-r--r--sysdeps/ieee754/ldbl-128/k_sincosl.c1
-rw-r--r--sysdeps/ieee754/ldbl-128/k_sinl.c1
-rw-r--r--sysdeps/ieee754/ldbl-128/k_tanl.c1
-rw-r--r--sysdeps/ieee754/ldbl-128/s_asinhl.c1
-rw-r--r--sysdeps/ieee754/ldbl-128/s_atanl.c1
-rw-r--r--sysdeps/ieee754/ldbl-128/s_erfl.c1
-rw-r--r--sysdeps/ieee754/ldbl-128/s_expm1l.c1
-rw-r--r--sysdeps/ieee754/ldbl-128/s_log1pl.c1
-rw-r--r--sysdeps/ieee754/ldbl-128/s_nextupl.c1
-rw-r--r--sysdeps/ieee754/ldbl-128/s_tanhl.c1
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/e_asinl.c1
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/e_atanhl.c1
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c1
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/e_hypotl.c1
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/e_j1l.c1
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/e_jnl.c1
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/e_powl.c1
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/e_sinhl.c1
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/k_sincosl.c1
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/k_sinl.c1
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/k_tanl.c1
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/s_asinhl.c1
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/s_atanl.c1
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/s_erfl.c1
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/s_fmal.c1
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/s_nextupl.c1
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/s_tanhl.c1
-rw-r--r--sysdeps/ieee754/ldbl-96/e_asinl.c1
-rw-r--r--sysdeps/ieee754/ldbl-96/e_atanhl.c1
-rw-r--r--sysdeps/ieee754/ldbl-96/e_gammal_r.c1
-rw-r--r--sysdeps/ieee754/ldbl-96/e_hypotl.c1
-rw-r--r--sysdeps/ieee754/ldbl-96/e_j1l.c1
-rw-r--r--sysdeps/ieee754/ldbl-96/e_jnl.c1
-rw-r--r--sysdeps/ieee754/ldbl-96/e_sinhl.c1
-rw-r--r--sysdeps/ieee754/ldbl-96/k_sinl.c1
-rw-r--r--sysdeps/ieee754/ldbl-96/k_tanl.c1
-rw-r--r--sysdeps/ieee754/ldbl-96/s_asinhl.c1
-rw-r--r--sysdeps/ieee754/ldbl-96/s_erfl.c1
-rw-r--r--sysdeps/ieee754/ldbl-96/s_nextupl.c1
-rw-r--r--sysdeps/ieee754/ldbl-96/s_tanhl.c1
82 files changed, 82 insertions, 0 deletions
diff --git a/sysdeps/ieee754/dbl-64/e_asin.c b/sysdeps/ieee754/dbl-64/e_asin.c
index 768cbb9..6bf5694 100644
--- a/sysdeps/ieee754/dbl-64/e_asin.c
+++ b/sysdeps/ieee754/dbl-64/e_asin.c
@@ -42,6 +42,7 @@
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
#ifndef SECTION
# define SECTION
diff --git a/sysdeps/ieee754/dbl-64/e_atanh.c b/sysdeps/ieee754/dbl-64/e_atanh.c
index 608afb5..df9c878 100644
--- a/sysdeps/ieee754/dbl-64/e_atanh.c
+++ b/sysdeps/ieee754/dbl-64/e_atanh.c
@@ -39,6 +39,7 @@
#include <inttypes.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
static const double huge = 1e300;
diff --git a/sysdeps/ieee754/dbl-64/e_exp2.c b/sysdeps/ieee754/dbl-64/e_exp2.c
index a944abe..045cbbb 100644
--- a/sysdeps/ieee754/dbl-64/e_exp2.c
+++ b/sysdeps/ieee754/dbl-64/e_exp2.c
@@ -30,6 +30,7 @@
#include <fenv.h>
#include <inttypes.h>
#include <math_private.h>
+#include <math-underflow.h>
#include "t_exp2.h"
diff --git a/sysdeps/ieee754/dbl-64/e_gamma_r.c b/sysdeps/ieee754/dbl-64/e_gamma_r.c
index a3750f9..2744549 100644
--- a/sysdeps/ieee754/dbl-64/e_gamma_r.c
+++ b/sysdeps/ieee754/dbl-64/e_gamma_r.c
@@ -20,6 +20,7 @@
#include <math.h>
#include <math-narrow-eval.h>
#include <math_private.h>
+#include <math-underflow.h>
#include <float.h>
/* Coefficients B_2k / 2k(2k-1) of x^-(2k-1) inside exp in Stirling's
diff --git a/sysdeps/ieee754/dbl-64/e_hypot.c b/sysdeps/ieee754/dbl-64/e_hypot.c
index a890751..a2c33cc 100644
--- a/sysdeps/ieee754/dbl-64/e_hypot.c
+++ b/sysdeps/ieee754/dbl-64/e_hypot.c
@@ -44,6 +44,7 @@
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
double
__ieee754_hypot (double x, double y)
diff --git a/sysdeps/ieee754/dbl-64/e_j1.c b/sysdeps/ieee754/dbl-64/e_j1.c
index d0e387e..734f3ca 100644
--- a/sysdeps/ieee754/dbl-64/e_j1.c
+++ b/sysdeps/ieee754/dbl-64/e_j1.c
@@ -63,6 +63,7 @@
#include <math.h>
#include <math-narrow-eval.h>
#include <math_private.h>
+#include <math-underflow.h>
static double pone (double), qone (double);
diff --git a/sysdeps/ieee754/dbl-64/e_jn.c b/sysdeps/ieee754/dbl-64/e_jn.c
index 6ef0fbe..9181b22 100644
--- a/sysdeps/ieee754/dbl-64/e_jn.c
+++ b/sysdeps/ieee754/dbl-64/e_jn.c
@@ -41,6 +41,7 @@
#include <math.h>
#include <math-narrow-eval.h>
#include <math_private.h>
+#include <math-underflow.h>
static const double
invsqrtpi = 5.64189583547756279280e-01, /* 0x3FE20DD7, 0x50429B6D */
diff --git a/sysdeps/ieee754/dbl-64/e_pow.c b/sysdeps/ieee754/dbl-64/e_pow.c
index 542d03a..96d5b23 100644
--- a/sysdeps/ieee754/dbl-64/e_pow.c
+++ b/sysdeps/ieee754/dbl-64/e_pow.c
@@ -38,6 +38,7 @@
#include "MathLib.h"
#include "upow.tbl"
#include <math_private.h>
+#include <math-underflow.h>
#include <fenv.h>
#ifndef SECTION
diff --git a/sysdeps/ieee754/dbl-64/e_sinh.c b/sysdeps/ieee754/dbl-64/e_sinh.c
index 49c24fb..c4e3421 100644
--- a/sysdeps/ieee754/dbl-64/e_sinh.c
+++ b/sysdeps/ieee754/dbl-64/e_sinh.c
@@ -36,6 +36,7 @@ static char rcsid[] = "$NetBSD: e_sinh.c,v 1.7 1995/05/10 20:46:13 jtc Exp $";
#include <math.h>
#include <math-narrow-eval.h>
#include <math_private.h>
+#include <math-underflow.h>
static const double one = 1.0, shuge = 1.0e307;
diff --git a/sysdeps/ieee754/dbl-64/s_asinh.c b/sysdeps/ieee754/dbl-64/s_asinh.c
index 5577cce..192ff85 100644
--- a/sysdeps/ieee754/dbl-64/s_asinh.c
+++ b/sysdeps/ieee754/dbl-64/s_asinh.c
@@ -24,6 +24,7 @@
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
#include <libm-alias-double.h>
static const double
diff --git a/sysdeps/ieee754/dbl-64/s_atan.c b/sysdeps/ieee754/dbl-64/s_atan.c
index ff5718c..38db092 100644
--- a/sysdeps/ieee754/dbl-64/s_atan.c
+++ b/sysdeps/ieee754/dbl-64/s_atan.c
@@ -46,6 +46,7 @@
#include <libm-alias-double.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
#include <stap-probe.h>
void __mpatan (mp_no *, mp_no *, int); /* see definition in mpatan.c */
diff --git a/sysdeps/ieee754/dbl-64/s_erf.c b/sysdeps/ieee754/dbl-64/s_erf.c
index 48dfca3..5f82060 100644
--- a/sysdeps/ieee754/dbl-64/s_erf.c
+++ b/sysdeps/ieee754/dbl-64/s_erf.c
@@ -117,6 +117,7 @@ static char rcsid[] = "$NetBSD: s_erf.c,v 1.8 1995/05/10 20:47:05 jtc Exp $";
#include <math.h>
#include <math-narrow-eval.h>
#include <math_private.h>
+#include <math-underflow.h>
#include <libm-alias-double.h>
#include <fix-int-fp-convert-zero.h>
diff --git a/sysdeps/ieee754/dbl-64/s_expm1.c b/sysdeps/ieee754/dbl-64/s_expm1.c
index 3e136e7..8ef74f2 100644
--- a/sysdeps/ieee754/dbl-64/s_expm1.c
+++ b/sysdeps/ieee754/dbl-64/s_expm1.c
@@ -112,6 +112,7 @@
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
#include <libm-alias-double.h>
#define one Q[0]
static const double
diff --git a/sysdeps/ieee754/dbl-64/s_log1p.c b/sysdeps/ieee754/dbl-64/s_log1p.c
index b7cf5ce..c01f1be 100644
--- a/sysdeps/ieee754/dbl-64/s_log1p.c
+++ b/sysdeps/ieee754/dbl-64/s_log1p.c
@@ -81,6 +81,7 @@
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
#include <libc-diag.h>
static const double
diff --git a/sysdeps/ieee754/dbl-64/s_nextup.c b/sysdeps/ieee754/dbl-64/s_nextup.c
index db13a57..d37a2b6 100644
--- a/sysdeps/ieee754/dbl-64/s_nextup.c
+++ b/sysdeps/ieee754/dbl-64/s_nextup.c
@@ -16,6 +16,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#include <float.h>
#include <math.h>
#include <math_private.h>
#include <libm-alias-double.h>
diff --git a/sysdeps/ieee754/dbl-64/s_sin.c b/sysdeps/ieee754/dbl-64/s_sin.c
index ba1dbe2..b369ac9 100644
--- a/sysdeps/ieee754/dbl-64/s_sin.c
+++ b/sysdeps/ieee754/dbl-64/s_sin.c
@@ -41,6 +41,7 @@
#include "MathLib.h"
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
#include <libm-alias-double.h>
#include <fenv.h>
diff --git a/sysdeps/ieee754/dbl-64/s_sincos.c b/sysdeps/ieee754/dbl-64/s_sincos.c
index c746037..1d8d44b 100644
--- a/sysdeps/ieee754/dbl-64/s_sincos.c
+++ b/sysdeps/ieee754/dbl-64/s_sincos.c
@@ -21,6 +21,7 @@
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
#include <libm-alias-double.h>
#define IN_SINCOS
diff --git a/sysdeps/ieee754/dbl-64/s_tan.c b/sysdeps/ieee754/dbl-64/s_tan.c
index 05a25eb..04ff8b6 100644
--- a/sysdeps/ieee754/dbl-64/s_tan.c
+++ b/sysdeps/ieee754/dbl-64/s_tan.c
@@ -41,6 +41,7 @@
#include "MathLib.h"
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
#include <libm-alias-double.h>
#include <fenv.h>
#include <stap-probe.h>
diff --git a/sysdeps/ieee754/dbl-64/s_tanh.c b/sysdeps/ieee754/dbl-64/s_tanh.c
index 321bf44..673a971 100644
--- a/sysdeps/ieee754/dbl-64/s_tanh.c
+++ b/sysdeps/ieee754/dbl-64/s_tanh.c
@@ -41,6 +41,7 @@ static char rcsid[] = "$NetBSD: s_tanh.c,v 1.7 1995/05/10 20:48:22 jtc Exp $";
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
#include <libm-alias-double.h>
static const double one = 1.0, two = 2.0, tiny = 1.0e-300;
diff --git a/sysdeps/ieee754/flt-32/e_asinf.c b/sysdeps/ieee754/flt-32/e_asinf.c
index 55eb144..e03073b 100644
--- a/sysdeps/ieee754/flt-32/e_asinf.c
+++ b/sysdeps/ieee754/flt-32/e_asinf.c
@@ -42,6 +42,7 @@ static char rcsid[] = "$NetBSD: e_asinf.c,v 1.5 1995/05/12 04:57:25 jtc Exp $";
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
static const float
one = 1.0000000000e+00, /* 0x3F800000 */
diff --git a/sysdeps/ieee754/flt-32/e_atanhf.c b/sysdeps/ieee754/flt-32/e_atanhf.c
index 598000a..43f11ad 100644
--- a/sysdeps/ieee754/flt-32/e_atanhf.c
+++ b/sysdeps/ieee754/flt-32/e_atanhf.c
@@ -39,6 +39,7 @@
#include <inttypes.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
static const float huge = 1e30;
diff --git a/sysdeps/ieee754/flt-32/e_gammaf_r.c b/sysdeps/ieee754/flt-32/e_gammaf_r.c
index d640510..8b23add 100644
--- a/sysdeps/ieee754/flt-32/e_gammaf_r.c
+++ b/sysdeps/ieee754/flt-32/e_gammaf_r.c
@@ -20,6 +20,7 @@
#include <math.h>
#include <math-narrow-eval.h>
#include <math_private.h>
+#include <math-underflow.h>
#include <float.h>
/* Coefficients B_2k / 2k(2k-1) of x^-(2k-1) inside exp in Stirling's
diff --git a/sysdeps/ieee754/flt-32/e_j1f.c b/sysdeps/ieee754/flt-32/e_j1f.c
index 8aadc4c..887b5f7 100644
--- a/sysdeps/ieee754/flt-32/e_j1f.c
+++ b/sysdeps/ieee754/flt-32/e_j1f.c
@@ -18,6 +18,7 @@
#include <math.h>
#include <math-narrow-eval.h>
#include <math_private.h>
+#include <math-underflow.h>
static float ponef(float), qonef(float);
diff --git a/sysdeps/ieee754/flt-32/e_jnf.c b/sysdeps/ieee754/flt-32/e_jnf.c
index a4414ce..cd15ed7 100644
--- a/sysdeps/ieee754/flt-32/e_jnf.c
+++ b/sysdeps/ieee754/flt-32/e_jnf.c
@@ -18,6 +18,7 @@
#include <math.h>
#include <math-narrow-eval.h>
#include <math_private.h>
+#include <math-underflow.h>
static const float
two = 2.0000000000e+00, /* 0x40000000 */
diff --git a/sysdeps/ieee754/flt-32/e_sinhf.c b/sysdeps/ieee754/flt-32/e_sinhf.c
index 17b3663..20f7db8 100644
--- a/sysdeps/ieee754/flt-32/e_sinhf.c
+++ b/sysdeps/ieee754/flt-32/e_sinhf.c
@@ -17,6 +17,7 @@
#include <math.h>
#include <math-narrow-eval.h>
#include <math_private.h>
+#include <math-underflow.h>
static const float one = 1.0, shuge = 1.0e37;
diff --git a/sysdeps/ieee754/flt-32/k_sinf.c b/sysdeps/ieee754/flt-32/k_sinf.c
index a195d59..dcf3c35 100644
--- a/sysdeps/ieee754/flt-32/k_sinf.c
+++ b/sysdeps/ieee754/flt-32/k_sinf.c
@@ -20,6 +20,7 @@ static char rcsid[] = "$NetBSD: k_sinf.c,v 1.4 1995/05/10 20:46:33 jtc Exp $";
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
static const float
half = 5.0000000000e-01,/* 0x3f000000 */
diff --git a/sysdeps/ieee754/flt-32/k_tanf.c b/sysdeps/ieee754/flt-32/k_tanf.c
index 9f0e558..228ece2 100644
--- a/sysdeps/ieee754/flt-32/k_tanf.c
+++ b/sysdeps/ieee754/flt-32/k_tanf.c
@@ -20,6 +20,7 @@ static char rcsid[] = "$NetBSD: k_tanf.c,v 1.4 1995/05/10 20:46:39 jtc Exp $";
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
static const float
one = 1.0000000000e+00, /* 0x3f800000 */
pio4 = 7.8539812565e-01, /* 0x3f490fda */
diff --git a/sysdeps/ieee754/flt-32/s_asinhf.c b/sysdeps/ieee754/flt-32/s_asinhf.c
index 27ecdd5..0812b54 100644
--- a/sysdeps/ieee754/flt-32/s_asinhf.c
+++ b/sysdeps/ieee754/flt-32/s_asinhf.c
@@ -16,6 +16,7 @@
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
#include <libm-alias-float.h>
static const float
diff --git a/sysdeps/ieee754/flt-32/s_atanf.c b/sysdeps/ieee754/flt-32/s_atanf.c
index 03a4cfd..f61b0f5 100644
--- a/sysdeps/ieee754/flt-32/s_atanf.c
+++ b/sysdeps/ieee754/flt-32/s_atanf.c
@@ -20,6 +20,7 @@ static char rcsid[] = "$NetBSD: s_atanf.c,v 1.4 1995/05/10 20:46:47 jtc Exp $";
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
#include <libm-alias-float.h>
static const float atanhi[] = {
diff --git a/sysdeps/ieee754/flt-32/s_erff.c b/sysdeps/ieee754/flt-32/s_erff.c
index 1d00abd..693934d 100644
--- a/sysdeps/ieee754/flt-32/s_erff.c
+++ b/sysdeps/ieee754/flt-32/s_erff.c
@@ -22,6 +22,7 @@ static char rcsid[] = "$NetBSD: s_erff.c,v 1.4 1995/05/10 20:47:07 jtc Exp $";
#include <math.h>
#include <math-narrow-eval.h>
#include <math_private.h>
+#include <math-underflow.h>
#include <libm-alias-float.h>
#include <fix-int-fp-convert-zero.h>
diff --git a/sysdeps/ieee754/flt-32/s_expm1f.c b/sysdeps/ieee754/flt-32/s_expm1f.c
index 0358970..3b04ce7 100644
--- a/sysdeps/ieee754/flt-32/s_expm1f.c
+++ b/sysdeps/ieee754/flt-32/s_expm1f.c
@@ -17,6 +17,7 @@
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
#include <libm-alias-float.h>
static const float huge = 1.0e+30;
diff --git a/sysdeps/ieee754/flt-32/s_log1pf.c b/sysdeps/ieee754/flt-32/s_log1pf.c
index 009084e..9d2ef89 100644
--- a/sysdeps/ieee754/flt-32/s_log1pf.c
+++ b/sysdeps/ieee754/flt-32/s_log1pf.c
@@ -16,6 +16,7 @@
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
#include <libc-diag.h>
static const float
diff --git a/sysdeps/ieee754/flt-32/s_nextupf.c b/sysdeps/ieee754/flt-32/s_nextupf.c
index 7ba8c0b..87ec7ba 100644
--- a/sysdeps/ieee754/flt-32/s_nextupf.c
+++ b/sysdeps/ieee754/flt-32/s_nextupf.c
@@ -16,6 +16,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#include <float.h>
#include <math.h>
#include <math_private.h>
#include <libm-alias-float.h>
diff --git a/sysdeps/ieee754/flt-32/s_tanhf.c b/sysdeps/ieee754/flt-32/s_tanhf.c
index c2b96cf..cc3d63d 100644
--- a/sysdeps/ieee754/flt-32/s_tanhf.c
+++ b/sysdeps/ieee754/flt-32/s_tanhf.c
@@ -20,6 +20,7 @@ static char rcsid[] = "$NetBSD: s_tanhf.c,v 1.4 1995/05/10 20:48:24 jtc Exp $";
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
#include <libm-alias-float.h>
static const float one=1.0, two=2.0, tiny = 1.0e-30;
diff --git a/sysdeps/ieee754/ldbl-128/e_asinl.c b/sysdeps/ieee754/ldbl-128/e_asinl.c
index 53c2f1f..6021fac 100644
--- a/sysdeps/ieee754/ldbl-128/e_asinl.c
+++ b/sysdeps/ieee754/ldbl-128/e_asinl.c
@@ -62,6 +62,7 @@
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
static const _Float128
one = 1,
diff --git a/sysdeps/ieee754/ldbl-128/e_atanhl.c b/sysdeps/ieee754/ldbl-128/e_atanhl.c
index 4c8c2e2..13b7683 100644
--- a/sysdeps/ieee754/ldbl-128/e_atanhl.c
+++ b/sysdeps/ieee754/ldbl-128/e_atanhl.c
@@ -35,6 +35,7 @@
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
static const _Float128 one = 1, huge = L(1e4900);
diff --git a/sysdeps/ieee754/ldbl-128/e_expl.c b/sysdeps/ieee754/ldbl-128/e_expl.c
index c4c61cb..735dc9b 100644
--- a/sysdeps/ieee754/ldbl-128/e_expl.c
+++ b/sysdeps/ieee754/ldbl-128/e_expl.c
@@ -65,6 +65,7 @@
#include <fenv.h>
#include <inttypes.h>
#include <math_private.h>
+#include <math-underflow.h>
#include <stdlib.h>
#include "t_expl.h"
diff --git a/sysdeps/ieee754/ldbl-128/e_gammal_r.c b/sysdeps/ieee754/ldbl-128/e_gammal_r.c
index 95b9fe0..e2730b8 100644
--- a/sysdeps/ieee754/ldbl-128/e_gammal_r.c
+++ b/sysdeps/ieee754/ldbl-128/e_gammal_r.c
@@ -20,6 +20,7 @@
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
#include <float.h>
/* Coefficients B_2k / 2k(2k-1) of x^-(2k-1) inside exp in Stirling's
diff --git a/sysdeps/ieee754/ldbl-128/e_hypotl.c b/sysdeps/ieee754/ldbl-128/e_hypotl.c
index dd82b3a..7bafd4a 100644
--- a/sysdeps/ieee754/ldbl-128/e_hypotl.c
+++ b/sysdeps/ieee754/ldbl-128/e_hypotl.c
@@ -47,6 +47,7 @@
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
_Float128
__ieee754_hypotl(_Float128 x, _Float128 y)
diff --git a/sysdeps/ieee754/ldbl-128/e_j1l.c b/sysdeps/ieee754/ldbl-128/e_j1l.c
index bff3a5e..e6f46f5 100644
--- a/sysdeps/ieee754/ldbl-128/e_j1l.c
+++ b/sysdeps/ieee754/ldbl-128/e_j1l.c
@@ -98,6 +98,7 @@
#include <errno.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
#include <float.h>
/* 1 / sqrt(pi) */
diff --git a/sysdeps/ieee754/ldbl-128/e_jnl.c b/sysdeps/ieee754/ldbl-128/e_jnl.c
index 635b4e7..7739eec 100644
--- a/sysdeps/ieee754/ldbl-128/e_jnl.c
+++ b/sysdeps/ieee754/ldbl-128/e_jnl.c
@@ -60,6 +60,7 @@
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
static const _Float128
invsqrtpi = L(5.6418958354775628694807945156077258584405E-1),
diff --git a/sysdeps/ieee754/ldbl-128/e_sinhl.c b/sysdeps/ieee754/ldbl-128/e_sinhl.c
index cce5b6e..39e7cf3 100644
--- a/sysdeps/ieee754/ldbl-128/e_sinhl.c
+++ b/sysdeps/ieee754/ldbl-128/e_sinhl.c
@@ -56,6 +56,7 @@
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
static const _Float128 one = 1.0, shuge = L(1.0e4931),
ovf_thresh = L(1.1357216553474703894801348310092223067821E4);
diff --git a/sysdeps/ieee754/ldbl-128/k_sincosl.c b/sysdeps/ieee754/ldbl-128/k_sincosl.c
index 36668dd..6eb33ae 100644
--- a/sysdeps/ieee754/ldbl-128/k_sincosl.c
+++ b/sysdeps/ieee754/ldbl-128/k_sincosl.c
@@ -20,6 +20,7 @@
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
static const _Float128 c[] = {
#define ONE c[0]
diff --git a/sysdeps/ieee754/ldbl-128/k_sinl.c b/sysdeps/ieee754/ldbl-128/k_sinl.c
index a9f38c7..9c19fb1 100644
--- a/sysdeps/ieee754/ldbl-128/k_sinl.c
+++ b/sysdeps/ieee754/ldbl-128/k_sinl.c
@@ -20,6 +20,7 @@
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
static const _Float128 c[] = {
#define ONE c[0]
diff --git a/sysdeps/ieee754/ldbl-128/k_tanl.c b/sysdeps/ieee754/ldbl-128/k_tanl.c
index e79023c..8da794d 100644
--- a/sysdeps/ieee754/ldbl-128/k_tanl.c
+++ b/sysdeps/ieee754/ldbl-128/k_tanl.c
@@ -59,6 +59,7 @@
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
#include <libc-diag.h>
static const _Float128
diff --git a/sysdeps/ieee754/ldbl-128/s_asinhl.c b/sysdeps/ieee754/ldbl-128/s_asinhl.c
index 92a4826..a733ee7 100644
--- a/sysdeps/ieee754/ldbl-128/s_asinhl.c
+++ b/sysdeps/ieee754/ldbl-128/s_asinhl.c
@@ -32,6 +32,7 @@ static char rcsid[] = "$NetBSD: $";
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
#include <libm-alias-ldouble.h>
static const _Float128
diff --git a/sysdeps/ieee754/ldbl-128/s_atanl.c b/sysdeps/ieee754/ldbl-128/s_atanl.c
index e05368d..022ccf4 100644
--- a/sysdeps/ieee754/ldbl-128/s_atanl.c
+++ b/sysdeps/ieee754/ldbl-128/s_atanl.c
@@ -62,6 +62,7 @@
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
#include <libm-alias-ldouble.h>
/* arctan(k/8), k = 0, ..., 82 */
diff --git a/sysdeps/ieee754/ldbl-128/s_erfl.c b/sysdeps/ieee754/ldbl-128/s_erfl.c
index 88e91c7..c0abfe2 100644
--- a/sysdeps/ieee754/ldbl-128/s_erfl.c
+++ b/sysdeps/ieee754/ldbl-128/s_erfl.c
@@ -100,6 +100,7 @@
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
#include <libm-alias-ldouble.h>
/* Evaluate P[n] x^n + P[n-1] x^(n-1) + ... + P[0] */
diff --git a/sysdeps/ieee754/ldbl-128/s_expm1l.c b/sysdeps/ieee754/ldbl-128/s_expm1l.c
index ea0d29c..66881af 100644
--- a/sysdeps/ieee754/ldbl-128/s_expm1l.c
+++ b/sysdeps/ieee754/ldbl-128/s_expm1l.c
@@ -57,6 +57,7 @@
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
#include <libm-alias-ldouble.h>
/* exp(x) - 1 = x + 0.5 x^2 + x^3 P(x)/Q(x)
diff --git a/sysdeps/ieee754/ldbl-128/s_log1pl.c b/sysdeps/ieee754/ldbl-128/s_log1pl.c
index b8b2ffe..f3181db 100644
--- a/sysdeps/ieee754/ldbl-128/s_log1pl.c
+++ b/sysdeps/ieee754/ldbl-128/s_log1pl.c
@@ -56,6 +56,7 @@
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
/* Coefficients for log(1+x) = x - x^2 / 2 + x^3 P(x)/Q(x)
* 1/sqrt(2) <= 1+x < sqrt(2)
diff --git a/sysdeps/ieee754/ldbl-128/s_nextupl.c b/sysdeps/ieee754/ldbl-128/s_nextupl.c
index 5628c17..20827e6 100644
--- a/sysdeps/ieee754/ldbl-128/s_nextupl.c
+++ b/sysdeps/ieee754/ldbl-128/s_nextupl.c
@@ -16,6 +16,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#include <float.h>
#include <math.h>
#include <math_private.h>
#include <libm-alias-ldouble.h>
diff --git a/sysdeps/ieee754/ldbl-128/s_tanhl.c b/sysdeps/ieee754/ldbl-128/s_tanhl.c
index 8f62f96..fc309da 100644
--- a/sysdeps/ieee754/ldbl-128/s_tanhl.c
+++ b/sysdeps/ieee754/ldbl-128/s_tanhl.c
@@ -44,6 +44,7 @@
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
#include <libm-alias-ldouble.h>
static const _Float128 one = 1.0, two = 2.0, tiny = L(1.0e-4900);
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_asinl.c b/sysdeps/ieee754/ldbl-128ibm/e_asinl.c
index 1d42fce..0d6e313 100644
--- a/sysdeps/ieee754/ldbl-128ibm/e_asinl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/e_asinl.c
@@ -62,6 +62,7 @@
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
static const long double
one = 1.0L,
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_atanhl.c b/sysdeps/ieee754/ldbl-128ibm/e_atanhl.c
index b576f42..25c286b 100644
--- a/sysdeps/ieee754/ldbl-128ibm/e_atanhl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/e_atanhl.c
@@ -31,6 +31,7 @@
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
static const long double one = 1.0L, huge = 1e300L;
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c b/sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c
index 0ce7024..84ea7ee 100644
--- a/sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c
+++ b/sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c
@@ -20,6 +20,7 @@
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
#include <float.h>
/* Coefficients B_2k / 2k(2k-1) of x^-(2k-1) inside exp in Stirling's
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_hypotl.c b/sysdeps/ieee754/ldbl-128ibm/e_hypotl.c
index 7f3b04f..842f77b 100644
--- a/sysdeps/ieee754/ldbl-128ibm/e_hypotl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/e_hypotl.c
@@ -44,6 +44,7 @@
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
long double
__ieee754_hypotl(long double x, long double y)
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_j1l.c b/sysdeps/ieee754/ldbl-128ibm/e_j1l.c
index 6130609..5126900 100644
--- a/sysdeps/ieee754/ldbl-128ibm/e_j1l.c
+++ b/sysdeps/ieee754/ldbl-128ibm/e_j1l.c
@@ -21,6 +21,7 @@
#include <errno.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
#include <float.h>
/* 1 / sqrt(pi) */
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_jnl.c b/sysdeps/ieee754/ldbl-128ibm/e_jnl.c
index dde5720..71b3add 100644
--- a/sysdeps/ieee754/ldbl-128ibm/e_jnl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/e_jnl.c
@@ -60,6 +60,7 @@
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
static const long double
invsqrtpi = 5.6418958354775628694807945156077258584405E-1L,
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_powl.c b/sysdeps/ieee754/ldbl-128ibm/e_powl.c
index b6c7011..f59ad4e 100644
--- a/sysdeps/ieee754/ldbl-128ibm/e_powl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/e_powl.c
@@ -66,6 +66,7 @@
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
static const long double bp[] = {
1.0L,
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_sinhl.c b/sysdeps/ieee754/ldbl-128ibm/e_sinhl.c
index 67d9d24..f869fb0 100644
--- a/sysdeps/ieee754/ldbl-128ibm/e_sinhl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/e_sinhl.c
@@ -31,6 +31,7 @@
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
static const long double one = 1.0, shuge = 1.0e307;
diff --git a/sysdeps/ieee754/ldbl-128ibm/k_sincosl.c b/sysdeps/ieee754/ldbl-128ibm/k_sincosl.c
index 4374220..ba95337 100644
--- a/sysdeps/ieee754/ldbl-128ibm/k_sincosl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/k_sincosl.c
@@ -20,6 +20,7 @@
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
static const long double c[] = {
#define ONE c[0]
diff --git a/sysdeps/ieee754/ldbl-128ibm/k_sinl.c b/sysdeps/ieee754/ldbl-128ibm/k_sinl.c
index 1590c6d..46d1d7b 100644
--- a/sysdeps/ieee754/ldbl-128ibm/k_sinl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/k_sinl.c
@@ -20,6 +20,7 @@
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
static const long double c[] = {
#define ONE c[0]
diff --git a/sysdeps/ieee754/ldbl-128ibm/k_tanl.c b/sysdeps/ieee754/ldbl-128ibm/k_tanl.c
index 232e00c..3927fca 100644
--- a/sysdeps/ieee754/ldbl-128ibm/k_tanl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/k_tanl.c
@@ -59,6 +59,7 @@
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
#include <libc-diag.h>
static const long double
diff --git a/sysdeps/ieee754/ldbl-128ibm/s_asinhl.c b/sysdeps/ieee754/ldbl-128ibm/s_asinhl.c
index 21ba14b..d4977e5 100644
--- a/sysdeps/ieee754/ldbl-128ibm/s_asinhl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/s_asinhl.c
@@ -28,6 +28,7 @@ static char rcsid[] = "$NetBSD: s_asinh.c,v 1.9 1995/05/12 04:57:37 jtc Exp $";
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
#include <math_ldbl_opt.h>
static const long double
diff --git a/sysdeps/ieee754/ldbl-128ibm/s_atanl.c b/sysdeps/ieee754/ldbl-128ibm/s_atanl.c
index 0560d82..32cf36c 100644
--- a/sysdeps/ieee754/ldbl-128ibm/s_atanl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/s_atanl.c
@@ -62,6 +62,7 @@
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
#include <math_ldbl_opt.h>
/* arctan(k/8), k = 0, ..., 82 */
diff --git a/sysdeps/ieee754/ldbl-128ibm/s_erfl.c b/sysdeps/ieee754/ldbl-128ibm/s_erfl.c
index 7b761b0..5302fee 100644
--- a/sysdeps/ieee754/ldbl-128ibm/s_erfl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/s_erfl.c
@@ -105,6 +105,7 @@
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
#include <math_ldbl_opt.h>
#include <fix-int-fp-convert-zero.h>
diff --git a/sysdeps/ieee754/ldbl-128ibm/s_fmal.c b/sysdeps/ieee754/ldbl-128ibm/s_fmal.c
index 3821fd7..08aeb4c 100644
--- a/sysdeps/ieee754/ldbl-128ibm/s_fmal.c
+++ b/sysdeps/ieee754/ldbl-128ibm/s_fmal.c
@@ -21,6 +21,7 @@
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
#include <math_ldbl_opt.h>
#include <mul_split.h>
#include <stdlib.h>
diff --git a/sysdeps/ieee754/ldbl-128ibm/s_nextupl.c b/sysdeps/ieee754/ldbl-128ibm/s_nextupl.c
index 7743fe8..9b532a3 100644
--- a/sysdeps/ieee754/ldbl-128ibm/s_nextupl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/s_nextupl.c
@@ -16,6 +16,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#include <float.h>
#include <math.h>
#include <math_private.h>
#include <math_ldbl_opt.h>
diff --git a/sysdeps/ieee754/ldbl-128ibm/s_tanhl.c b/sysdeps/ieee754/ldbl-128ibm/s_tanhl.c
index e6457a1..3504862 100644
--- a/sysdeps/ieee754/ldbl-128ibm/s_tanhl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/s_tanhl.c
@@ -41,6 +41,7 @@ static char rcsid[] = "$NetBSD: s_tanh.c,v 1.7 1995/05/10 20:48:22 jtc Exp $";
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
#include <math_ldbl_opt.h>
static const long double one=1.0L, two=2.0L, tiny = 1.0e-300L;
diff --git a/sysdeps/ieee754/ldbl-96/e_asinl.c b/sysdeps/ieee754/ldbl-96/e_asinl.c
index 85982ca..806906a 100644
--- a/sysdeps/ieee754/ldbl-96/e_asinl.c
+++ b/sysdeps/ieee754/ldbl-96/e_asinl.c
@@ -61,6 +61,7 @@
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
static const long double
one = 1.0L,
diff --git a/sysdeps/ieee754/ldbl-96/e_atanhl.c b/sysdeps/ieee754/ldbl-96/e_atanhl.c
index af3487f..c1f43ff 100644
--- a/sysdeps/ieee754/ldbl-96/e_atanhl.c
+++ b/sysdeps/ieee754/ldbl-96/e_atanhl.c
@@ -35,6 +35,7 @@
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
static const long double one = 1.0, huge = 1e4900L;
diff --git a/sysdeps/ieee754/ldbl-96/e_gammal_r.c b/sysdeps/ieee754/ldbl-96/e_gammal_r.c
index 5e5fd10..fc7a5c5 100644
--- a/sysdeps/ieee754/ldbl-96/e_gammal_r.c
+++ b/sysdeps/ieee754/ldbl-96/e_gammal_r.c
@@ -19,6 +19,7 @@
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
#include <float.h>
/* Coefficients B_2k / 2k(2k-1) of x^-(2k-1) inside exp in Stirling's
diff --git a/sysdeps/ieee754/ldbl-96/e_hypotl.c b/sysdeps/ieee754/ldbl-96/e_hypotl.c
index 560ef22..f664e30 100644
--- a/sysdeps/ieee754/ldbl-96/e_hypotl.c
+++ b/sysdeps/ieee754/ldbl-96/e_hypotl.c
@@ -48,6 +48,7 @@
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
long double __ieee754_hypotl(long double x, long double y)
{
diff --git a/sysdeps/ieee754/ldbl-96/e_j1l.c b/sysdeps/ieee754/ldbl-96/e_j1l.c
index 6d0cb9e..581615d 100644
--- a/sysdeps/ieee754/ldbl-96/e_j1l.c
+++ b/sysdeps/ieee754/ldbl-96/e_j1l.c
@@ -75,6 +75,7 @@
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
static long double pone (long double), qone (long double);
diff --git a/sysdeps/ieee754/ldbl-96/e_jnl.c b/sysdeps/ieee754/ldbl-96/e_jnl.c
index fe249b9..394921f 100644
--- a/sysdeps/ieee754/ldbl-96/e_jnl.c
+++ b/sysdeps/ieee754/ldbl-96/e_jnl.c
@@ -60,6 +60,7 @@
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
static const long double
invsqrtpi = 5.64189583547756286948079e-1L, two = 2.0e0L, one = 1.0e0L;
diff --git a/sysdeps/ieee754/ldbl-96/e_sinhl.c b/sysdeps/ieee754/ldbl-96/e_sinhl.c
index 64f7c91..a4b3978 100644
--- a/sysdeps/ieee754/ldbl-96/e_sinhl.c
+++ b/sysdeps/ieee754/ldbl-96/e_sinhl.c
@@ -39,6 +39,7 @@ static char rcsid[] = "$NetBSD: $";
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
static const long double one = 1.0, shuge = 1.0e4931L;
diff --git a/sysdeps/ieee754/ldbl-96/k_sinl.c b/sysdeps/ieee754/ldbl-96/k_sinl.c
index 30a3c2a..2549f71 100644
--- a/sysdeps/ieee754/ldbl-96/k_sinl.c
+++ b/sysdeps/ieee754/ldbl-96/k_sinl.c
@@ -23,6 +23,7 @@
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
/* The polynomials have not been optimized for extended-precision and
may contain more terms than needed. */
diff --git a/sysdeps/ieee754/ldbl-96/k_tanl.c b/sysdeps/ieee754/ldbl-96/k_tanl.c
index f8641d5..9b5151b 100644
--- a/sysdeps/ieee754/ldbl-96/k_tanl.c
+++ b/sysdeps/ieee754/ldbl-96/k_tanl.c
@@ -59,6 +59,7 @@
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
#include <libc-diag.h>
static const long double
diff --git a/sysdeps/ieee754/ldbl-96/s_asinhl.c b/sysdeps/ieee754/ldbl-96/s_asinhl.c
index 50a08ed..2b9ae1f 100644
--- a/sysdeps/ieee754/ldbl-96/s_asinhl.c
+++ b/sysdeps/ieee754/ldbl-96/s_asinhl.c
@@ -32,6 +32,7 @@ static char rcsid[] = "$NetBSD: $";
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
#include <libm-alias-ldouble.h>
static const long double
diff --git a/sysdeps/ieee754/ldbl-96/s_erfl.c b/sysdeps/ieee754/ldbl-96/s_erfl.c
index 0f89740..1e42df7 100644
--- a/sysdeps/ieee754/ldbl-96/s_erfl.c
+++ b/sysdeps/ieee754/ldbl-96/s_erfl.c
@@ -108,6 +108,7 @@
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
#include <libm-alias-ldouble.h>
static const long double
diff --git a/sysdeps/ieee754/ldbl-96/s_nextupl.c b/sysdeps/ieee754/ldbl-96/s_nextupl.c
index a1ca1fe..5dff32c 100644
--- a/sysdeps/ieee754/ldbl-96/s_nextupl.c
+++ b/sysdeps/ieee754/ldbl-96/s_nextupl.c
@@ -16,6 +16,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#include <float.h>
#include <math.h>
#include <math_private.h>
#include <libm-alias-ldouble.h>
diff --git a/sysdeps/ieee754/ldbl-96/s_tanhl.c b/sysdeps/ieee754/ldbl-96/s_tanhl.c
index b0578ff..b1b3e06 100644
--- a/sysdeps/ieee754/ldbl-96/s_tanhl.c
+++ b/sysdeps/ieee754/ldbl-96/s_tanhl.c
@@ -45,6 +45,7 @@ static char rcsid[] = "$NetBSD: $";
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <math-underflow.h>
#include <libm-alias-ldouble.h>
static const long double one=1.0, two=2.0, tiny = 1.0e-4900L;