From 9aeb3246d20c3aff692d18ff00f59427176ed046 Mon Sep 17 00:00:00 2001 From: rander Date: Fri, 31 Mar 2017 15:57:34 +0800 Subject: backend: add double version of common function Signed-off-by: rander Tested-by: Yang Rong --- backend/src/libocl/tmpl/ocl_common.tmpl.cl | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'backend') diff --git a/backend/src/libocl/tmpl/ocl_common.tmpl.cl b/backend/src/libocl/tmpl/ocl_common.tmpl.cl index af516dec..ba73c6ea 100644 --- a/backend/src/libocl/tmpl/ocl_common.tmpl.cl +++ b/backend/src/libocl/tmpl/ocl_common.tmpl.cl @@ -142,3 +142,33 @@ OVERLOADABLE double mix(double x, double y, double a) return x + (y-x)*a; } +OVERLOADABLE double clamp(double v, double l, double u) +{ + return max(min(v, u), l); +} + +OVERLOADABLE double degrees(double radians) +{ + return radians*180.0/M_PI; +} + +OVERLOADABLE double radians(double degrees) +{ + return degrees*M_PI/180.0; +} + +OVERLOADABLE double smoothstep(double e0, double e1, double x) +{ + x = clamp((x - e0) / (e1 - e0), 0.0, 1.0); + return x * x * (3 - 2 * x); +} + +OVERLOADABLE double sign(double x) +{ + ulong k = as_ulong(x); + double r = (k&DF_SIGN_MASK) ? -1.0 : 1.0; + double s = 0.0 * r; + s = (x == 0.0) ? s : r; + return isnan(x) ? 0.0 : s; +} + -- cgit v1.2.1