lavu/libm: add exp10 support
authorGanesh Ajjanagadde <gajjanagadde@gmail.com>
Tue, 22 Dec 2015 03:05:00 +0000 (19:05 -0800)
committerGanesh Ajjanagadde <gajjanagadde@gmail.com>
Wed, 23 Dec 2015 17:22:59 +0000 (09:22 -0800)
commite29db08cf7f68fefe18f043250e2292aaf91ef3b
treed69978eab4ed9dbf310009a7aa64bfba794da728
parent520a5d33f0ea9f8838dbc7282470db700d248065
lavu/libm: add exp10 support

exp10 is a function available in GNU libm. Looks like no other common
libm has it. This adds support for it to FFmpeg.

There are essentially 2 ways of handling the fallback:
1. Using pow(10, x)
2. Using exp2(M_LOG2_10 * x).

First one represents a Pareto improvement, with no speed or accuracy
regression anywhere, but speed improvement limited to GNU libm.

Second one represents a slight accuracy loss (relative error ~ 1e-13)
for non GNU libm. Speedup of > 2x is obtained on non GNU libm platforms,
~30% on GNU libm. These are "average case numbers", another benefit is
the lack of triggering of the well-known terrible worst case paths
through pow.

Based on reviews, second one chosen. Comment added accordingly.

Reviewed-by: Hendrik Leppkes <h.leppkes@gmail.com>
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Reviewed-by: Ronald S. Bultje <rsbultje@gmail.com>
Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
configure
libavutil/libm.h