mirror of git://sourceware.org/git/glibc.git
Implement C23 pown
C23 adds various <math.h> function families originally defined in TS 18661-4. Add the pown functions, which are like pow but with an integer exponent. That exponent has type long long int in C23; it was intmax_t in TS 18661-4, and as with other interfaces changed after their initial appearance in the TS, I don't think we need to support the original version of the interface. The test inputs are based on the subset of test inputs for pow that use integer exponents that fit in long long. As the first such template implementation that saves and restores the rounding mode internally (to avoid possible issues with directed rounding and intermediate overflows or underflows in the wrong rounding mode), support also needed to be added for using SET_RESTORE_ROUND* in such template function implementations. This required math-type-macros-float128.h to include <fenv_private.h>, so it can tell whether SET_RESTORE_ROUNDF128 is defined. In turn, the include order with <fenv_private.h> included before <math_private.h> broke loongarch builds, showing up that sysdeps/loongarch/math_private.h is really a fenv_private.h file (maybe implemented internally before the consistent split of those headers in 2018?) and needed to be renamed to fenv_private.h to avoid errors with duplicate macro definitions if <math_private.h> is included after <fenv_private.h>. The underlying implementation uses __ieee754_pow functions (called more than once in some cases, where the exponent does not fit in the floating type). I expect a custom implementation for a given format, that only handles integer exponents but handles larger exponents directly, could be faster and more accurate in some cases. I encourage searching for worst cases for ulps error for these implementations (necessarily non-exhaustively, given the size of the input space). Tested for x86_64 and x86, and with build-many-glibcs.py.
This commit is contained in:
parent
be61b9493d
commit
75ad83f564
2
NEWS
2
NEWS
|
@ -14,7 +14,7 @@ Major new features:
|
|||
functions for float, double, long double, _FloatN and _FloatNx, and a
|
||||
type-generic macro in <tgmath.h>.
|
||||
|
||||
- Power and absolute-value functions: powr, rsqrt.
|
||||
- Power and absolute-value functions: pown, powr, rsqrt.
|
||||
|
||||
* On Linux, the pthread_gettid_np function has been added.
|
||||
|
||||
|
|
|
@ -789,6 +789,20 @@ but this is valid for @code{pow} if @var{power} is an integer.
|
|||
The @code{powr} functions are from TS 18661-4:2015.
|
||||
@end deftypefun
|
||||
|
||||
@deftypefun double pown (double @var{base}, long long int @var{power})
|
||||
@deftypefunx float pownf (float @var{base}, long long int @var{power})
|
||||
@deftypefunx {long double} pownl (long double @var{base}, long long int @var{power})
|
||||
@deftypefunx _FloatN pownfN (_Float@var{N} @var{base}, long long int @var{power})
|
||||
@deftypefunx _FloatNx pownfNx (_Float@var{N}x @var{base}, long long int @var{power})
|
||||
@standards{TS 18661-4:2015, math.h}
|
||||
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
|
||||
These return @var{base} raised to @var{power} (an integer).
|
||||
|
||||
The @code{pown} functions are from TS 18661-4:2015 (which used
|
||||
@code{intmax_t} as the type of @var{power}; the type changed to
|
||||
@code{long long int} in C23).
|
||||
@end deftypefun
|
||||
|
||||
@cindex square root function
|
||||
@deftypefun double sqrt (double @var{x})
|
||||
@deftypefunx float sqrtf (float @var{x})
|
||||
|
|
|
@ -139,6 +139,7 @@ gen-libm-calls = \
|
|||
s_log2p1F \
|
||||
s_nanF \
|
||||
s_nextdownF \
|
||||
s_pownF \
|
||||
s_powrF \
|
||||
s_rsqrtF \
|
||||
s_significandF \
|
||||
|
@ -686,6 +687,7 @@ libm-test-funcs-auto = \
|
|||
log1p \
|
||||
log2p1 \
|
||||
pow \
|
||||
pown \
|
||||
powr \
|
||||
rsqrt \
|
||||
sin \
|
||||
|
@ -1018,6 +1020,7 @@ tgmath3-macros = \
|
|||
nexttoward \
|
||||
nextup \
|
||||
pow \
|
||||
pown \
|
||||
powr \
|
||||
remainder \
|
||||
remquo \
|
||||
|
@ -1442,6 +1445,7 @@ CFLAGS-s_nexttoward.c += -fno-builtin-nexttoward -fno-builtin-nexttowardl
|
|||
CFLAGS-s_nexttowardf.c += -fno-builtin-nexttowardf
|
||||
CFLAGS-s_nextup.c += -fno-builtin-nextupl
|
||||
CFLAGS-e_pow.c += -fno-builtin-powl
|
||||
CFLAGS-s_pown.c += -fno-builtin-pownl
|
||||
CFLAGS-s_powr.c += -fno-builtin-powrl
|
||||
CFLAGS-w_remainder.c += -fno-builtin-remainderl -fno-builtin-dreml
|
||||
CFLAGS-s_remquo.c += -fno-builtin-remquol
|
||||
|
@ -1578,6 +1582,7 @@ CFLAGS-s_nextafter.c += -fno-builtin-nextafterf32x -fno-builtin-nextafterf64
|
|||
CFLAGS-s_nextdown.c += -fno-builtin-nextdownf32x -fno-builtin-nextdownf64
|
||||
CFLAGS-s_nextup.c += -fno-builtin-nextupf32x -fno-builtin-nextupf64
|
||||
CFLAGS-e_pow.c += -fno-builtin-powf32x -fno-builtin-powf64
|
||||
CFLAGS-s_pown.c += -fno-builtin-pownf32x -fno-builtin-pownf64
|
||||
CFLAGS-s_powr.c += -fno-builtin-powrf32x -fno-builtin-powrf64
|
||||
CFLAGS-w_remainder.c += -fno-builtin-remainderf32x -fno-builtin-remainderf64
|
||||
CFLAGS-s_remquo.c += -fno-builtin-remquof32x -fno-builtin-remquof64
|
||||
|
@ -1705,6 +1710,7 @@ CFLAGS-s_nextafterf.c += -fno-builtin-nextafterf32
|
|||
CFLAGS-s_nextdownf.c += -fno-builtin-nextdownf32
|
||||
CFLAGS-s_nextupf.c += -fno-builtin-nextupf32
|
||||
CFLAGS-e_powf.c += -fno-builtin-powf32
|
||||
CFLAGS-s_pownf.c += -fno-builtin-pownf32
|
||||
CFLAGS-s_powrf.c += -fno-builtin-powrf32
|
||||
CFLAGS-w_remainderf.c += -fno-builtin-remainderf32
|
||||
CFLAGS-s_remquof.c += -fno-builtin-remquof32
|
||||
|
|
|
@ -673,9 +673,11 @@ libm {
|
|||
}
|
||||
GLIBC_2.42 {
|
||||
# Functions not involving _Float64x or _Float128, for all configurations.
|
||||
pown; pownf; pownl; pownf32; pownf64; pownf32x;
|
||||
powr; powrf; powrl; powrf32; powrf64; powrf32x;
|
||||
rsqrt; rsqrtf; rsqrtl; rsqrtf32; rsqrtf64; rsqrtf32x;
|
||||
# Functions involving _Float64x or _Float128, for some configurations.
|
||||
pownf64x; pownf128;
|
||||
powrf64x; powrf128;
|
||||
rsqrtf64x; rsqrtf128;
|
||||
}
|
||||
|
|
|
@ -8151,6 +8151,383 @@ pow 0x1.059c76p+0 0x1.ff80bep+11
|
|||
pow 0x1.7ac7cp+5 23
|
||||
pow -0x1.7ac7cp+5 23
|
||||
|
||||
pown 0 0
|
||||
pown 0 -0
|
||||
pown -0 0
|
||||
pown -0 -0
|
||||
|
||||
pown 10 0
|
||||
pown 10 -0
|
||||
pown -10 0
|
||||
pown -10 -0
|
||||
|
||||
pown 1 1
|
||||
pown 1 -1
|
||||
pown 1 0x4fffffffffffffff
|
||||
|
||||
# pown (x, +-0) == 1.
|
||||
pown 32.75 0
|
||||
pown 32.75 -0
|
||||
pown -32.75 0
|
||||
pown -32.75 -0
|
||||
pown 0x1p72 0
|
||||
pown 0x1p72 -0
|
||||
pown 0x1p-72 0
|
||||
pown 0x1p-72 -0
|
||||
|
||||
pown 0 1
|
||||
pown 0 11
|
||||
|
||||
pown -0 1
|
||||
pown -0 11
|
||||
|
||||
pown 0 2
|
||||
|
||||
pown -0 2
|
||||
|
||||
# pown (+0, y) == +0 for y an odd integer > 0.
|
||||
pown 0.0 27
|
||||
pown 0.0 0xffffff
|
||||
pown 0.0 0x1fffffffffffff
|
||||
|
||||
# pown (-0, y) == -0 for y an odd integer > 0.
|
||||
pown -0 27
|
||||
pown -0 0xffffff
|
||||
pown -0 0x1fffffe
|
||||
pown -0 0x1fffffffffffff
|
||||
pown -0 0x3ffffffffffffe
|
||||
pown -0 0x7fffffffffffffff
|
||||
|
||||
# pown (+0, y) == +0 for y > 0 and not an odd integer.
|
||||
pown 0.0 4
|
||||
pown 0.0 0x1000000
|
||||
|
||||
# pown (-0, y) == +0 for y > 0 and not an odd integer.
|
||||
pown -0 4
|
||||
pown -0 0x1000000
|
||||
|
||||
pown 2 4
|
||||
pown 256 8
|
||||
|
||||
pown -1.0 -0xffffff
|
||||
pown -1.0 -0x1fffffe
|
||||
pown -1.0 -0x1fffffffffffff
|
||||
pown -1.0 -0x3ffffffffffffe
|
||||
pown -1.0 -0x7fffffffffffffff
|
||||
|
||||
pown -1.0 0xffffff
|
||||
pown -1.0 0x1fffffe
|
||||
pown -1.0 0x1fffffffffffff
|
||||
pown -1.0 0x3ffffffffffffe
|
||||
pown -1.0 0x7fffffffffffffff
|
||||
|
||||
pown -2.0 126
|
||||
pown -2.0 127
|
||||
pown -2.0 -126
|
||||
pown -2.0 -127
|
||||
|
||||
pown -2.0 -0xffffff
|
||||
pown -2.0 -0x1fffffe
|
||||
pown -2.0 -0x1fffffffffffff
|
||||
pown -2.0 -0x3ffffffffffffe
|
||||
pown -2.0 -0x7fffffffffffffff
|
||||
|
||||
pown -2.0 0xffffff
|
||||
pown -2.0 0x1fffffe
|
||||
pown -2.0 0x1fffffffffffff
|
||||
pown -2.0 0x3ffffffffffffe
|
||||
pown -2.0 0x7fffffffffffffff
|
||||
|
||||
pown -max -2
|
||||
pown -max -3
|
||||
pown -max 2
|
||||
pown -max 3
|
||||
|
||||
pown -max -0xffffff
|
||||
pown -max -0x1fffffe
|
||||
pown -max -0x1fffffffffffff
|
||||
pown -max -0x3ffffffffffffe
|
||||
pown -max -0x7fffffffffffffff
|
||||
|
||||
pown -max 0xffffff
|
||||
pown -max 0x1fffffe
|
||||
pown -max 0x1fffffffffffff
|
||||
pown -max 0x3ffffffffffffe
|
||||
pown -max 0x7fffffffffffffff
|
||||
|
||||
pown -0x1p65 2
|
||||
pown -0x1p65 3
|
||||
pown -0x1p65 4
|
||||
pown -0x1p65 5
|
||||
pown -0x1p43 3
|
||||
pown -0x1p43 4
|
||||
pown -0x1p43 5
|
||||
pown -0x1p33 4
|
||||
pown -0x1p33 5
|
||||
pown -0x1p26 5
|
||||
pown -0x1p-65 -2
|
||||
pown -0x1p-65 -3
|
||||
pown -0x1p-65 -4
|
||||
pown -0x1p-65 -5
|
||||
pown -0x1p-43 -3
|
||||
pown -0x1p-43 -4
|
||||
pown -0x1p-43 -5
|
||||
pown -0x1p-33 -4
|
||||
pown -0x1p-33 -5
|
||||
pown -0x1p-26 -5
|
||||
|
||||
pown -0x1p513 2
|
||||
pown -0x1p513 3
|
||||
pown -0x1p513 4
|
||||
pown -0x1p513 5
|
||||
pown -0x1p342 3
|
||||
pown -0x1p342 4
|
||||
pown -0x1p342 5
|
||||
pown -0x1p257 4
|
||||
pown -0x1p257 5
|
||||
pown -0x1p205 5
|
||||
pown -0x1p-513 -2
|
||||
pown -0x1p-513 -3
|
||||
pown -0x1p-513 -4
|
||||
pown -0x1p-513 -5
|
||||
pown -0x1p-342 -3
|
||||
pown -0x1p-342 -4
|
||||
pown -0x1p-342 -5
|
||||
pown -0x1p-257 -4
|
||||
pown -0x1p-257 -5
|
||||
pown -0x1p-205 -5
|
||||
|
||||
pown -0x1p8192 2
|
||||
pown -0x1p8192 3
|
||||
pown -0x1p8192 4
|
||||
pown -0x1p8192 5
|
||||
pown -0x1p5462 3
|
||||
pown -0x1p5462 4
|
||||
pown -0x1p5462 5
|
||||
pown -0x1p4097 4
|
||||
pown -0x1p4097 5
|
||||
pown -0x1p3277 5
|
||||
pown -0x1p64 257
|
||||
pown -0x1p-8192 -2
|
||||
pown -0x1p-8192 -3
|
||||
pown -0x1p-8192 -4
|
||||
pown -0x1p-8192 -5
|
||||
pown -0x1p-5462 -3
|
||||
pown -0x1p-5462 -4
|
||||
pown -0x1p-5462 -5
|
||||
pown -0x1p-4097 -4
|
||||
pown -0x1p-4097 -5
|
||||
pown -0x1p-3277 -5
|
||||
pown -0x1p-64 -257
|
||||
|
||||
pown -0.5 126
|
||||
pown -0.5 127
|
||||
pown -0.5 -126
|
||||
pown -0.5 -127
|
||||
|
||||
pown -0.5 -0xffffff
|
||||
pown -0.5 -0x1fffffe
|
||||
pown -0.5 -0x1fffffffffffff
|
||||
pown -0.5 -0x3ffffffffffffe
|
||||
pown -0.5 -0x7fffffffffffffff
|
||||
|
||||
pown -0.5 0xffffff
|
||||
pown -0.5 0x1fffffe
|
||||
pown -0.5 0x1fffffffffffff
|
||||
pown -0.5 0x3ffffffffffffe
|
||||
pown -0.5 0x7fffffffffffffff
|
||||
|
||||
pown -min -2
|
||||
pown -min -3
|
||||
pown -min 1
|
||||
pown -min 2
|
||||
pown -min 3
|
||||
|
||||
pown -min -0xffffff
|
||||
pown -min -0x1fffffe
|
||||
pown -min -0x1fffffffffffff
|
||||
pown -min -0x3ffffffffffffe
|
||||
pown -min -0x7fffffffffffffff
|
||||
|
||||
pown -min 0xffffff
|
||||
pown -min 0x1fffffe
|
||||
pown -min 0x1fffffffffffff
|
||||
pown -min 0x3ffffffffffffe
|
||||
pown -min 0x7fffffffffffffff
|
||||
|
||||
pown 0x0.ffffffp0 10
|
||||
pown 0x0.ffffffp0 100
|
||||
pown 0x0.ffffffp0 1000
|
||||
pown 0x0.ffffffp0 0x1000000
|
||||
pown 0x0.ffffffp0 0x40000000
|
||||
pown 0x0.ffffffp0 0x48d15980
|
||||
pown 0x0.ffffffp0 -10
|
||||
pown 0x0.ffffffp0 -100
|
||||
pown 0x0.ffffffp0 -1000
|
||||
pown 0x0.ffffffp0 -0x1000000
|
||||
pown 0x0.ffffffp0 -0x40000000
|
||||
pown 0x0.ffffffp0 -0x48d15980
|
||||
pown 0x1.000002p0 0x1000000
|
||||
pown 0x1.000002p0 0x2468acc0
|
||||
pown 0x1.000002p0 -0x2468acc0
|
||||
|
||||
pown 0x0.fffffffffffff8p0 0x48d159e26af37c00
|
||||
pown 0x0.fffffffffffff8p0 -0x48d159e26af37c00
|
||||
pown 0x1.0000000000001p0 0x2468acf13579be00
|
||||
pown 0x1.0000000000001p0 -0x2468acf13579be00
|
||||
|
||||
pown -0x0.ffffffp0 10
|
||||
pown -0x0.ffffffp0 100
|
||||
pown -0x0.ffffffp0 1000
|
||||
pown -0x0.ffffffp0 0x1000000
|
||||
pown -0x0.ffffffp0 0x40000000
|
||||
pown -0x0.ffffffp0 0x48d15980
|
||||
pown -0x0.ffffffp0 -10
|
||||
pown -0x0.ffffffp0 -100
|
||||
pown -0x0.ffffffp0 -1000
|
||||
pown -0x0.ffffffp0 -0x1000000
|
||||
pown -0x0.ffffffp0 -0x40000000
|
||||
pown -0x0.ffffffp0 -0x48d15980
|
||||
pown -0x1.000002p0 0x1000000
|
||||
pown -0x1.000002p0 0x2468acc0
|
||||
pown -0x1.000002p0 -0x2468acc0
|
||||
|
||||
pown -0x0.fffffffffffff8p0 0x48d159e26af37c00
|
||||
pown -0x0.fffffffffffff8p0 -0x48d159e26af37c00
|
||||
pown -0x1.0000000000001p0 0x2468acf13579be00
|
||||
pown -0x1.0000000000001p0 -0x2468acf13579be00
|
||||
|
||||
pown 0x1.000002p0 0x40000000
|
||||
pown -0x1.000002p0 0x40000000
|
||||
pown 0x1.00000ep0 0x40000000
|
||||
pown -0x1.00000ep0 0x40000000
|
||||
|
||||
pown 10.0 4932
|
||||
pown 10.0 4931
|
||||
pown 10.0 4930
|
||||
pown 10.0 4929
|
||||
pown 10.0 -4931
|
||||
pown 10.0 -4930
|
||||
pown 10.0 -4929
|
||||
pown 1e27 182
|
||||
pown 1e27 -182
|
||||
|
||||
pown 2.0 -100000
|
||||
|
||||
pown 0x1.00001p1 -126
|
||||
pown -0x1.00002p1 -126
|
||||
pown 0x1.00003p1 -126
|
||||
pown -0x1.00004p1 -126
|
||||
pown 0x1.00005p1 -126
|
||||
pown -0x1.00006p1 -126
|
||||
pown 0x1.00007p1 -126
|
||||
pown 0x1.00001p1 -969
|
||||
pown -0x1.00002p1 -969
|
||||
pown 0x1.00003p1 -969
|
||||
pown -0x1.00004p1 -969
|
||||
pown 0x1.00005p1 -969
|
||||
pown -0x1.00006p1 -969
|
||||
pown 0x1.00007p1 -969
|
||||
pown 0x1.00001p1 -1022
|
||||
pown -0x1.00002p1 -1022
|
||||
pown 0x1.00003p1 -1022
|
||||
pown -0x1.00004p1 -1022
|
||||
pown 0x1.00005p1 -1022
|
||||
pown -0x1.00006p1 -1022
|
||||
pown 0x1.00007p1 -1022
|
||||
pown 0x1.00001p1 -16382
|
||||
pown -0x1.00002p1 -16382
|
||||
pown 0x1.00003p1 -16382
|
||||
pown -0x1.00004p1 -16382
|
||||
pown 0x1.00005p1 -16382
|
||||
pown -0x1.00006p1 -16382
|
||||
pown 0x1.00007p1 -16382
|
||||
pown 0x1.00001p1 -16383
|
||||
pown -0x1.00002p1 -16383
|
||||
pown 0x1.00003p1 -16383
|
||||
pown -0x1.00004p1 -16383
|
||||
pown 0x1.00005p1 -16383
|
||||
pown -0x1.00006p1 -16383
|
||||
pown 0x1.00007p1 -16383
|
||||
pown 0x0.ffff1p-1 126
|
||||
pown -0x0.ffff2p-1 126
|
||||
pown 0x0.ffff3p-1 126
|
||||
pown -0x0.ffff4p-1 126
|
||||
pown 0x0.ffff5p-1 126
|
||||
pown -0x0.ffff6p-1 126
|
||||
pown 0x0.ffff7p-1 126
|
||||
pown 0x0.ffff1p-1 969
|
||||
pown -0x0.ffff2p-1 969
|
||||
pown 0x0.ffff3p-1 969
|
||||
pown -0x0.ffff4p-1 969
|
||||
pown 0x0.ffff5p-1 969
|
||||
pown -0x0.ffff6p-1 969
|
||||
pown 0x0.ffff7p-1 969
|
||||
pown 0x0.ffff1p-1 1022
|
||||
pown -0x0.ffff2p-1 1022
|
||||
pown 0x0.ffff3p-1 1022
|
||||
pown -0x0.ffff4p-1 1022
|
||||
pown 0x0.ffff5p-1 1022
|
||||
pown -0x0.ffff6p-1 1022
|
||||
pown 0x0.ffff7p-1 1022
|
||||
pown 0x0.ffff1p-1 16382
|
||||
pown -0x0.ffff2p-1 16382
|
||||
pown 0x0.ffff3p-1 16382
|
||||
pown -0x0.ffff4p-1 16382
|
||||
pown 0x0.ffff5p-1 16382
|
||||
pown -0x0.ffff6p-1 16382
|
||||
pown 0x0.ffff7p-1 16382
|
||||
pown 0x0.ffff1p-1 16383
|
||||
pown -0x0.ffff2p-1 16383
|
||||
pown 0x0.ffff3p-1 16383
|
||||
pown -0x0.ffff4p-1 16383
|
||||
pown 0x0.ffff5p-1 16383
|
||||
pown -0x0.ffff6p-1 16383
|
||||
pown 0x0.ffff7p-1 16383
|
||||
pown 0x2.000b3p0 -1022
|
||||
pown 0x2.000582p0 -1022
|
||||
|
||||
pown 10 -1
|
||||
pown 10 -2
|
||||
pown 10 -3
|
||||
pown 10 -4
|
||||
pown 10 -5
|
||||
pown 10 -6
|
||||
pown 10 -7
|
||||
|
||||
pown 0x0.ffffffffffffffffp0 1
|
||||
pown 0x0.ffffffffffffffffp0 2
|
||||
pown 0x0.ffffffffffffffffp0 3
|
||||
pown 0x0.ffffffffffffffffp0 4
|
||||
pown 0x0.ffffffffffffffffp0 5
|
||||
pown 0x0.ffffffffffffffffp0 6
|
||||
pown 0x0.ffffffffffffffffp0 7
|
||||
pown 0x0.ffffffffffffffffp0 -1
|
||||
pown 0x0.ffffffffffffffffp0 -2
|
||||
pown 0x0.ffffffffffffffffp0 -3
|
||||
pown 0x0.ffffffffffffffffp0 -4
|
||||
pown 0x0.ffffffffffffffffp0 -5
|
||||
pown 0x0.ffffffffffffffffp0 -6
|
||||
pown 0x0.ffffffffffffffffp0 -7
|
||||
|
||||
pown 0x1.0000000000000002p0 1
|
||||
pown 0x1.0000000000000002p0 2
|
||||
pown 0x1.0000000000000002p0 3
|
||||
pown 0x1.0000000000000002p0 4
|
||||
pown 0x1.0000000000000002p0 5
|
||||
pown 0x1.0000000000000002p0 6
|
||||
pown 0x1.0000000000000002p0 7
|
||||
pown 0x1.0000000000000002p0 -1
|
||||
pown 0x1.0000000000000002p0 -2
|
||||
pown 0x1.0000000000000002p0 -3
|
||||
pown 0x1.0000000000000002p0 -4
|
||||
pown 0x1.0000000000000002p0 -5
|
||||
pown 0x1.0000000000000002p0 -6
|
||||
pown 0x1.0000000000000002p0 -7
|
||||
|
||||
pown 0x1.7ac7cp+5 23
|
||||
pown -0x1.7ac7cp+5 23
|
||||
|
||||
powr 10 0
|
||||
powr 10 -0
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -186,6 +186,9 @@ __MATHCALL_VEC (cbrt,, (_Mdouble_ __x));
|
|||
#endif
|
||||
|
||||
#if __GLIBC_USE (IEC_60559_FUNCS_EXT_C23)
|
||||
/* Return X to the Y power. */
|
||||
__MATHCALL (pown,, (_Mdouble_ __x, long long int __y));
|
||||
|
||||
/* Return X to the Y power. */
|
||||
__MATHCALL (powr,, (_Mdouble_ __x, _Mdouble_ __y));
|
||||
|
||||
|
|
|
@ -428,6 +428,9 @@ typedef enum
|
|||
/* MPFR function with integer and floating-point arguments and one
|
||||
result. */
|
||||
mpfr_if_f,
|
||||
/* MPFR function with floating-point and integer arguments and one
|
||||
result. */
|
||||
mpfr_fi_f,
|
||||
/* MPFR function with a single argument and two floating-point
|
||||
results. */
|
||||
mpfr_f_11,
|
||||
|
@ -456,6 +459,7 @@ typedef struct
|
|||
mpfr_rnd_t);
|
||||
int (*mpfr_f_f1) (mpfr_t, int *, const mpfr_t, mpfr_rnd_t);
|
||||
int (*mpfr_if_f) (mpfr_t, long, const mpfr_t, mpfr_rnd_t);
|
||||
int (*mpfr_fi_f) (mpfr_t, const mpfr_t, long, mpfr_rnd_t);
|
||||
int (*mpfr_f_11) (mpfr_t, mpfr_t, const mpfr_t, mpfr_rnd_t);
|
||||
int (*mpc_c_f) (mpfr_t, const mpc_t, mpfr_rnd_t);
|
||||
int (*mpc_c_c) (mpc_t, const mpc_t, mpc_rnd_t);
|
||||
|
@ -517,6 +521,9 @@ typedef struct
|
|||
#define FUNC_mpfr_if_f(NAME, MPFR_FUNC, EXACT) \
|
||||
FUNC (NAME, ARGS2 (type_int, type_fp), RET1 (type_fp), EXACT, false, \
|
||||
false, CALC (mpfr_if_f, MPFR_FUNC))
|
||||
#define FUNC_mpfr_fL_f(NAME, MPFR_FUNC, EXACT) \
|
||||
FUNC (NAME, ARGS2 (type_fp, type_long_long), RET1 (type_fp), EXACT, \
|
||||
false, false, CALC (mpfr_fi_f, MPFR_FUNC))
|
||||
#define FUNC_mpc_c_f(NAME, MPFR_FUNC, EXACT) \
|
||||
FUNC (NAME, ARGS2 (type_fp, type_fp), RET1 (type_fp), EXACT, true, \
|
||||
false, CALC (mpc_c_f, MPFR_FUNC))
|
||||
|
@ -589,6 +596,7 @@ static test_function test_functions[] =
|
|||
FUNC_mpfr_f_f ("log2p1", mpfr_log2p1, false),
|
||||
FUNC_mpfr_ff_f ("mul", mpfr_mul, true),
|
||||
FUNC_mpfr_ff_f ("pow", mpfr_pow, false),
|
||||
FUNC_mpfr_fL_f ("pown", mpfr_pow_si, false),
|
||||
FUNC_mpfr_ff_f ("powr", mpfr_powr, false),
|
||||
/* mpfr_rec_sqrt differs from rsqrt on -0, but gen-auto-libm-tests
|
||||
does not handle results that are exact infinities anyway. */
|
||||
|
@ -1557,6 +1565,20 @@ calc_generic_results (generic_value *outputs, generic_value *inputs,
|
|||
adjust_real (outputs[0].value.f, inexact);
|
||||
break;
|
||||
|
||||
case mpfr_fi_f:
|
||||
assert (inputs[0].type == gtype_fp);
|
||||
assert (inputs[1].type == gtype_int);
|
||||
outputs[0].type = gtype_fp;
|
||||
mpfr_init (outputs[0].value.f);
|
||||
assert (mpz_fits_slong_p (inputs[1].value.i));
|
||||
l = mpz_get_si (inputs[1].value.i);
|
||||
inexact = calc->func.mpfr_fi_f (outputs[0].value.f,
|
||||
inputs[0].value.f, l, mode_mpfr);
|
||||
if (mode != rm_towardzero)
|
||||
assert (!inexact && mpfr_zero_p (outputs[0].value.f));
|
||||
adjust_real (outputs[0].value.f, inexact);
|
||||
break;
|
||||
|
||||
case mpfr_f_11:
|
||||
assert (inputs[0].type == gtype_fp);
|
||||
outputs[0].type = gtype_fp;
|
||||
|
|
|
@ -753,6 +753,7 @@ class Tests(object):
|
|||
self.add_tests('log2p1', 'r', ['r'])
|
||||
self.add_tests('log10p1', 'r', ['r'])
|
||||
self.add_tests('logp1', 'r', ['r'])
|
||||
self.add_tests('pown', 'r', ['r', 'long long int'])
|
||||
self.add_tests('powr', 'r', ['r', 'r'])
|
||||
self.add_tests('rsqrt', 'r', ['r'])
|
||||
self.add_tests('sinpi', 'r', ['r'])
|
||||
|
|
|
@ -222,6 +222,17 @@ struct test_fl_f_data
|
|||
int exceptions;
|
||||
} rd, rn, rz, ru;
|
||||
};
|
||||
struct test_fL_f_data
|
||||
{
|
||||
const char *arg_str;
|
||||
FLOAT arg1;
|
||||
long long int arg2;
|
||||
struct
|
||||
{
|
||||
FLOAT expected;
|
||||
int exceptions;
|
||||
} rd, rn, rz, ru;
|
||||
};
|
||||
struct test_if_f_data
|
||||
{
|
||||
const char *arg_str;
|
||||
|
@ -544,6 +555,8 @@ struct test_Ff_b1_data
|
|||
#define RUN_TEST_LOOP_fi_f RUN_TEST_LOOP_2_f
|
||||
#define RUN_TEST_fl_f RUN_TEST_2_f
|
||||
#define RUN_TEST_LOOP_fl_f RUN_TEST_LOOP_2_f
|
||||
#define RUN_TEST_fL_f RUN_TEST_2_f
|
||||
#define RUN_TEST_LOOP_fL_f RUN_TEST_LOOP_2_f
|
||||
#define RUN_TEST_if_f RUN_TEST_2_f
|
||||
#define RUN_TEST_LOOP_if_f RUN_TEST_LOOP_2_f
|
||||
#define RUN_TEST_3_f(ARG_STR, FUNC_NAME, ARG1, ARG2, ARG3, \
|
||||
|
|
|
@ -0,0 +1,150 @@
|
|||
/* Test pown.
|
||||
Copyright (C) 1997-2025 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#include "libm-test-driver.c"
|
||||
|
||||
static const struct test_fL_f_data pown_test_data[] =
|
||||
{
|
||||
TEST_ff_f (pown, qnan_value, 0, 1, ERRNO_UNCHANGED|NO_TEST_MATHVEC),
|
||||
TEST_ff_f (pown, -qnan_value, 0, 1, ERRNO_UNCHANGED|NO_TEST_MATHVEC),
|
||||
TEST_ff_f (pown, snan_value, 0, qnan_value, INVALID_EXCEPTION|NO_TEST_MATHVEC),
|
||||
TEST_ff_f (pown, -snan_value, 0, qnan_value, INVALID_EXCEPTION|NO_TEST_MATHVEC),
|
||||
|
||||
TEST_ff_f (pown, plus_infty, 1, plus_infty, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (pown, plus_infty, -1, 0, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (pown, minus_infty, 1, minus_infty, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (pown, minus_infty, 11, minus_infty, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (pown, minus_infty, 1001, minus_infty, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (pown, minus_infty, 2, plus_infty, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (pown, minus_infty, 12, plus_infty, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (pown, minus_infty, 1002, plus_infty, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (pown, minus_infty, -1, minus_zero, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (pown, minus_infty, -11, minus_zero, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (pown, minus_infty, -1001, minus_zero, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (pown, minus_infty, -2, 0, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (pown, minus_infty, -12, 0, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (pown, minus_infty, -1002, 0, ERRNO_UNCHANGED),
|
||||
|
||||
TEST_ff_f (pown, qnan_value, 1, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (pown, -qnan_value, 1, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (pown, snan_value, 1, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (pown, -snan_value, 1, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (pown, qnan_value, -1, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (pown, -qnan_value, -1, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (pown, snan_value, -1, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (pown, -snan_value, -1, qnan_value, INVALID_EXCEPTION),
|
||||
|
||||
TEST_ff_f (pown, qnan_value, 3, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (pown, -qnan_value, 3, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (pown, qnan_value, -3, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (pown, -qnan_value, -3, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (pown, snan_value, 3, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (pown, -snan_value, 3, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (pown, snan_value, -3, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (pown, -snan_value, -3, qnan_value, INVALID_EXCEPTION),
|
||||
|
||||
/* pown (x, 0) == 1. */
|
||||
TEST_ff_f (pown, plus_infty, 0, 1, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (pown, minus_infty, 0, 1, ERRNO_UNCHANGED),
|
||||
|
||||
TEST_ff_f (pown, 0, -1, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
|
||||
TEST_ff_f (pown, 0, -11, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
|
||||
TEST_ff_f (pown, 0, -0xfffffe, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
|
||||
TEST_ff_f (pown, 0, -0xffffff, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
|
||||
TEST_ff_f (pown, 0, -0x1ffffffffffffeLL, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
|
||||
TEST_ff_f (pown, 0, -0x1fffffffffffffLL, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
|
||||
TEST_ff_f (pown, 0, -0x7ffffffffffffffeLL, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
|
||||
TEST_ff_f (pown, 0, -0x7fffffffffffffffLL, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
|
||||
TEST_ff_f (pown, minus_zero, -1, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
|
||||
TEST_ff_f (pown, minus_zero, -11L, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
|
||||
TEST_ff_f (pown, minus_zero, -0xfffffe, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
|
||||
TEST_ff_f (pown, minus_zero, -0xffffff, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
|
||||
TEST_ff_f (pown, minus_zero, -0x1fffffe, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
|
||||
TEST_ff_f (pown, minus_zero, -0x1ffffffffffffeLL, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
|
||||
TEST_ff_f (pown, minus_zero, -0x1fffffffffffffLL, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
|
||||
TEST_ff_f (pown, minus_zero, -0x3ffffffffffffeLL, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
|
||||
TEST_ff_f (pown, minus_zero, -0x7ffffffffffffffeLL, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
|
||||
TEST_ff_f (pown, minus_zero, -0x7fffffffffffffffLL, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
|
||||
|
||||
TEST_ff_f (pown, 0, -2, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
|
||||
TEST_ff_f (pown, 0, -0x1000000, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
|
||||
TEST_ff_f (pown, minus_zero, -2, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
|
||||
TEST_ff_f (pown, minus_zero, -0x1000000, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
|
||||
|
||||
/* pown (+inf, y) == +inf for y > 0. */
|
||||
TEST_ff_f (pown, plus_infty, 2, plus_infty, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (pown, plus_infty, 0xffffff, plus_infty, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (pown, plus_infty, 0x1fffffffffffffLL, plus_infty, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (pown, plus_infty, 0x7fffffffffffffffLL, plus_infty, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (pown, plus_infty, 0x1000000, plus_infty, ERRNO_UNCHANGED),
|
||||
|
||||
/* pown (+inf, y) == +0 for y < 0. */
|
||||
TEST_ff_f (pown, plus_infty, -1, 0.0, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (pown, plus_infty, -0xffffff, 0.0, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (pown, plus_infty, -0x1fffffffffffffLL, 0.0, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (pown, plus_infty, -0x7fffffffffffffffLL, 0.0, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (pown, plus_infty, -0x1000000, 0.0, ERRNO_UNCHANGED),
|
||||
|
||||
/* pown (-inf, y) == -inf for y an odd integer > 0. */
|
||||
TEST_ff_f (pown, minus_infty, 27, minus_infty, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (pown, minus_infty, 0xffffff, minus_infty, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (pown, minus_infty, 0x1fffffe, plus_infty, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (pown, minus_infty, 0x1fffffffffffffLL, minus_infty, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (pown, minus_infty, 0x3ffffffffffffeL, plus_infty, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (pown, minus_infty, 0x7ffffffffffffffeLL, plus_infty, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (pown, minus_infty, 0x7fffffffffffffffLL, minus_infty, ERRNO_UNCHANGED),
|
||||
|
||||
/* pown (-inf, y) == +inf for y > 0 and not an odd integer. */
|
||||
TEST_ff_f (pown, minus_infty, 28, plus_infty, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (pown, minus_infty, 0x1000000, plus_infty, ERRNO_UNCHANGED),
|
||||
|
||||
/* pown (-inf, y) == -0 for y an odd integer < 0. */
|
||||
TEST_ff_f (pown, minus_infty, -3, minus_zero, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (pown, minus_infty, -0xfffffe, plus_zero, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (pown, minus_infty, -0xffffff, minus_zero, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (pown, minus_infty, -0x1fffffe, plus_zero, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (pown, minus_infty, -0x1ffffffffffffeLL, plus_zero, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (pown, minus_infty, -0x1fffffffffffffLL, minus_zero, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (pown, minus_infty, -0x3ffffffffffffeLL, plus_zero, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (pown, minus_infty, -0x7ffffffffffffffeLL, plus_zero, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (pown, minus_infty, -0x7fffffffffffffffLL, minus_zero, ERRNO_UNCHANGED),
|
||||
|
||||
/* pown (-inf, y) == +0 for y < 0 and not an odd integer. */
|
||||
TEST_ff_f (pown, minus_infty, -2, 0.0, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (pown, minus_infty, -0x1000000, 0.0, ERRNO_UNCHANGED),
|
||||
|
||||
AUTO_TESTS_ff_f (pown),
|
||||
};
|
||||
|
||||
static void
|
||||
pown_test (void)
|
||||
{
|
||||
ALL_RM_TEST (pown, 0, pown_test_data, RUN_TEST_LOOP_fL_f, END);
|
||||
}
|
||||
|
||||
static void
|
||||
do_test (void)
|
||||
{
|
||||
pown_test ();
|
||||
}
|
||||
|
||||
/*
|
||||
* Local Variables:
|
||||
* mode:c
|
||||
* End:
|
||||
*/
|
|
@ -0,0 +1,91 @@
|
|||
/* Return X^Y for integer Y.
|
||||
Copyright (C) 2025 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <errno.h>
|
||||
#include <fenv_private.h>
|
||||
#include <limits.h>
|
||||
#include <math.h>
|
||||
#include <math-barriers.h>
|
||||
#include <math-narrow-eval.h>
|
||||
#include <math_private.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
FLOAT
|
||||
M_DECL_FUNC (__pown) (FLOAT x, long long int y)
|
||||
{
|
||||
FLOAT ret;
|
||||
#if M_MANT_DIG >= LLONG_WIDTH - 1
|
||||
ret = M_SUF (__ieee754_pow) (x, y);
|
||||
#else
|
||||
if ((y <= 1LL << M_MANT_DIG
|
||||
&& y >= -(1LL << M_MANT_DIG))
|
||||
|| y == LLONG_MIN)
|
||||
ret = M_SUF (__ieee754_pow) (x, y);
|
||||
else
|
||||
{
|
||||
{
|
||||
/* To avoid problems with overflow and underflow from
|
||||
intermediate computations occurring in the wrong directed
|
||||
rounding mode (when X is negative and Y is odd), do these
|
||||
computations in round-to-nearest mode and correct
|
||||
overflowing and underflowing results afterwards. */
|
||||
M_SET_RESTORE_ROUND (FE_TONEAREST);
|
||||
ret = M_LIT (1.0);
|
||||
while (y != 0)
|
||||
{
|
||||
long long int absy = llabs (y);
|
||||
int bits = LLONG_WIDTH - __builtin_clzll (absy);
|
||||
if (bits <= M_MANT_DIG)
|
||||
{
|
||||
ret *= M_SUF (__ieee754_pow) (x, y);
|
||||
y = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
long long int absy_high
|
||||
= absy & (((1ULL << M_MANT_DIG) - 1) << (bits - M_MANT_DIG));
|
||||
long long int absy_low = absy - absy_high;
|
||||
long long int y_high = y < 0 ? -absy_high : absy_high;
|
||||
ret *= M_SUF (__ieee754_pow) (x, y_high);
|
||||
y = y < 0 ? -absy_low : absy_low;
|
||||
}
|
||||
}
|
||||
ret = math_narrow_eval (ret);
|
||||
math_force_eval (ret);
|
||||
}
|
||||
if (isfinite (x) && x != M_LIT (0.0))
|
||||
{
|
||||
if (isinf (ret))
|
||||
ret = math_narrow_eval (M_COPYSIGN (M_MAX, ret) * M_MAX);
|
||||
else if (ret == M_LIT (0.0))
|
||||
ret = math_narrow_eval (M_COPYSIGN (M_MIN, ret) * M_MIN);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
if (!isfinite (ret))
|
||||
{
|
||||
if (isfinite (x))
|
||||
__set_errno (ERANGE);
|
||||
}
|
||||
else if (ret == 0
|
||||
&& isfinite (x)
|
||||
&& x != 0)
|
||||
__set_errno (ERANGE);
|
||||
return ret;
|
||||
}
|
||||
declare_mgen_alias (__pown, pown);
|
|
@ -48,7 +48,7 @@ volatile int count_cdouble;
|
|||
volatile int count_cfloat;
|
||||
volatile int count_cldouble;
|
||||
|
||||
#define NCALLS 188
|
||||
#define NCALLS 190
|
||||
#define NCALLS_INT 4
|
||||
#define NCCALLS 47
|
||||
|
||||
|
@ -227,7 +227,7 @@ F(compile_test) (void)
|
|||
int i = 2;
|
||||
int saved_count;
|
||||
long int j;
|
||||
long long int k;
|
||||
long long int k = 2;
|
||||
intmax_t m;
|
||||
uintmax_t um;
|
||||
|
||||
|
@ -268,6 +268,7 @@ F(compile_test) (void)
|
|||
a = log10p1 (log10p1 (x));
|
||||
a = logp1 (logp1 (x));
|
||||
a = pow (pow (x, a), pow (c, b));
|
||||
b = pown (pown (x, k), k);
|
||||
a = powr (powr (x, a), powr (c, b));
|
||||
b = sqrt (sqrt (a));
|
||||
a = rsqrt (rsqrt (b));
|
||||
|
@ -395,6 +396,7 @@ F(compile_test) (void)
|
|||
a = log10p1 (y);
|
||||
a = logp1 (y);
|
||||
a = pow (y, y);
|
||||
a = pown (y, 12345);
|
||||
a = powr (y, y);
|
||||
a = sqrt (y);
|
||||
a = rsqrt (y);
|
||||
|
@ -773,6 +775,14 @@ TYPE
|
|||
return x + y;
|
||||
}
|
||||
|
||||
TYPE
|
||||
(F(pown)) (TYPE x, long long int y)
|
||||
{
|
||||
++count;
|
||||
P ();
|
||||
return x + y;
|
||||
}
|
||||
|
||||
TYPE
|
||||
(F(powr)) (TYPE x, TYPE y)
|
||||
{
|
||||
|
|
|
@ -924,6 +924,9 @@
|
|||
#define cbrt(Val) __TGMATH_UNARY_REAL_ONLY (Val, cbrt)
|
||||
|
||||
#if __GLIBC_USE (IEC_60559_FUNCS_EXT_C23)
|
||||
/* Return X to the Y power. */
|
||||
# define pown(Val1, Val2) __TGMATH_BINARY_FIRST_REAL_ONLY (Val1, Val2, pown)
|
||||
|
||||
/* Return X to the Y power. */
|
||||
# define powr(Val1, Val2) __TGMATH_BINARY_REAL_ONLY (Val1, Val2, powr)
|
||||
|
||||
|
|
|
@ -28,6 +28,8 @@
|
|||
#define M_STRTO_NAN __strtod_nan
|
||||
#define M_USE_BUILTIN(c) USE_ ##c ##_BUILTIN
|
||||
|
||||
#define M_SET_RESTORE_ROUND(RM) SET_RESTORE_ROUND (RM)
|
||||
|
||||
#include <libm-alias-double.h>
|
||||
#include <math-nan-payload-double.h>
|
||||
|
||||
|
|
|
@ -30,6 +30,8 @@
|
|||
/* GNU extension float constant macros. */
|
||||
#define M_MLIT(c) c ## f
|
||||
|
||||
#define M_SET_RESTORE_ROUND(RM) SET_RESTORE_ROUNDF (RM)
|
||||
|
||||
#include <libm-alias-float.h>
|
||||
#include <math-nan-payload-float.h>
|
||||
|
||||
|
|
|
@ -19,6 +19,8 @@
|
|||
#ifndef _MATH_TYPE_MACROS_FLOAT128
|
||||
#define _MATH_TYPE_MACROS_FLOAT128
|
||||
|
||||
#include <fenv_private.h>
|
||||
|
||||
#define M_LIT(c) __f128 (c)
|
||||
#define M_PFX FLT128
|
||||
#define M_SUF(c) c ## f128
|
||||
|
@ -30,6 +32,13 @@
|
|||
|
||||
#define M_MLIT(c) c ## f128
|
||||
|
||||
/* fenv_private.h may not define SET_RESTORE_ROUNDF128. */
|
||||
#ifdef SET_RESTORE_ROUNDF128
|
||||
# define M_SET_RESTORE_ROUND(RM) SET_RESTORE_ROUNDF128 (RM)
|
||||
#else
|
||||
# define M_SET_RESTORE_ROUND(RM) SET_RESTORE_ROUNDL (RM)
|
||||
#endif
|
||||
|
||||
#include <libm-alias-float128.h>
|
||||
#include <math-nan-payload-float128.h>
|
||||
|
||||
|
|
|
@ -28,6 +28,8 @@
|
|||
#define M_STRTO_NAN __strtold_nan
|
||||
#define M_USE_BUILTIN(c) USE_ ##c ##L_BUILTIN
|
||||
|
||||
#define M_SET_RESTORE_ROUND(RM) SET_RESTORE_ROUNDL (RM)
|
||||
|
||||
#include <libm-alias-ldouble.h>
|
||||
#include <math-nan-payload-ldouble.h>
|
||||
|
||||
|
|
|
@ -33,6 +33,7 @@
|
|||
M_STRTO_NAN - Resolves to the internal libc function which
|
||||
converts a string into the appropriate FLOAT nan
|
||||
value.
|
||||
M_SET_RESTORE_ROUND - Resolves to a SET_RESTORE_ROUND call for M_TYPE.
|
||||
|
||||
declare_mgen_alias(from,to)
|
||||
This exposes the appropriate symbol(s) for a
|
||||
|
|
|
@ -154,6 +154,7 @@ libm {
|
|||
__tanpiieee128;
|
||||
}
|
||||
GLIBC_2.42 {
|
||||
__pownieee128;
|
||||
__powrieee128;
|
||||
__rsqrtieee128;
|
||||
}
|
||||
|
|
|
@ -166,6 +166,7 @@ libnldbl-calls = \
|
|||
obstack_vprintf \
|
||||
obstack_vprintf_chk \
|
||||
pow \
|
||||
pown \
|
||||
powr \
|
||||
printf \
|
||||
printf_chk \
|
||||
|
@ -376,6 +377,7 @@ 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-pown.c = -fno-builtin-pownl
|
||||
CFLAGS-nldbl-powr.c = -fno-builtin-powrl
|
||||
CFLAGS-nldbl-remainder.c = -fno-builtin-remainderl -fno-builtin-dreml
|
||||
CFLAGS-nldbl-remquo.c = -fno-builtin-remquol
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
#include "nldbl-compat.h"
|
||||
|
||||
double
|
||||
attribute_hidden
|
||||
pownl (double x, long long int y)
|
||||
{
|
||||
return pown (x, y);
|
||||
}
|
|
@ -16,11 +16,11 @@
|
|||
License along with the GNU C Library; if not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef LOONGARCH_MATH_PRIVATE_H
|
||||
#define LOONGARCH_MATH_PRIVATE_H 1
|
||||
#ifndef LOONGARCH_FENV_PRIVATE_H
|
||||
#define LOONGARCH_FENV_PRIVATE_H 1
|
||||
|
||||
/* Inline functions to speed up the math library implementation. The
|
||||
default versions of these routines are in generic/math_private.h
|
||||
default versions of these routines are in generic/fenv_private.h
|
||||
and call fesetround, feholdexcept, etc. These routines use inlined
|
||||
code instead. */
|
||||
|
||||
|
@ -243,6 +243,6 @@ libc_feholdsetround_loongarch_ctx (struct rm_ctx *ctx, int round)
|
|||
|
||||
#endif
|
||||
|
||||
#include_next <math_private.h>
|
||||
#include_next <fenv_private.h>
|
||||
|
||||
#endif
|
|
@ -1277,6 +1277,14 @@ GLIBC_2.41 tanpif32x F
|
|||
GLIBC_2.41 tanpif64 F
|
||||
GLIBC_2.41 tanpif64x F
|
||||
GLIBC_2.41 tanpil F
|
||||
GLIBC_2.42 pown F
|
||||
GLIBC_2.42 pownf F
|
||||
GLIBC_2.42 pownf128 F
|
||||
GLIBC_2.42 pownf32 F
|
||||
GLIBC_2.42 pownf32x F
|
||||
GLIBC_2.42 pownf64 F
|
||||
GLIBC_2.42 pownf64x F
|
||||
GLIBC_2.42 pownl F
|
||||
GLIBC_2.42 powr F
|
||||
GLIBC_2.42 powrf F
|
||||
GLIBC_2.42 powrf128 F
|
||||
|
|
|
@ -1134,6 +1134,14 @@ GLIBC_2.41 tanpif32x F
|
|||
GLIBC_2.41 tanpif64 F
|
||||
GLIBC_2.41 tanpif64x F
|
||||
GLIBC_2.41 tanpil F
|
||||
GLIBC_2.42 pown F
|
||||
GLIBC_2.42 pownf F
|
||||
GLIBC_2.42 pownf128 F
|
||||
GLIBC_2.42 pownf32 F
|
||||
GLIBC_2.42 pownf32x F
|
||||
GLIBC_2.42 pownf64 F
|
||||
GLIBC_2.42 pownf64x F
|
||||
GLIBC_2.42 pownl F
|
||||
GLIBC_2.42 powr F
|
||||
GLIBC_2.42 powrf F
|
||||
GLIBC_2.42 powrf128 F
|
||||
|
|
|
@ -1245,6 +1245,14 @@ GLIBC_2.41 tanpif32x F
|
|||
GLIBC_2.41 tanpif64 F
|
||||
GLIBC_2.41 tanpif64x F
|
||||
GLIBC_2.41 tanpil F
|
||||
GLIBC_2.42 pown F
|
||||
GLIBC_2.42 pownf F
|
||||
GLIBC_2.42 pownf128 F
|
||||
GLIBC_2.42 pownf32 F
|
||||
GLIBC_2.42 pownf32x F
|
||||
GLIBC_2.42 pownf64 F
|
||||
GLIBC_2.42 pownf64x F
|
||||
GLIBC_2.42 pownl F
|
||||
GLIBC_2.42 powr F
|
||||
GLIBC_2.42 powrf F
|
||||
GLIBC_2.42 powrf128 F
|
||||
|
|
|
@ -1404,6 +1404,14 @@ GLIBC_2.41 tanpif32x F
|
|||
GLIBC_2.41 tanpif64 F
|
||||
GLIBC_2.41 tanpif64x F
|
||||
GLIBC_2.41 tanpil F
|
||||
GLIBC_2.42 pown F
|
||||
GLIBC_2.42 pownf F
|
||||
GLIBC_2.42 pownf128 F
|
||||
GLIBC_2.42 pownf32 F
|
||||
GLIBC_2.42 pownf32x F
|
||||
GLIBC_2.42 pownf64 F
|
||||
GLIBC_2.42 pownf64x F
|
||||
GLIBC_2.42 pownl F
|
||||
GLIBC_2.42 powr F
|
||||
GLIBC_2.42 powrf F
|
||||
GLIBC_2.42 powrf128 F
|
||||
|
|
|
@ -829,6 +829,12 @@ GLIBC_2.41 tanpif32 F
|
|||
GLIBC_2.41 tanpif32x F
|
||||
GLIBC_2.41 tanpif64 F
|
||||
GLIBC_2.41 tanpil F
|
||||
GLIBC_2.42 pown F
|
||||
GLIBC_2.42 pownf F
|
||||
GLIBC_2.42 pownf32 F
|
||||
GLIBC_2.42 pownf32x F
|
||||
GLIBC_2.42 pownf64 F
|
||||
GLIBC_2.42 pownl F
|
||||
GLIBC_2.42 powr F
|
||||
GLIBC_2.42 powrf F
|
||||
GLIBC_2.42 powrf32 F
|
||||
|
|
|
@ -920,6 +920,12 @@ GLIBC_2.41 tanpif32 F
|
|||
GLIBC_2.41 tanpif32x F
|
||||
GLIBC_2.41 tanpif64 F
|
||||
GLIBC_2.41 tanpil F
|
||||
GLIBC_2.42 pown F
|
||||
GLIBC_2.42 pownf F
|
||||
GLIBC_2.42 pownf32 F
|
||||
GLIBC_2.42 pownf32x F
|
||||
GLIBC_2.42 pownf64 F
|
||||
GLIBC_2.42 pownl F
|
||||
GLIBC_2.42 powr F
|
||||
GLIBC_2.42 powrf F
|
||||
GLIBC_2.42 powrf32 F
|
||||
|
|
|
@ -920,6 +920,12 @@ GLIBC_2.41 tanpif32 F
|
|||
GLIBC_2.41 tanpif32x F
|
||||
GLIBC_2.41 tanpif64 F
|
||||
GLIBC_2.41 tanpil F
|
||||
GLIBC_2.42 pown F
|
||||
GLIBC_2.42 pownf F
|
||||
GLIBC_2.42 pownf32 F
|
||||
GLIBC_2.42 pownf32x F
|
||||
GLIBC_2.42 pownf64 F
|
||||
GLIBC_2.42 pownl F
|
||||
GLIBC_2.42 powr F
|
||||
GLIBC_2.42 powrf F
|
||||
GLIBC_2.42 powrf32 F
|
||||
|
|
|
@ -895,6 +895,12 @@ GLIBC_2.41 tanpif32 F
|
|||
GLIBC_2.41 tanpif32x F
|
||||
GLIBC_2.41 tanpif64 F
|
||||
GLIBC_2.41 tanpil F
|
||||
GLIBC_2.42 pown F
|
||||
GLIBC_2.42 pownf F
|
||||
GLIBC_2.42 pownf32 F
|
||||
GLIBC_2.42 pownf32x F
|
||||
GLIBC_2.42 pownf64 F
|
||||
GLIBC_2.42 pownl F
|
||||
GLIBC_2.42 powr F
|
||||
GLIBC_2.42 powrf F
|
||||
GLIBC_2.42 powrf32 F
|
||||
|
|
|
@ -920,6 +920,12 @@ GLIBC_2.41 tanpif32 F
|
|||
GLIBC_2.41 tanpif32x F
|
||||
GLIBC_2.41 tanpif64 F
|
||||
GLIBC_2.41 tanpil F
|
||||
GLIBC_2.42 pown F
|
||||
GLIBC_2.42 pownf F
|
||||
GLIBC_2.42 pownf32 F
|
||||
GLIBC_2.42 pownf32x F
|
||||
GLIBC_2.42 pownf64 F
|
||||
GLIBC_2.42 pownl F
|
||||
GLIBC_2.42 powr F
|
||||
GLIBC_2.42 powrf F
|
||||
GLIBC_2.42 powrf32 F
|
||||
|
|
|
@ -1284,6 +1284,14 @@ GLIBC_2.41 tanpif32x F
|
|||
GLIBC_2.41 tanpif64 F
|
||||
GLIBC_2.41 tanpif64x F
|
||||
GLIBC_2.41 tanpil F
|
||||
GLIBC_2.42 pown F
|
||||
GLIBC_2.42 pownf F
|
||||
GLIBC_2.42 pownf128 F
|
||||
GLIBC_2.42 pownf32 F
|
||||
GLIBC_2.42 pownf32x F
|
||||
GLIBC_2.42 pownf64 F
|
||||
GLIBC_2.42 pownf64x F
|
||||
GLIBC_2.42 pownl F
|
||||
GLIBC_2.42 powr F
|
||||
GLIBC_2.42 powrf F
|
||||
GLIBC_2.42 powrf128 F
|
||||
|
|
|
@ -1124,6 +1124,14 @@ GLIBC_2.41 tanpif32x F
|
|||
GLIBC_2.41 tanpif64 F
|
||||
GLIBC_2.41 tanpif64x F
|
||||
GLIBC_2.41 tanpil F
|
||||
GLIBC_2.42 pown F
|
||||
GLIBC_2.42 pownf F
|
||||
GLIBC_2.42 pownf128 F
|
||||
GLIBC_2.42 pownf32 F
|
||||
GLIBC_2.42 pownf32x F
|
||||
GLIBC_2.42 pownf64 F
|
||||
GLIBC_2.42 pownf64x F
|
||||
GLIBC_2.42 pownl F
|
||||
GLIBC_2.42 powr F
|
||||
GLIBC_2.42 powrf F
|
||||
GLIBC_2.42 powrf128 F
|
||||
|
|
|
@ -920,6 +920,12 @@ GLIBC_2.41 tanpif32 F
|
|||
GLIBC_2.41 tanpif32x F
|
||||
GLIBC_2.41 tanpif64 F
|
||||
GLIBC_2.41 tanpil F
|
||||
GLIBC_2.42 pown F
|
||||
GLIBC_2.42 pownf F
|
||||
GLIBC_2.42 pownf32 F
|
||||
GLIBC_2.42 pownf32x F
|
||||
GLIBC_2.42 pownf64 F
|
||||
GLIBC_2.42 pownl F
|
||||
GLIBC_2.42 powr F
|
||||
GLIBC_2.42 powrf F
|
||||
GLIBC_2.42 powrf32 F
|
||||
|
|
|
@ -956,6 +956,12 @@ GLIBC_2.41 tanpif32 F
|
|||
GLIBC_2.41 tanpif32x F
|
||||
GLIBC_2.41 tanpif64 F
|
||||
GLIBC_2.41 tanpil F
|
||||
GLIBC_2.42 pown F
|
||||
GLIBC_2.42 pownf F
|
||||
GLIBC_2.42 pownf32 F
|
||||
GLIBC_2.42 pownf32x F
|
||||
GLIBC_2.42 pownf64 F
|
||||
GLIBC_2.42 pownl F
|
||||
GLIBC_2.42 powr F
|
||||
GLIBC_2.42 powrf F
|
||||
GLIBC_2.42 powrf32 F
|
||||
|
|
|
@ -920,6 +920,12 @@ GLIBC_2.41 tanpif32 F
|
|||
GLIBC_2.41 tanpif32x F
|
||||
GLIBC_2.41 tanpif64 F
|
||||
GLIBC_2.41 tanpil F
|
||||
GLIBC_2.42 pown F
|
||||
GLIBC_2.42 pownf F
|
||||
GLIBC_2.42 pownf32 F
|
||||
GLIBC_2.42 pownf32x F
|
||||
GLIBC_2.42 pownf64 F
|
||||
GLIBC_2.42 pownl F
|
||||
GLIBC_2.42 powr F
|
||||
GLIBC_2.42 powrf F
|
||||
GLIBC_2.42 powrf32 F
|
||||
|
|
|
@ -920,6 +920,12 @@ GLIBC_2.41 tanpif32 F
|
|||
GLIBC_2.41 tanpif32x F
|
||||
GLIBC_2.41 tanpif64 F
|
||||
GLIBC_2.41 tanpil F
|
||||
GLIBC_2.42 pown F
|
||||
GLIBC_2.42 pownf F
|
||||
GLIBC_2.42 pownf32 F
|
||||
GLIBC_2.42 pownf32x F
|
||||
GLIBC_2.42 pownf64 F
|
||||
GLIBC_2.42 pownl F
|
||||
GLIBC_2.42 powr F
|
||||
GLIBC_2.42 powrf F
|
||||
GLIBC_2.42 powrf32 F
|
||||
|
|
|
@ -920,6 +920,12 @@ GLIBC_2.41 tanpif32 F
|
|||
GLIBC_2.41 tanpif32x F
|
||||
GLIBC_2.41 tanpif64 F
|
||||
GLIBC_2.41 tanpil F
|
||||
GLIBC_2.42 pown F
|
||||
GLIBC_2.42 pownf F
|
||||
GLIBC_2.42 pownf32 F
|
||||
GLIBC_2.42 pownf32x F
|
||||
GLIBC_2.42 pownf64 F
|
||||
GLIBC_2.42 pownl F
|
||||
GLIBC_2.42 powr F
|
||||
GLIBC_2.42 powrf F
|
||||
GLIBC_2.42 powrf32 F
|
||||
|
|
|
@ -1245,6 +1245,14 @@ GLIBC_2.41 tanpif32x F
|
|||
GLIBC_2.41 tanpif64 F
|
||||
GLIBC_2.41 tanpif64x F
|
||||
GLIBC_2.41 tanpil F
|
||||
GLIBC_2.42 pown F
|
||||
GLIBC_2.42 pownf F
|
||||
GLIBC_2.42 pownf128 F
|
||||
GLIBC_2.42 pownf32 F
|
||||
GLIBC_2.42 pownf32x F
|
||||
GLIBC_2.42 pownf64 F
|
||||
GLIBC_2.42 pownf64x F
|
||||
GLIBC_2.42 pownl F
|
||||
GLIBC_2.42 powr F
|
||||
GLIBC_2.42 powrf F
|
||||
GLIBC_2.42 powrf128 F
|
||||
|
|
|
@ -829,6 +829,12 @@ GLIBC_2.41 tanpif32 F
|
|||
GLIBC_2.41 tanpif32x F
|
||||
GLIBC_2.41 tanpif64 F
|
||||
GLIBC_2.41 tanpil F
|
||||
GLIBC_2.42 pown F
|
||||
GLIBC_2.42 pownf F
|
||||
GLIBC_2.42 pownf32 F
|
||||
GLIBC_2.42 pownf32x F
|
||||
GLIBC_2.42 pownf64 F
|
||||
GLIBC_2.42 pownl F
|
||||
GLIBC_2.42 powr F
|
||||
GLIBC_2.42 powrf F
|
||||
GLIBC_2.42 powrf32 F
|
||||
|
|
|
@ -1067,6 +1067,12 @@ GLIBC_2.41 tanpif32 F
|
|||
GLIBC_2.41 tanpif32x F
|
||||
GLIBC_2.41 tanpif64 F
|
||||
GLIBC_2.41 tanpil F
|
||||
GLIBC_2.42 pown F
|
||||
GLIBC_2.42 pownf F
|
||||
GLIBC_2.42 pownf32 F
|
||||
GLIBC_2.42 pownf32x F
|
||||
GLIBC_2.42 pownf64 F
|
||||
GLIBC_2.42 pownl F
|
||||
GLIBC_2.42 powr F
|
||||
GLIBC_2.42 powrf F
|
||||
GLIBC_2.42 powrf32 F
|
||||
|
|
|
@ -1066,6 +1066,12 @@ GLIBC_2.41 tanpif32 F
|
|||
GLIBC_2.41 tanpif32x F
|
||||
GLIBC_2.41 tanpif64 F
|
||||
GLIBC_2.41 tanpil F
|
||||
GLIBC_2.42 pown F
|
||||
GLIBC_2.42 pownf F
|
||||
GLIBC_2.42 pownf32 F
|
||||
GLIBC_2.42 pownf32x F
|
||||
GLIBC_2.42 pownf64 F
|
||||
GLIBC_2.42 pownl F
|
||||
GLIBC_2.42 powr F
|
||||
GLIBC_2.42 powrf F
|
||||
GLIBC_2.42 powrf32 F
|
||||
|
|
|
@ -1060,6 +1060,12 @@ GLIBC_2.41 tanpif32 F
|
|||
GLIBC_2.41 tanpif32x F
|
||||
GLIBC_2.41 tanpif64 F
|
||||
GLIBC_2.41 tanpil F
|
||||
GLIBC_2.42 pown F
|
||||
GLIBC_2.42 pownf F
|
||||
GLIBC_2.42 pownf32 F
|
||||
GLIBC_2.42 pownf32x F
|
||||
GLIBC_2.42 pownf64 F
|
||||
GLIBC_2.42 pownl F
|
||||
GLIBC_2.42 powr F
|
||||
GLIBC_2.42 powrf F
|
||||
GLIBC_2.42 powrf32 F
|
||||
|
|
|
@ -1429,8 +1429,17 @@ GLIBC_2.41 tanpif32x F
|
|||
GLIBC_2.41 tanpif64 F
|
||||
GLIBC_2.41 tanpif64x F
|
||||
GLIBC_2.41 tanpil F
|
||||
GLIBC_2.42 __pownieee128 F
|
||||
GLIBC_2.42 __powrieee128 F
|
||||
GLIBC_2.42 __rsqrtieee128 F
|
||||
GLIBC_2.42 pown F
|
||||
GLIBC_2.42 pownf F
|
||||
GLIBC_2.42 pownf128 F
|
||||
GLIBC_2.42 pownf32 F
|
||||
GLIBC_2.42 pownf32x F
|
||||
GLIBC_2.42 pownf64 F
|
||||
GLIBC_2.42 pownf64x F
|
||||
GLIBC_2.42 pownl F
|
||||
GLIBC_2.42 powr F
|
||||
GLIBC_2.42 powrf F
|
||||
GLIBC_2.42 powrf128 F
|
||||
|
|
|
@ -1124,6 +1124,14 @@ GLIBC_2.41 tanpif32x F
|
|||
GLIBC_2.41 tanpif64 F
|
||||
GLIBC_2.41 tanpif64x F
|
||||
GLIBC_2.41 tanpil F
|
||||
GLIBC_2.42 pown F
|
||||
GLIBC_2.42 pownf F
|
||||
GLIBC_2.42 pownf128 F
|
||||
GLIBC_2.42 pownf32 F
|
||||
GLIBC_2.42 pownf32x F
|
||||
GLIBC_2.42 pownf64 F
|
||||
GLIBC_2.42 pownf64x F
|
||||
GLIBC_2.42 pownl F
|
||||
GLIBC_2.42 powr F
|
||||
GLIBC_2.42 powrf F
|
||||
GLIBC_2.42 powrf128 F
|
||||
|
|
|
@ -1221,6 +1221,14 @@ GLIBC_2.41 tanpif32x F
|
|||
GLIBC_2.41 tanpif64 F
|
||||
GLIBC_2.41 tanpif64x F
|
||||
GLIBC_2.41 tanpil F
|
||||
GLIBC_2.42 pown F
|
||||
GLIBC_2.42 pownf F
|
||||
GLIBC_2.42 pownf128 F
|
||||
GLIBC_2.42 pownf32 F
|
||||
GLIBC_2.42 pownf32x F
|
||||
GLIBC_2.42 pownf64 F
|
||||
GLIBC_2.42 pownf64x F
|
||||
GLIBC_2.42 pownl F
|
||||
GLIBC_2.42 powr F
|
||||
GLIBC_2.42 powrf F
|
||||
GLIBC_2.42 powrf128 F
|
||||
|
|
|
@ -1348,6 +1348,14 @@ GLIBC_2.41 tanpif32x F
|
|||
GLIBC_2.41 tanpif64 F
|
||||
GLIBC_2.41 tanpif64x F
|
||||
GLIBC_2.41 tanpil F
|
||||
GLIBC_2.42 pown F
|
||||
GLIBC_2.42 pownf F
|
||||
GLIBC_2.42 pownf128 F
|
||||
GLIBC_2.42 pownf32 F
|
||||
GLIBC_2.42 pownf32x F
|
||||
GLIBC_2.42 pownf64 F
|
||||
GLIBC_2.42 pownf64x F
|
||||
GLIBC_2.42 pownl F
|
||||
GLIBC_2.42 powr F
|
||||
GLIBC_2.42 powrf F
|
||||
GLIBC_2.42 powrf128 F
|
||||
|
|
|
@ -1348,6 +1348,14 @@ GLIBC_2.41 tanpif32x F
|
|||
GLIBC_2.41 tanpif64 F
|
||||
GLIBC_2.41 tanpif64x F
|
||||
GLIBC_2.41 tanpil F
|
||||
GLIBC_2.42 pown F
|
||||
GLIBC_2.42 pownf F
|
||||
GLIBC_2.42 pownf128 F
|
||||
GLIBC_2.42 pownf32 F
|
||||
GLIBC_2.42 pownf32x F
|
||||
GLIBC_2.42 pownf64 F
|
||||
GLIBC_2.42 pownf64x F
|
||||
GLIBC_2.42 pownl F
|
||||
GLIBC_2.42 powr F
|
||||
GLIBC_2.42 powrf F
|
||||
GLIBC_2.42 powrf128 F
|
||||
|
|
|
@ -920,6 +920,12 @@ GLIBC_2.41 tanpif32 F
|
|||
GLIBC_2.41 tanpif32x F
|
||||
GLIBC_2.41 tanpif64 F
|
||||
GLIBC_2.41 tanpil F
|
||||
GLIBC_2.42 pown F
|
||||
GLIBC_2.42 pownf F
|
||||
GLIBC_2.42 pownf32 F
|
||||
GLIBC_2.42 pownf32x F
|
||||
GLIBC_2.42 pownf64 F
|
||||
GLIBC_2.42 pownl F
|
||||
GLIBC_2.42 powr F
|
||||
GLIBC_2.42 powrf F
|
||||
GLIBC_2.42 powrf32 F
|
||||
|
|
|
@ -920,6 +920,12 @@ GLIBC_2.41 tanpif32 F
|
|||
GLIBC_2.41 tanpif32x F
|
||||
GLIBC_2.41 tanpif64 F
|
||||
GLIBC_2.41 tanpil F
|
||||
GLIBC_2.42 pown F
|
||||
GLIBC_2.42 pownf F
|
||||
GLIBC_2.42 pownf32 F
|
||||
GLIBC_2.42 pownf32x F
|
||||
GLIBC_2.42 pownf64 F
|
||||
GLIBC_2.42 pownl F
|
||||
GLIBC_2.42 powr F
|
||||
GLIBC_2.42 powrf F
|
||||
GLIBC_2.42 powrf32 F
|
||||
|
|
|
@ -1355,6 +1355,14 @@ GLIBC_2.41 tanpif32x F
|
|||
GLIBC_2.41 tanpif64 F
|
||||
GLIBC_2.41 tanpif64x F
|
||||
GLIBC_2.41 tanpil F
|
||||
GLIBC_2.42 pown F
|
||||
GLIBC_2.42 pownf F
|
||||
GLIBC_2.42 pownf128 F
|
||||
GLIBC_2.42 pownf32 F
|
||||
GLIBC_2.42 pownf32x F
|
||||
GLIBC_2.42 pownf64 F
|
||||
GLIBC_2.42 pownf64x F
|
||||
GLIBC_2.42 pownl F
|
||||
GLIBC_2.42 powr F
|
||||
GLIBC_2.42 powrf F
|
||||
GLIBC_2.42 powrf128 F
|
||||
|
|
|
@ -1245,6 +1245,14 @@ GLIBC_2.41 tanpif32x F
|
|||
GLIBC_2.41 tanpif64 F
|
||||
GLIBC_2.41 tanpif64x F
|
||||
GLIBC_2.41 tanpil F
|
||||
GLIBC_2.42 pown F
|
||||
GLIBC_2.42 pownf F
|
||||
GLIBC_2.42 pownf128 F
|
||||
GLIBC_2.42 pownf32 F
|
||||
GLIBC_2.42 pownf32x F
|
||||
GLIBC_2.42 pownf64 F
|
||||
GLIBC_2.42 pownf64x F
|
||||
GLIBC_2.42 pownl F
|
||||
GLIBC_2.42 powr F
|
||||
GLIBC_2.42 powrf F
|
||||
GLIBC_2.42 powrf128 F
|
||||
|
|
|
@ -1278,6 +1278,14 @@ GLIBC_2.41 tanpif32x F
|
|||
GLIBC_2.41 tanpif64 F
|
||||
GLIBC_2.41 tanpif64x F
|
||||
GLIBC_2.41 tanpil F
|
||||
GLIBC_2.42 pown F
|
||||
GLIBC_2.42 pownf F
|
||||
GLIBC_2.42 pownf128 F
|
||||
GLIBC_2.42 pownf32 F
|
||||
GLIBC_2.42 pownf32x F
|
||||
GLIBC_2.42 pownf64 F
|
||||
GLIBC_2.42 pownf64x F
|
||||
GLIBC_2.42 pownl F
|
||||
GLIBC_2.42 powr F
|
||||
GLIBC_2.42 powrf F
|
||||
GLIBC_2.42 powrf128 F
|
||||
|
|
|
@ -1278,6 +1278,14 @@ GLIBC_2.41 tanpif32x F
|
|||
GLIBC_2.41 tanpif64 F
|
||||
GLIBC_2.41 tanpif64x F
|
||||
GLIBC_2.41 tanpil F
|
||||
GLIBC_2.42 pown F
|
||||
GLIBC_2.42 pownf F
|
||||
GLIBC_2.42 pownf128 F
|
||||
GLIBC_2.42 pownf32 F
|
||||
GLIBC_2.42 pownf32x F
|
||||
GLIBC_2.42 pownf64 F
|
||||
GLIBC_2.42 pownf64x F
|
||||
GLIBC_2.42 pownl F
|
||||
GLIBC_2.42 powr F
|
||||
GLIBC_2.42 powrf F
|
||||
GLIBC_2.42 powrf128 F
|
||||
|
|
Loading…
Reference in New Issue