lavu/libm: add exp10 support

Multimedia / FFmpeg - Ganesh Ajjanagadde [gmail.com] - 23 December 2015 11:22 UTC

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.

e29db08 lavu/libm: add exp10 support
configure | 2 ++
libavutil/libm.h | 19 +++++++++++++++++++
2 files changed, 21 insertions(+)

  • Share