glibc/sysdeps/m68k/m680x0/fpu
Szabolcs Nagy 4ea49f4c08 New generic powf
without wrapper on aarch64:
powf reciprocal-throughput: 4.2x faster
powf latency: 2.6x faster
old worst-case error: 1.11 ulp
new worst-case error: 0.82 ulp
aarch64 .text size: -780 bytes
aarch64 .rodata size: +144 bytes

powf(x,y) is implemented as exp2(y*log2(x)) with the same algorithms
that are used in exp2f and log2f, except that the log2f polynomial is
larger for extra precision and its output (and exp2f input) may be
scaled by a power of 2 (POWF_SCALE) to simplify the argument reduction
step of exp2 (possible when efficient round and convert toint operation
is available).

The special case handling tries to minimize the checks in the hot path.
When the input of exp2_inline is checked, int arithmetics is used as
that was faster on the tested aarch64 cores.

	* math/Makefile (type-float-routines): Add e_powf_log2_data.
	* sysdeps/ieee754/flt-32/e_powf.c: New implementation.
	* sysdeps/ieee754/flt-32/e_powf_log2_data.c: New file.
	* sysdeps/ieee754/flt-32/math_config.h (__powf_log2_data): Define.
	(issignalingf_inline): Likewise.
	(POWF_LOG2_TABLE_BITS): Likewise.
	(POWF_LOG2_POLY_ORDER): Likewise.
	(POWF_SCALE_BITS): Likewise.
	(POWF_SCALE): Likewise.
	* sysdeps/i386/fpu/e_powf_log2_data.c: New file.
	* sysdeps/ia64/fpu/e_powf_log2_data.c: New file.
	* sysdeps/m68k/m680x0/fpu/e_powf_log2_data.c: New file.
2017-09-29 17:30:53 +01:00
..
bits Remove ancient __signbit inlines 2017-09-28 19:52:13 +01:00
branred.c
doasin.c
dosincos.c
e_acos.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
e_acosf.c
e_acosl.c
e_asin.c
e_asinf.c
e_asinl.c
e_atan2.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
e_atan2f.c
e_atan2l.c
e_atanh.c
e_atanhf.c
e_atanhl.c
e_cosh.c
e_coshf.c
e_coshl.c
e_exp2.c
e_exp2f_data.c Optimized generic expf and exp2f with wrappers 2017-09-25 10:44:39 +01:00
e_exp2f.c
e_exp2l.c
e_exp10.c
e_exp10f.c
e_exp10l.c
e_exp.c
e_expf.c
e_expl.c
e_fmod.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
e_fmodf.c
e_fmodl.c
e_ilogb.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
e_ilogbf.c
e_ilogbl.c
e_log2.c
e_log2f_data.c New generic log2f 2017-09-29 17:17:41 +01:00
e_log2f.c
e_log2l.c
e_log10.c
e_log10f.c
e_log10l.c
e_log.c
e_logf_data.c New generic logf 2017-09-29 11:46:46 +01:00
e_logf.c
e_logl.c
e_pow.c Consistently use uintN_t not u_intN_t in libm. 2017-08-03 19:55:04 +00:00
e_powf_log2_data.c New generic powf 2017-09-29 17:30:53 +01:00
e_powf.c
e_powl.c
e_rem_pio2.c
e_rem_pio2f.c
e_rem_pio2l.c
e_remainder.c
e_remainderf.c
e_remainderl.c
e_scalb.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
e_scalbf.c
e_scalbl.c
e_sinh.c
e_sinhf.c
e_sinhl.c
e_sqrt.c
e_sqrtf.c
e_sqrtl.c
fraiseexcpt.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
halfulp.c
k_cosl.c
k_rem_pio2.c
k_rem_pio2f.c
k_sinl.c
k_tanf.c
k_tanl.c
libm-test-ulps Remove very old libm-test-ulps entries. 2017-01-20 23:58:49 +00:00
libm-test-ulps-name Do not hardcode platform names in manual/libm-err-tab.pl (bug 14139). 2016-11-04 16:49:06 +00:00
math_errf.c Optimized generic expf and exp2f with wrappers 2017-09-25 10:44:39 +01:00
math_private.h Fix math_private.h multiple include guards. 2015-11-20 23:46:23 +00:00
mathimpl.h Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
mpa.c
mpatan2.c
mpatan.c
mpexp.c
mplog.c
mpsqrt.c
mptan.c
s_atan.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
s_atanf.c
s_atanl.c
s_ccosh_template.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
s_ceil.c
s_ceilf.c
s_ceill.c
s_cexp_template.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
s_cos.c
s_cosf.c
s_cosl.c
s_csin_template.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
s_csinh_template.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
s_expm1.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
s_expm1f.c
s_expm1l.c
s_fabs.c
s_fabsf.c
s_fabsl.c
s_finite.c
s_finitef.c
s_finitel.c
s_floor.c
s_floorf.c
s_floorl.c
s_fpclassifyl.c Consistently use uintN_t not u_intN_t in libm. 2017-08-03 19:55:04 +00:00
s_frexp.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
s_frexpf.c
s_frexpl.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
s_isinf.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
s_isinff.c
s_isinfl.c
s_isnan.c
s_isnanf.c
s_isnanl.c
s_llrint.c Consistently use uintN_t not u_intN_t in libm. 2017-08-03 19:55:04 +00:00
s_llrintf.c Consistently use uintN_t not u_intN_t in libm. 2017-08-03 19:55:04 +00:00
s_llrintl.c Consistently use uintN_t not u_intN_t in libm. 2017-08-03 19:55:04 +00:00
s_log1p.c Set errno for log1p on pole/domain error. 2015-04-13 21:19:27 +02:00
s_log1pf.c Set errno for log1p on pole/domain error. 2015-04-13 21:19:27 +02:00
s_log1pl.c Set errno for log1p on pole/domain error. 2015-04-13 21:19:27 +02:00
s_logbl.c
s_lrint.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
s_lrintf.c
s_lrintl.c
s_modf.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
s_modff.c
s_modfl.c
s_nearbyint.c
s_nearbyintf.c
s_nearbyintl.c
s_nextafterl.c Consistently use uintN_t not u_intN_t in libm. 2017-08-03 19:55:04 +00:00
s_remquo.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
s_remquof.c
s_remquol.c
s_rint.c
s_rintf.c
s_rintl.c
s_scalbln.c
s_scalblnf.c
s_scalblnl.c
s_scalbn.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
s_scalbnf.c
s_scalbnl.c
s_significand.c
s_significandf.c
s_significandl.c
s_sin.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
s_sincos.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
s_sincosf.c
s_sincosl.c
s_sinf.c
s_sinl.c
s_tan.c
s_tanf.c
s_tanh.c
s_tanhf.c
s_tanhl.c
s_tanl.c
s_trunc.c
s_truncf.c
s_truncl.c
sincos32.c
sincostab.c
slowexp.c
slowpow.c
t_exp.c