glibc/sysdeps/ieee754/flt-32
Paul Zimmermann 9acda61d94 Fix the inaccuracy of j0f/j1f/y0f/y1f [BZ #14469, #14470, #14471, #14472]
For j0f/j1f/y0f/y1f, the largest error for all binary32
inputs is reduced to at most 9 ulps for all rounding modes.

The new code is enabled only when there is a cancellation at the very end of
the j0f/j1f/y0f/y1f computation, or for very large inputs, thus should not
give any visible slowdown on average.  Two different algorithms are used:

* around the first 64 zeros of j0/j1/y0/y1, approximation polynomials of
  degree 3 are used, computed using the Sollya tool (https://www.sollya.org/)

* for large inputs, an asymptotic formula from [1] is used

[1] Fast and Accurate Bessel Function Computation,
    John Harrison, Proceedings of Arith 19, 2009.

Inputs yielding the new largest errors are added to auto-libm-test-in,
and ulps are regenerated for various targets (thanks Adhemerval Zanella).

Tested on x86_64 with --disable-multi-arch and on powerpc64le-linux-gnu.
Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
2021-04-02 06:15:48 +02:00
..
e_acosf.c Add libm_alias_finite for _finite symbols 2020-01-03 10:02:04 -03:00
e_acoshf.c Add libm_alias_finite for _finite symbols 2020-01-03 10:02:04 -03:00
e_asinf.c Add libm_alias_finite for _finite symbols 2020-01-03 10:02:04 -03:00
e_atan2f.c Add libm_alias_finite for _finite symbols 2020-01-03 10:02:04 -03:00
e_atanhf.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
e_coshf.c Add libm_alias_finite for _finite symbols 2020-01-03 10:02:04 -03:00
e_exp2f_data.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
e_exp2f.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
e_exp10f.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
e_expf.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
e_fmodf.c Add libm_alias_finite for _finite symbols 2020-01-03 10:02:04 -03:00
e_gammaf_r.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
e_hypotf.c Add libm_alias_finite for _finite symbols 2020-01-03 10:02:04 -03:00
e_ilogbf.c
e_j0f.c Fix the inaccuracy of j0f/j1f/y0f/y1f [BZ #14469, #14470, #14471, #14472] 2021-04-02 06:15:48 +02:00
e_j1f.c Fix the inaccuracy of j0f/j1f/y0f/y1f [BZ #14469, #14470, #14471, #14472] 2021-04-02 06:15:48 +02:00
e_jnf.c Add libm_alias_finite for _finite symbols 2020-01-03 10:02:04 -03:00
e_lgammaf_r.c Add libm_alias_finite for _finite symbols 2020-01-03 10:02:04 -03:00
e_log2f_data.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
e_log2f.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
e_log10f.c Add libm_alias_finite for _finite symbols 2020-01-03 10:02:04 -03:00
e_logf_data.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
e_logf.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
e_powf_log2_data.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
e_powf.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
e_remainderf.c Add libm_alias_finite for _finite symbols 2020-01-03 10:02:04 -03:00
e_sinhf.c Add libm_alias_finite for _finite symbols 2020-01-03 10:02:04 -03:00
e_sqrtf.c ieee754: provide gcc builtins based generic sqrt functions 2020-06-03 10:23:22 -07:00
k_tanf.c Move math_check_force_underflow macros to separate math-underflow.h. 2018-05-10 00:53:04 +00:00
lgamma_negf.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
lgamma_productf.c Fix lgamma (negative) inaccuracy (bug 2542, bug 2543, bug 2558). 2015-09-10 22:27:58 +00:00
math_config.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
math_errf.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
mpn2flt.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
reduce_aux.h Fix the inaccuracy of j0f/j1f/y0f/y1f [BZ #14469, #14470, #14471, #14472] 2021-04-02 06:15:48 +02:00
s_asinhf.c Use copysign functions not __copysign functions in glibc libm. 2018-09-27 20:04:48 +00:00
s_atanf.c Move math_check_force_underflow macros to separate math-underflow.h. 2018-05-10 00:53:04 +00:00
s_cbrtf.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
s_ceilf.c Adjust s_ceilf.c and s_ceill.c regarding code style. 2019-12-11 15:12:21 +01:00
s_copysignf.c Use GCC builtins for copysign functions if desired. 2019-12-11 15:12:19 +01:00
s_cosf.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
s_erff.c Move math_check_force_underflow macros to separate math-underflow.h. 2018-05-10 00:53:04 +00:00
s_expm1f.c Do not include math-barriers.h in math_private.h. 2018-05-11 15:11:38 +00:00
s_fabsf.c Use libm_alias_float in flt-32. 2017-09-22 20:24:12 +00:00
s_finitef.c Consistently use uintN_t not u_intN_t in libm. 2017-08-03 19:55:04 +00:00
s_floorf.c Adjust s_floorf.c and s_floorl.c regarding code style. 2019-12-11 15:12:20 +01:00
s_fpclassifyf.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
s_frexpf.c Use libm_alias_float in flt-32. 2017-09-22 20:24:12 +00:00
s_fromfpf_main.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
s_fromfpf.c Use libm_alias_float in flt-32. 2017-09-22 20:24:12 +00:00
s_fromfpxf.c Use libm_alias_float in flt-32. 2017-09-22 20:24:12 +00:00
s_getpayloadf.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
s_isinff.c
s_isnanf.c Consistently use uintN_t not u_intN_t in libm. 2017-08-03 19:55:04 +00:00
s_issignalingf.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
s_llrintf.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
s_llroundf.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
s_log1pf.c Do not include math-barriers.h in math_private.h. 2018-05-11 15:11:38 +00:00
s_logbf.c Use libm_alias_float in flt-32. 2017-09-22 20:24:12 +00:00
s_lrintf.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
s_lroundf.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
s_modff.c Use libm_alias_float in flt-32. 2017-09-22 20:24:12 +00:00
s_nearbyintf.c Adjust s_nearbyintf.c and s_nearbyintl.c regarding code style. 2019-12-11 15:12:19 +01:00
s_nextafterf.c Do not include math-barriers.h in math_private.h. 2018-05-11 15:11:38 +00:00
s_nextupf.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
s_remquof.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
s_rintf.c Adjust s_rintf.c and s_rintl.c regarding code style. 2019-12-11 15:12:20 +01:00
s_roundevenf.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
s_roundf.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
s_scalblnf.c [BZ #6803] Set errno for scalbln, scalbn 2014-06-20 07:48:20 +05:30
s_scalbnf.c Use copysign functions not __copysign functions in glibc libm. 2018-09-27 20:04:48 +00:00
s_setpayloadf_main.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
s_setpayloadf.c Use libm_alias_float in flt-32. 2017-09-22 20:24:12 +00:00
s_setpayloadsigf.c Use libm_alias_float in flt-32. 2017-09-22 20:24:12 +00:00
s_signbitf.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
s_sincosf_data.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
s_sincosf.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
s_sincosf.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
s_sinf.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
s_tanf.c Speedup tanf range reduction 2018-08-23 12:38:16 +01:00
s_tanhf.c Move math_check_force_underflow macros to separate math-underflow.h. 2018-05-10 00:53:04 +00:00
s_totalorderf.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
s_totalordermagf.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
s_truncf.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
s_ufromfpf.c Use libm_alias_float in flt-32. 2017-09-22 20:24:12 +00:00
s_ufromfpxf.c Use libm_alias_float in flt-32. 2017-09-22 20:24:12 +00:00
sincosf_poly.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
w_exp2f.c Do not wrap expf and exp2f 2017-10-02 14:38:54 +01:00
w_expf.c Do not wrap expf and exp2f 2017-10-02 14:38:54 +01:00
w_log2f.c Do not wrap logf, log2f and powf 2017-10-02 14:39:38 +01:00
w_logf.c Do not wrap logf, log2f and powf 2017-10-02 14:39:38 +01:00
w_powf.c Do not wrap logf, log2f and powf 2017-10-02 14:39:38 +01:00