@@ -889,6 +889,24 @@ exp10 -max
exp10 0.75
# GCC bug 59666: results on directed rounding may be incorrect.
exp10 0x1.348e45573a1dd72cp+8 xfail-rounding:ldbl-128ibm
+exp10 0x1p-10
+exp10 -0x1p-10
+exp10 0x1p-20
+exp10 -0x1p-20
+exp10 0x1p-30
+exp10 -0x1p-30
+exp10 0x1p-40
+exp10 -0x1p-40
+exp10 0x1p-50
+exp10 -0x1p-50
+exp10 0x1p-60
+exp10 -0x1p-60
+exp10 0x1p-100
+exp10 -0x1p-100
+exp10 min
+exp10 -min
+exp10 min_subnorm
+exp10 -min_subnorm
exp2 0
exp2 -0
@@ -35,6 +35,8 @@ __ieee754_exp10 (double arg)
return DBL_MIN * DBL_MIN;
else if (arg > DBL_MAX_10_EXP + 1)
return DBL_MAX * DBL_MAX;
+ else if (fabs (arg) < 0x1p-56)
+ return 1.0;
GET_LOW_WORD (lx, arg);
lx &= 0xf8000000;
@@ -35,6 +35,8 @@ __ieee754_exp10l (long double arg)
return LDBL_MIN * LDBL_MIN;
else if (arg > LDBL_MAX_10_EXP + 1)
return LDBL_MAX * LDBL_MAX;
+ else if (fabsl (arg) < 0x1p-116L)
+ return 1.0L;
u.value = arg;
u.parts64.lsw &= 0xfe00000000000000LL;
@@ -35,6 +35,8 @@ __ieee754_exp10l (long double arg)
return LDBL_MIN * LDBL_MIN;
else if (arg > LDBL_MAX_10_EXP + 1)
return LDBL_MAX * LDBL_MAX;
+ else if (fabsl (arg) < 0x1p-109L)
+ return 1.0L;
u.ld = arg;
arg_high = u.d[0].d;
@@ -1359,7 +1359,9 @@ ldouble: 1
Function: "exp10_downward":
double: 1
+float: 1
idouble: 1
+ifloat: 1
ildouble: 2
ldouble: 2
@@ -1371,7 +1373,9 @@ ldouble: 1
Function: "exp10_towardzero":
double: 1
+float: 1
idouble: 1
+ifloat: 1
ildouble: 1
ldouble: 1
@@ -1717,13 +1721,17 @@ ldouble: 1
Function: "pow10_downward":
double: 1
+float: 1
idouble: 1
+ifloat: 1
ildouble: 2
ldouble: 2
Function: "pow10_towardzero":
double: 1
+float: 1
idouble: 1
+ifloat: 1
ildouble: 1
ldouble: 1