summaryrefslogtreecommitdiffstats
path: root/libclc/generic/lib/math/log.cl
diff options
context:
space:
mode:
Diffstat (limited to 'libclc/generic/lib/math/log.cl')
-rw-r--r--libclc/generic/lib/math/log.cl26
1 files changed, 26 insertions, 0 deletions
diff --git a/libclc/generic/lib/math/log.cl b/libclc/generic/lib/math/log.cl
new file mode 100644
index 00000000000..ec1faa12606
--- /dev/null
+++ b/libclc/generic/lib/math/log.cl
@@ -0,0 +1,26 @@
+#include <clc/clc.h>
+#include "../clcmacro.h"
+
+/*
+ *log(x) = log2(x) * (1/log2(e))
+ */
+
+_CLC_OVERLOAD _CLC_DEF float log(float x)
+{
+ return log2(x) * (1.0f / M_LOG2E_F);
+}
+
+_CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, float, log, float);
+
+#ifdef cl_khr_fp64
+
+#pragma OPENCL EXTENSION cl_khr_fp64 : enable
+
+_CLC_OVERLOAD _CLC_DEF double log(double x)
+{
+ return log2(x) * (1.0 / M_LOG2E);
+}
+
+_CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, double, log, double);
+
+#endif // cl_khr_fp64
OpenPOWER on IntegriCloud