On Mon, Dec 21, 2015 at 07:19:50PM -0800, Ganesh Ajjanagadde wrote: > exp10 is a function available in GNU libm. Looks like no other common > libm has it. As such, I am mostly neutral about its inclusion, with a > very slight bias in favor since I am actually posting this. > > pros: > 1. It is faster than pow, and has less of a chance of going into one of > the terribly slow paths: > https://github.com/andikleen/glibc/blob/rtm-devel9/sysdeps/ieee754/dbl-64/e_exp10.c > vs > https://github.com/andikleen/glibc/blob/rtm-devel9/sysdeps/ieee754/dbl-64/e_pow.c. > Speedup is roughly 30% of the original execution time for an "average" > benchmark over 1e8 arguments uniformly spaced from -1 to 1 > (similar results for other intervals): > ./test 4.07s user 0.00s system 100% cpu 4.068 total (exp10) > ./test 5.71s user 0.00s system 100% cpu 5.711 total (pow) > > cons: > 1. It is GNU libm only, and requires -D_GNU_SOURCE. > 2. Speedup is not that impressive.
> 3. pow(10, x) is not terribly common in the code, and still cheaper > approximation (not as accurate, but often reasonable) exp(ln(10)*x) is > much faster: > ./test 2.55s user 0.00s system 99% cpu 2.548 total (exp(ln(10)*x)) IMHO a exp10 fallback should be implemented using exp2() if that is faster and available. Code requiring absolute accuracy must be written using integers as C does not gurantee accuracy for float and double. A single libc or fallback providing more accuracy does not really help as our code must function correctly in the absence of such accuracy also the accuracy difference between exp2() and pow() should be negligible [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB In fact, the RIAA has been known to suggest that students drop out of college or go to community college in order to be able to afford settlements. -- The RIAA
signature.asc
Description: Digital signature
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel