• Ganesh Ajjanagadde's avatar
    lavu/libm: add exp10 support · e29db08c
    Ganesh Ajjanagadde authored
    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: 's avatarHendrik Leppkes <h.leppkes@gmail.com>
    Reviewed-by: 's avatarMichael Niedermayer <michael@niedermayer.cc>
    Reviewed-by: 's avatarRonald S. Bultje <rsbultje@gmail.com>
    Signed-off-by: 's avatarGanesh Ajjanagadde <gajjanagadde@gmail.com>
    e29db08c
Name
Last commit
Last update
compat Loading commit data...
doc Loading commit data...
libavcodec Loading commit data...
libavdevice Loading commit data...
libavfilter Loading commit data...
libavformat Loading commit data...
libavresample Loading commit data...
libavutil Loading commit data...
libpostproc Loading commit data...
libswresample Loading commit data...
libswscale Loading commit data...
presets Loading commit data...
tests Loading commit data...
tools Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.travis.yml Loading commit data...
COPYING.GPLv2 Loading commit data...
COPYING.GPLv3 Loading commit data...
COPYING.LGPLv2.1 Loading commit data...
COPYING.LGPLv3 Loading commit data...
CREDITS Loading commit data...
Changelog Loading commit data...
INSTALL.md Loading commit data...
LICENSE.md Loading commit data...
MAINTAINERS Loading commit data...
Makefile Loading commit data...
README.md Loading commit data...
RELEASE Loading commit data...
arch.mak Loading commit data...
cmdutils.c Loading commit data...
cmdutils.h Loading commit data...
cmdutils_common_opts.h Loading commit data...
cmdutils_opencl.c Loading commit data...
common.mak Loading commit data...
configure Loading commit data...
ffmpeg.c Loading commit data...
ffmpeg.h Loading commit data...
ffmpeg_dxva2.c Loading commit data...
ffmpeg_filter.c Loading commit data...
ffmpeg_opt.c Loading commit data...
ffmpeg_qsv.c Loading commit data...
ffmpeg_vdpau.c Loading commit data...
ffmpeg_videotoolbox.c Loading commit data...
ffplay.c Loading commit data...
ffprobe.c Loading commit data...
ffserver.c Loading commit data...
ffserver_config.c Loading commit data...
ffserver_config.h Loading commit data...
library.mak Loading commit data...
version.sh Loading commit data...