mirror of git://sourceware.org/git/glibc.git
This implementation is based on 'An Improved Algorithm for hypot(a,b)' by Carlos F. Borges [1] using the MyHypot3 with the following changes: - Handle qNaN and sNaN. - Tune the 'widely varying operands' to avoid spurious underflow due the multiplication and fix the return value for upwards rounding mode. - Handle required underflow exception for subnormal results. The main advantage of the new algorithm is its precision. With a random 1e8 input pairs in the range of [LDBL_MIN, LDBL_MAX], glibc current implementation shows around 0.02% results with an error of 1 ulp (23158 results) while the new implementation only shows 0.0001% of total (111). [1] https://arxiv.org/pdf/1904.09481.pdf |
||
---|---|---|
.. | ||
bits | ||
include/bits | ||
Makeconfig | ||
Makefile | ||
e_acoshl.c | ||
e_asinl.c | ||
e_atanhl.c | ||
e_coshl.c | ||
e_gammal_r.c | ||
e_hypotl.c | ||
e_j0l.c | ||
e_j1l.c | ||
e_jnl.c | ||
e_lgammal_r.c | ||
e_rem_pio2l.c | ||
e_sinhl.c | ||
gamma_product.c | ||
gamma_productl.c | ||
k_cosl.c | ||
k_sinl.c | ||
k_tanl.c | ||
ldbl2mpn.c | ||
lgamma_negl.c | ||
lgamma_product.c | ||
lgamma_productl.c | ||
math-nan-payload-ldouble.h | ||
math_ldbl.h | ||
mpn2ldbl.c | ||
nan-pseudo-number.h | ||
printf_fphex.c | ||
s_asinhl.c | ||
s_cbrtl.c | ||
s_copysignl.c | ||
s_cosl.c | ||
s_daddl.c | ||
s_ddivl.c | ||
s_dfmal.c | ||
s_dmull.c | ||
s_dsqrtl.c | ||
s_dsubl.c | ||
s_erfl.c | ||
s_faddl.c | ||
s_fdivl.c | ||
s_ffmal.c | ||
s_fma.c | ||
s_fmal.c | ||
s_fmull.c | ||
s_frexpl.c | ||
s_fromfpl.c | ||
s_fromfpl_main.c | ||
s_fromfpxl.c | ||
s_fsqrtl.c | ||
s_fsubl.c | ||
s_getpayloadl.c | ||
s_iscanonicall.c | ||
s_issignalingl.c | ||
s_llrintl.c | ||
s_llroundl.c | ||
s_lrintl.c | ||
s_lroundl.c | ||
s_modfl.c | ||
s_nexttoward.c | ||
s_nexttowardf.c | ||
s_nextupl.c | ||
s_remquol.c | ||
s_roundevenl.c | ||
s_roundl.c | ||
s_scalblnl.c | ||
s_setpayloadl.c | ||
s_setpayloadl_main.c | ||
s_setpayloadsigl.c | ||
s_signbitl.c | ||
s_sincosl.c | ||
s_sinl.c | ||
s_tanhl.c | ||
s_tanl.c | ||
s_totalorderl.c | ||
s_totalordermagl.c | ||
s_ufromfpl.c | ||
s_ufromfpxl.c | ||
strtold_l.c | ||
t_sincosl.c | ||
test-canonical-ldbl-96.c | ||
test-sinl-pseudo.c | ||
test-totalorderl-ldbl-96.c | ||
x2y2m1.c | ||
x2y2m1l.c |