Obsolete pow10 functions.

This patch obsoletes the pow10, pow10f and pow10l functions (makes
them into compat symbols, not available for new ports or static
linking).  The exp10 names for these functions are standardized (in TS
18661-4) and were added in the same glibc version (2.1) as pow10 so
source code can change to use them without any loss of portability.
Since pow10 is deliberately not provided for _Float128, only exp10,
this slightly simplifies moving to the new wrapper templates in the
!LIBM_SVID_COMPAT case, by avoiding needing to arrange for pow10,
pow10f and pow10l to be defined by those templates.

Tested for x86_64, and with build-many-glibcs.py.

	* manual/math.texi (pow10): Do not document.
	(pow10f): Likewise.
	(pow10l): Likewise.
	* math/bits/mathcalls.h [__USE_GNU] (pow10): Do not declare.
	* math/bits/math-finite.h [__USE_GNU] (pow10): Likewise.
	* math/libm-test-exp10.inc (pow10_test): Remove.
	(do_test): Do not call pow10.
	* math/w_exp10_compat.c (pow10): Make into compat symbol.
	[NO_LONG_DOUBLE] (pow10l): Likewise.
	* math/w_exp10f_compat.c (pow10f): Likewise.
	* math/w_exp10l_compat.c (pow10l): Likewise.
	* sysdeps/ia64/fpu/e_exp10.S: Include <shlib-compat.h>.
	(pow10): Make into compat symbol.
	* sysdeps/ia64/fpu/e_exp10f.S: Include <shlib-compat.h>.
	(pow10f): Make into compat symbol.
	* sysdeps/ia64/fpu/e_exp10l.S: Include <shlib-compat.h>.
	(pow10l): Make into compat symbol.
	* sysdeps/ieee754/ldbl-opt/Makefile (libnldbl-calls): Remove
	pow10.
	(CFLAGS-nldbl-pow10.c): Remove variable..
	* sysdeps/ieee754/ldbl-opt/nldbl-pow10.c: Remove file.
	* sysdeps/ieee754/ldbl-opt/w_exp10_compat.c (pow10l): Condition on
	[SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_27)].
	* sysdeps/ieee754/ldbl-opt/w_exp10l_compat.c (compat_symbol):
	Undefine and redefine.
	(pow10l): Make into compat symbol.
	* sysdeps/aarch64/libm-test-ulps: Remove pow10 ulps.
	* sysdeps/alpha/fpu/libm-test-ulps: Likewise.
	* sysdeps/arm/libm-test-ulps: Likewise.
	* sysdeps/hppa/fpu/libm-test-ulps: Likewise.
	* sysdeps/i386/fpu/libm-test-ulps: Likewise.
	* sysdeps/i386/i686/fpu/multiarch/libm-test-ulps: Likewise.
	* sysdeps/microblaze/libm-test-ulps: Likewise.
	* sysdeps/mips/mips32/libm-test-ulps: Likewise.
	* sysdeps/mips/mips64/libm-test-ulps: Likewise.
	* sysdeps/nios2/libm-test-ulps: Likewise.
	* sysdeps/powerpc/fpu/libm-test-ulps: Likewise.
	* sysdeps/powerpc/nofpu/libm-test-ulps: Likewise.
	* sysdeps/s390/fpu/libm-test-ulps: Likewise.
	* sysdeps/sh/libm-test-ulps: Likewise.
	* sysdeps/sparc/fpu/libm-test-ulps: Likewise.
	* sysdeps/tile/libm-test-ulps: Likewise.
	* sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
This commit is contained in:
Joseph Myers 2017-09-01 21:13:18 +00:00
parent 3824fc3891
commit 5a80d39d0d
33 changed files with 96 additions and 431 deletions

View File

@ -1,3 +1,49 @@
2017-09-01 Joseph Myers <joseph@codesourcery.com>
* manual/math.texi (pow10): Do not document.
(pow10f): Likewise.
(pow10l): Likewise.
* math/bits/mathcalls.h [__USE_GNU] (pow10): Do not declare.
* math/bits/math-finite.h [__USE_GNU] (pow10): Likewise.
* math/libm-test-exp10.inc (pow10_test): Remove.
(do_test): Do not call pow10.
* math/w_exp10_compat.c (pow10): Make into compat symbol.
[NO_LONG_DOUBLE] (pow10l): Likewise.
* math/w_exp10f_compat.c (pow10f): Likewise.
* math/w_exp10l_compat.c (pow10l): Likewise.
* sysdeps/ia64/fpu/e_exp10.S: Include <shlib-compat.h>.
(pow10): Make into compat symbol.
* sysdeps/ia64/fpu/e_exp10f.S: Include <shlib-compat.h>.
(pow10f): Make into compat symbol.
* sysdeps/ia64/fpu/e_exp10l.S: Include <shlib-compat.h>.
(pow10l): Make into compat symbol.
* sysdeps/ieee754/ldbl-opt/Makefile (libnldbl-calls): Remove
pow10.
(CFLAGS-nldbl-pow10.c): Remove variable..
* sysdeps/ieee754/ldbl-opt/nldbl-pow10.c: Remove file.
* sysdeps/ieee754/ldbl-opt/w_exp10_compat.c (pow10l): Condition on
[SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_27)].
* sysdeps/ieee754/ldbl-opt/w_exp10l_compat.c (compat_symbol):
Undefine and redefine.
(pow10l): Make into compat symbol.
* sysdeps/aarch64/libm-test-ulps: Remove pow10 ulps.
* sysdeps/alpha/fpu/libm-test-ulps: Likewise.
* sysdeps/arm/libm-test-ulps: Likewise.
* sysdeps/hppa/fpu/libm-test-ulps: Likewise.
* sysdeps/i386/fpu/libm-test-ulps: Likewise.
* sysdeps/i386/i686/fpu/multiarch/libm-test-ulps: Likewise.
* sysdeps/microblaze/libm-test-ulps: Likewise.
* sysdeps/mips/mips32/libm-test-ulps: Likewise.
* sysdeps/mips/mips64/libm-test-ulps: Likewise.
* sysdeps/nios2/libm-test-ulps: Likewise.
* sysdeps/powerpc/fpu/libm-test-ulps: Likewise.
* sysdeps/powerpc/nofpu/libm-test-ulps: Likewise.
* sysdeps/s390/fpu/libm-test-ulps: Likewise.
* sysdeps/sh/libm-test-ulps: Likewise.
* sysdeps/sparc/fpu/libm-test-ulps: Likewise.
* sysdeps/tile/libm-test-ulps: Likewise.
* sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
2017-09-01 Paul Pluzhnikov <ppluzhnikov@google.com>
* stdlib/tst-atexit-common.c (crumbs): Ensure correct size.

4
NEWS
View File

@ -33,6 +33,10 @@ Deprecated and removed features, and other changes affecting compatibility:
exception, or the macros X_TLOSS, DOMAIN, SING, OVERFLOW, UNDERFLOW,
TLOSS, PLOSS and HUGE.
* The libm functions pow10, pow10f and pow10l are no longer supported for
new programs. Programs should use the standard names exp10, exp10f and
exp10l for these functions instead.
* The mcontext_t type is no longer the same as struct sigcontext. On
platforms where it was previously the same, this changes the C++ name
mangling for interfaces involving this type.

View File

@ -490,22 +490,14 @@ Mathematically, @code{exp2 (x)} is the same as @code{exp (x * log (2))}.
@deftypefunx {long double} exp10l (long double @var{x})
@deftypefunx _FloatN exp10fN (_Float@var{N} @var{x})
@deftypefunx _FloatNx exp10fNx (_Float@var{N}x @var{x})
@deftypefunx double pow10 (double @var{x})
@deftypefunx float pow10f (float @var{x})
@deftypefunx {long double} pow10l (long double @var{x})
@standards{ISO, math.h}
@standardsx{exp10fN, TS 18661-4:2015, math.h}
@standardsx{exp10fNx, TS 18661-4:2015, math.h}
@standardsx{pow10, GNU, math.h}
@standardsx{pow10f, GNU, math.h}
@standardsx{pow10l, GNU, math.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
These functions compute @code{10} raised to the power @var{x}.
Mathematically, @code{exp10 (x)} is the same as @code{exp (x * log (10))}.
The @code{exp10} functions are from TS 18661-4:2015; the @code{pow10}
names are GNU extensions. The name @code{exp10} is
preferred, since it is analogous to @code{exp} and @code{exp2}.
The @code{exp10} functions are from TS 18661-4:2015.
@end deftypefun

View File

@ -70,11 +70,6 @@ __MATH_REDIRCALL (exp, , (_Mdouble_));
#ifdef __USE_GNU
/* exp10. */
__MATH_REDIRCALL (exp10, , (_Mdouble_));
/* pow10. */
# if !__MATH_DECLARING_FLOATN
__MATH_REDIRCALL_2 (pow10, , (_Mdouble_), exp10);
# endif
#endif
#ifdef __USE_ISOC99

View File

@ -113,12 +113,6 @@ __MATHCALL (modf,, (_Mdouble_ __x, _Mdouble_ *__iptr)) __nonnull ((2));
/* Compute exponent to base ten. */
__MATHCALL (exp10,, (_Mdouble_ __x));
#endif
#ifdef __USE_GNU
/* Another name occasionally used. */
# if !__MATH_DECLARING_FLOATN
__MATHCALL (pow10,, (_Mdouble_ __x));
# endif
#endif
#if defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99
/* Return exp(X) - 1. */

View File

@ -36,20 +36,10 @@ exp10_test (void)
ALL_RM_TEST (exp10, 0, exp10_test_data, RUN_TEST_LOOP_f_f, END);
}
static void
pow10_test (void)
{
#if !TEST_FLOATN
/* pow10 uses the same test data as exp10. */
ALL_RM_TEST (pow10, 0, exp10_test_data, RUN_TEST_LOOP_f_f, END);
#endif
}
static void
do_test (void)
{
exp10_test ();
pow10_test ();
}
/*

View File

@ -37,11 +37,15 @@ __exp10 (double x)
return z;
}
weak_alias (__exp10, exp10)
#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_27)
strong_alias (__exp10, __pow10)
weak_alias (__pow10, pow10)
compat_symbol (libm, __pow10, pow10, GLIBC_2_1);
#endif
#ifdef NO_LONG_DOUBLE
strong_alias (__exp10, __exp10l)
weak_alias (__exp10, exp10l)
# if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_27)
strong_alias (__exp10l, __pow10l)
weak_alias (__pow10l, pow10l)
compat_symbol (libm, __pow10l, pow10l, GLIBC_2_1);
# endif
#endif

View File

@ -37,5 +37,7 @@ __exp10f (float x)
return z;
}
weak_alias (__exp10f, exp10f)
#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_27)
strong_alias (__exp10f, __pow10f)
weak_alias (__pow10f, pow10f)
compat_symbol (libm, __pow10f, pow10f, GLIBC_2_1);
#endif

View File

@ -37,5 +37,7 @@ __exp10l (long double x)
return z;
}
weak_alias (__exp10l, exp10l)
#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_27)
strong_alias (__exp10l, __pow10l)
weak_alias (__pow10l, pow10l)
compat_symbol (libm, __pow10l, pow10l, GLIBC_2_1);
#endif

View File

@ -1937,36 +1937,6 @@ ifloat: 1
ildouble: 2
ldouble: 2
Function: "pow10":
double: 2
idouble: 2
ildouble: 2
ldouble: 2
Function: "pow10_downward":
double: 2
float: 1
idouble: 2
ifloat: 1
ildouble: 3
ldouble: 3
Function: "pow10_towardzero":
double: 2
float: 1
idouble: 2
ifloat: 1
ildouble: 3
ldouble: 3
Function: "pow10_upward":
double: 2
float: 1
idouble: 2
ifloat: 1
ildouble: 3
ldouble: 3
Function: "pow_downward":
double: 1
float: 1

View File

@ -1931,36 +1931,6 @@ ifloat: 1
ildouble: 2
ldouble: 2
Function: "pow10":
double: 2
idouble: 2
ildouble: 2
ldouble: 2
Function: "pow10_downward":
double: 2
float: 1
idouble: 2
ifloat: 1
ildouble: 3
ldouble: 3
Function: "pow10_towardzero":
double: 2
float: 1
idouble: 2
ifloat: 1
ildouble: 3
ldouble: 3
Function: "pow10_upward":
double: 2
float: 1
idouble: 2
ifloat: 1
ildouble: 3
ldouble: 3
Function: "pow_downward":
double: 1
float: 1

View File

@ -1437,28 +1437,6 @@ Function: "pow":
float: 1
ifloat: 1
Function: "pow10":
double: 2
idouble: 2
Function: "pow10_downward":
double: 2
float: 1
idouble: 2
ifloat: 1
Function: "pow10_towardzero":
double: 2
float: 1
idouble: 2
ifloat: 1
Function: "pow10_upward":
double: 2
float: 1
idouble: 2
ifloat: 1
Function: "pow_downward":
double: 1
float: 1

View File

@ -1499,28 +1499,6 @@ Function: "pow":
float: 1
ifloat: 1
Function: "pow10":
double: 2
idouble: 2
Function: "pow10_downward":
double: 2
float: 1
idouble: 2
ifloat: 1
Function: "pow10_towardzero":
double: 2
float: 1
idouble: 2
ifloat: 1
Function: "pow10_upward":
double: 2
float: 1
idouble: 2
ifloat: 1
Function: "pow_downward":
double: 1
float: 1

View File

@ -2358,36 +2358,6 @@ ifloat128: 2
ildouble: 1
ldouble: 1
Function: "pow10":
double: 1
idouble: 1
ildouble: 1
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: 2
ldouble: 2
Function: "pow10_upward":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 2
ldouble: 2
Function: "pow_downward":
double: 1
float128: 2

View File

@ -2360,36 +2360,6 @@ ifloat128: 2
ildouble: 1
ldouble: 1
Function: "pow10":
double: 1
idouble: 1
ildouble: 1
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: 2
ldouble: 2
Function: "pow10_upward":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 2
ldouble: 2
Function: "pow_downward":
double: 1
float128: 2

View File

@ -87,6 +87,8 @@
// p6-p12
//
#include <shlib-compat.h>
GR_TBL_START = r2
GR_LOG_TBL = r3
@ -534,7 +536,9 @@ OUT_RANGE_exp10:
;;
GLOBAL_IEEE754_END(exp10)
weak_alias (exp10, pow10)
#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_27)
compat_symbol (libm, exp10, pow10, GLIBC_2_2)
#endif
LOCAL_LIBM_ENTRY(__libm_error_region)

View File

@ -86,6 +86,8 @@
// p6-p12
//
#include <shlib-compat.h>
GR_TBL_START = r2
GR_LOG_TBL = r3
@ -486,7 +488,9 @@ OUT_RANGE_exp10:
;;
GLOBAL_IEEE754_END(exp10f)
weak_alias (exp10f, pow10f)
#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_27)
compat_symbol (libm, exp10f, pow10f, GLIBC_2_2)
#endif
LOCAL_LIBM_ENTRY(__libm_error_region)

View File

@ -85,6 +85,8 @@
// p6-p8, p11-p14
//
#include <shlib-compat.h>
FR_X = f10
FR_Y = f1
@ -747,7 +749,9 @@ OUT_RANGE_EXP10:
;;
GLOBAL_IEEE754_END(exp10l)
weak_alias (exp10l, pow10l)
#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_27)
compat_symbol (libm, exp10l, pow10l, GLIBC_2_2)
#endif
LOCAL_LIBM_ENTRY(__libm_error_region)

View File

@ -29,7 +29,7 @@ libnldbl-calls = asprintf dprintf fprintf fscanf fwprintf fwscanf iovfscanf \
qecvt qfcvt qgcvt qecvt_r qfcvt_r \
isinf isnan finite signbit scalb log2 lgamma_r ceil \
significand acos asin atan atan2 cos sin tan cosh sinh \
tanh acosh asinh atanh exp log log10 exp10 pow10 expm1 \
tanh acosh asinh atanh exp log log10 exp10 expm1 \
log1p logb exp2 sqrt cbrt fabs floor j0 j1 y0 y1 erf erfc \
lgamma tgamma gamma rint nearbyint round trunc \
copysign fdim fmax fmin nextafter pow hypot fmod \
@ -136,7 +136,6 @@ CFLAGS-nldbl-nexttoward.c = -fno-builtin-nexttoward -fno-builtin-nexttowardl
CFLAGS-nldbl-nexttowardf.c = -fno-builtin-nexttowardf
CFLAGS-nldbl-nextup.c = -fno-builtin-nextupl
CFLAGS-nldbl-pow.c = -fno-builtin-powl
CFLAGS-nldbl-pow10.c = -fno-builtin-pow10l
CFLAGS-nldbl-remainder.c = -fno-builtin-remainderl -fno-builtin-dreml
CFLAGS-nldbl-remquo.c = -fno-builtin-remquol
CFLAGS-nldbl-rint.c = -fno-builtin-rintl

View File

@ -1,8 +0,0 @@
#include "nldbl-compat.h"
double
attribute_hidden
pow10l (double x)
{
return pow10 (x);
}

View File

@ -2,5 +2,8 @@
#include <math/w_exp10_compat.c>
#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
compat_symbol (libm, __exp10, exp10l, GLIBC_2_1);
compat_symbol (libm, __pow10, pow10l, GLIBC_2_1);
# if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_27)
strong_alias (__pow10, __pow10_pow10l)
compat_symbol (libm, __pow10_pow10l, pow10l, GLIBC_2_1);
# endif
#endif

View File

@ -1,6 +1,18 @@
#include <math_ldbl_opt.h>
#undef weak_alias
#define weak_alias(n,a)
#undef compat_symbol
#define compat_symbol(l,n,a,v)
#include <math/w_exp10l_compat.c>
long_double_symbol (libm, __exp10l, exp10l);
long_double_symbol (libm, __pow10l, pow10l);
#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_27)
/* compat_symbol was undefined and redefined above to avoid the
default pow10l compat symbol at version GLIBC_2_1 (as for ldbl-opt
configurations, that version should have the alias to exp10). So
it now needs to be redefined to define the compat symbol at version
LONG_DOUBLE_COMPAT_VERSION. */
# undef compat_symbol
# define compat_symbol(lib, local, symbol, version) \
compat_symbol_reference (lib, local, symbol, version)
compat_symbol (libm, __pow10l, pow10l, LONG_DOUBLE_COMPAT_VERSION);
#endif

View File

@ -343,10 +343,6 @@ Function: "pow":
float: 1
ifloat: 1
Function: "pow10":
double: 2
idouble: 2
Function: "sin":
float: 1
ifloat: 1

View File

@ -1437,28 +1437,6 @@ Function: "pow":
float: 1
ifloat: 1
Function: "pow10":
double: 2
idouble: 2
Function: "pow10_downward":
double: 2
float: 1
idouble: 2
ifloat: 1
Function: "pow10_towardzero":
double: 2
float: 1
idouble: 2
ifloat: 1
Function: "pow10_upward":
double: 2
float: 1
idouble: 2
ifloat: 1
Function: "pow_downward":
double: 1
float: 1

View File

@ -1931,36 +1931,6 @@ ifloat: 1
ildouble: 2
ldouble: 2
Function: "pow10":
double: 2
idouble: 2
ildouble: 2
ldouble: 2
Function: "pow10_downward":
double: 2
float: 1
idouble: 2
ifloat: 1
ildouble: 3
ldouble: 3
Function: "pow10_towardzero":
double: 2
float: 1
idouble: 2
ifloat: 1
ildouble: 3
ldouble: 3
Function: "pow10_upward":
double: 2
float: 1
idouble: 2
ifloat: 1
ildouble: 3
ldouble: 3
Function: "pow_downward":
double: 1
float: 1

View File

@ -343,10 +343,6 @@ Function: "pow":
float: 3
ifloat: 3
Function: "pow10":
double: 2
idouble: 2
Function: "sin":
float: 1
ifloat: 1

View File

@ -2471,36 +2471,6 @@ ifloat128: 2
ildouble: 1
ldouble: 1
Function: "pow10":
double: 2
idouble: 2
ildouble: 1
ldouble: 1
Function: "pow10_downward":
double: 2
float: 1
idouble: 2
ifloat: 1
ildouble: 9
ldouble: 9
Function: "pow10_towardzero":
double: 2
float: 1
idouble: 2
ifloat: 1
ildouble: 9
ldouble: 9
Function: "pow10_upward":
double: 2
float: 1
idouble: 2
ifloat: 1
ildouble: 4
ldouble: 4
Function: "pow_downward":
double: 1
float: 1

View File

@ -1985,36 +1985,6 @@ ifloat: 1
ildouble: 1
ldouble: 1
Function: "pow10":
double: 2
idouble: 2
ildouble: 1
ldouble: 1
Function: "pow10_downward":
double: 2
float: 1
idouble: 2
ifloat: 1
ildouble: 9
ldouble: 9
Function: "pow10_towardzero":
double: 2
float: 1
idouble: 2
ifloat: 1
ildouble: 9
ldouble: 9
Function: "pow10_upward":
double: 2
float: 1
idouble: 2
ifloat: 1
ildouble: 4
ldouble: 4
Function: "pow_downward":
double: 1
float: 1

View File

@ -1931,36 +1931,6 @@ ifloat: 1
ildouble: 2
ldouble: 2
Function: "pow10":
double: 2
idouble: 2
ildouble: 2
ldouble: 2
Function: "pow10_downward":
double: 2
float: 1
idouble: 2
ifloat: 1
ildouble: 3
ldouble: 3
Function: "pow10_towardzero":
double: 2
float: 1
idouble: 2
ifloat: 1
ildouble: 3
ldouble: 3
Function: "pow10_upward":
double: 2
float: 1
idouble: 2
ifloat: 1
ildouble: 3
ldouble: 3
Function: "pow_downward":
double: 1
float: 1

View File

@ -358,10 +358,6 @@ Function: "pow":
float: 1
ifloat: 1
Function: "pow10":
double: 1
idouble: 1
Function: "pow_towardzero":
float: 1
ifloat: 1

View File

@ -1931,36 +1931,6 @@ ifloat: 3
ildouble: 2
ldouble: 2
Function: "pow10":
double: 2
idouble: 2
ildouble: 2
ldouble: 2
Function: "pow10_downward":
double: 2
float: 1
idouble: 2
ifloat: 1
ildouble: 3
ldouble: 3
Function: "pow10_towardzero":
double: 2
float: 1
idouble: 2
ifloat: 1
ildouble: 3
ldouble: 3
Function: "pow10_upward":
double: 2
float: 1
idouble: 2
ifloat: 1
ildouble: 3
ldouble: 3
Function: "pow_downward":
double: 1
float: 3

View File

@ -339,10 +339,6 @@ Function: "pow":
float: 3
ifloat: 3
Function: "pow10":
double: 2
idouble: 2
Function: "sin":
float: 1
ifloat: 1

View File

@ -2471,36 +2471,6 @@ ifloat128: 2
ildouble: 1
ldouble: 1
Function: "pow10":
double: 2
idouble: 2
ildouble: 1
ldouble: 1
Function: "pow10_downward":
double: 2
float: 1
idouble: 2
ifloat: 1
ildouble: 2
ldouble: 2
Function: "pow10_towardzero":
double: 2
float: 1
idouble: 2
ifloat: 1
ildouble: 2
ldouble: 2
Function: "pow10_upward":
double: 2
float: 1
idouble: 2
ifloat: 1
ildouble: 2
ldouble: 2
Function: "pow_downward":
double: 1
float: 1