From 4347e620fa075baec2a5df97937adc02d63eb6f6 Mon Sep 17 00:00:00 2001 From: Homer Hsing Date: Mon, 28 Oct 2013 09:02:33 +0800 Subject: [PATCH] fix built-in function "fast_normalize" if the parameter is zero, then return zero if the parameter is positive, then return 1. for other cases, return -1. Signed-off-by: Homer Hsing Reviewed-by: "Lu, Guanqun" Reviewed-by: Zhigang Gong --- backend/src/ocl_stdlib.tmpl.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/ocl_stdlib.tmpl.h b/backend/src/ocl_stdlib.tmpl.h index 2b75fdb..4f5da1c 100644 --- a/backend/src/ocl_stdlib.tmpl.h +++ b/backend/src/ocl_stdlib.tmpl.h @@ -1787,7 +1787,7 @@ INLINE_OVERLOADABLE float fast_distance(float x, float y) { return length(x-y); INLINE_OVERLOADABLE float fast_distance(float2 x, float2 y) { return length(x-y); } INLINE_OVERLOADABLE float fast_distance(float3 x, float3 y) { return length(x-y); } INLINE_OVERLOADABLE float fast_distance(float4 x, float4 y) { return length(x-y); } -INLINE_OVERLOADABLE float fast_normalize(float x) { return 1.f; } +INLINE_OVERLOADABLE float fast_normalize(float x) { return x > 0 ? 1.f : (x < 0 ? -1.f : 0.f); } INLINE_OVERLOADABLE float2 fast_normalize(float2 x) { return x * rsqrt(dot(x, x)); } INLINE_OVERLOADABLE float3 fast_normalize(float3 x) { return x * rsqrt(dot(x, x)); } INLINE_OVERLOADABLE float4 fast_normalize(float4 x) { return x * rsqrt(dot(x, x)); } -- 2.7.4