summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMans Rullgard <mans@mansr.com>2012-06-22 15:37:46 +0100
committerMans Rullgard <mans@mansr.com>2012-06-26 15:56:38 +0100
commit153335625c429d2e4ab6a4d2d704d7eb91293290 (patch)
tree3bd83196a58c2397edd517709e8918ccdb3e731a
parent4b1b1449d95b3567d055fc410a1db137c811229c (diff)
libm: provide fallback definition for cbrtf() using powf()
This adds a fallback for cbrtf() using powf(x, 1/3). Since powf() with a non-integer exponent requires a non-negative base, special handling of negative inputs is needed. Signed-off-by: Mans Rullgard <mans@mansr.com>
-rwxr-xr-xconfigure2
-rw-r--r--libavutil/libm.h7
2 files changed, 9 insertions, 0 deletions
diff --git a/configure b/configure
index 52c25b484c..473393a4e8 100755
--- a/configure
+++ b/configure
@@ -1059,6 +1059,7 @@ HAVE_LIST="
asm_mod_y
attribute_may_alias
attribute_packed
+ cbrtf
closesocket
cmov
dcbzl
@@ -2918,6 +2919,7 @@ done
check_lib math.h sin -lm && LIBM="-lm"
enabled vaapi && require vaapi va/va.h vaInitialize -lva
+check_mathfunc cbrtf
check_mathfunc exp2
check_mathfunc exp2f
check_mathfunc llrint
diff --git a/libavutil/libm.h b/libavutil/libm.h
index 783f3cdfab..b6d8a94fce 100644
--- a/libavutil/libm.h
+++ b/libavutil/libm.h
@@ -28,6 +28,13 @@
#include "config.h"
#include "attributes.h"
+#if !HAVE_CBRTF
+static av_always_inline float cbrtf(float x)
+{
+ return x < 0 ? -powf(-x, 1.0 / 3.0) : powf(x, 1.0 / 3.0);
+}
+#endif
+
#if !HAVE_EXP2
#undef exp2
#define exp2(x) exp((x) * 0.693147180559945)