• 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
configure 205 KB