glibc/sysdeps/m68k/m680x0/fpu
Szabolcs Nagy bf27d3973d New generic logf
without wrapper on aarch64:
logf reciprocal-throughput: 2.2x faster
logf latency: 1.9x faster
old worst case error: 0.89 ulp
new worst case error: 0.82 ulp
aarch64 .text size: -356 bytes
aarch64 .rodata size: +240 bytes

Uses double precision arithmetics and a lookup table to allow smaller
polynomial and avoid the use of division.

Data is in a separate translation unit with fixed layout to prevent the
compiler generating suboptimal literal access.

Errors are handled inline according to POSIX rules, but this patch
keeps the wrapper with SVID compatible error handling.

Needs libm-test-ulps adjustment for clogf in non-nearest rounding mode.

	* math/Makefile (type-float-routines): Add e_logf_data.
	* sysdeps/ieee754/flt-32/e_logf.c: New implementation.
	* sysdeps/ieee754/flt-32/e_logf_data.c: New file.
	* sysdeps/ieee754/flt-32/math_config.h (__logf_data): Define.
	(LOGF_TABLE_BITS, LOGF_POLY_ORDER): Define.
	* sysdeps/i386/fpu/e_logf_data.c: New file.
	* sysdeps/ia64/fpu/e_logf_data.c: New file.
	* sysdeps/m68k/m680x0/fpu/e_logf_data.c: New file.
2017-09-29 11:46:46 +01:00
..
bits Remove ancient __signbit inlines 2017-09-28 19:52:13 +01:00
branred.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
doasin.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
dosincos.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_acos.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
e_acosf.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_acosl.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_asin.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_asinf.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_asinl.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_atan2.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
e_atan2f.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_atan2l.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_atanh.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_atanhf.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_atanhl.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_cosh.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_coshf.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_coshl.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_exp2.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_exp2f_data.c Optimized generic expf and exp2f with wrappers 2017-09-25 10:44:39 +01:00
e_exp2f.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_exp2l.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_exp10.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_exp10f.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_exp10l.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_exp.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_expf.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_expl.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_fmod.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
e_fmodf.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_fmodl.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_ilogb.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
e_ilogbf.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_ilogbl.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_log2.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_log2f.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_log2l.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_log10.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_log10f.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_log10l.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_log.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_logf_data.c New generic logf 2017-09-29 11:46:46 +01:00
e_logf.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_logl.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_pow.c Consistently use uintN_t not u_intN_t in libm. 2017-08-03 19:55:04 +00:00
e_powf.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_powl.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_rem_pio2.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_rem_pio2f.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_rem_pio2l.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_remainder.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_remainderf.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_remainderl.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_scalb.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
e_scalbf.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_scalbl.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_sinh.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_sinhf.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_sinhl.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_sqrt.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_sqrtf.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
e_sqrtl.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
fraiseexcpt.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
halfulp.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
k_cosl.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
k_rem_pio2.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
k_rem_pio2f.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
k_sinl.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
k_tanf.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
k_tanl.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
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 Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
mpatan2.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
mpatan.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
mpexp.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
mplog.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
mpsqrt.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
mptan.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_atan.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
s_atanf.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_atanl.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_ccosh_template.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
s_ceil.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_ceilf.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_ceill.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_cexp_template.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
s_cos.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_cosf.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_cosl.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
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 Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_expm1l.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_fabs.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_fabsf.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_fabsl.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_finite.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_finitef.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_finitel.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_floor.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_floorf.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_floorl.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
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 Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
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 Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_isinfl.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_isnan.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_isnanf.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_isnanl.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
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 Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_lrint.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
s_lrintf.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_lrintl.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_modf.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
s_modff.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_modfl.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_nearbyint.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_nearbyintf.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_nearbyintl.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
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 Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_remquol.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_rint.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_rintf.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_rintl.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_scalbln.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_scalblnf.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_scalblnl.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_scalbn.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
s_scalbnf.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_scalbnl.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_significand.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_significandf.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_significandl.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
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 Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_sincosl.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_sinf.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_sinl.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_tan.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_tanf.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_tanh.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_tanhf.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_tanhl.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_tanl.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_trunc.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_truncf.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
s_truncl.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
sincos32.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
sincostab.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
slowexp.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
slowpow.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00
t_exp.c Move m68k from ports to libc 2014-02-10 20:22:40 +01:00