You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
572 B
29 lines
572 B
4 months ago
|
#include <clc/clc.h>
|
||
|
#include "../clcmacro.h"
|
||
|
|
||
|
#define SIGN(TYPE, F) \
|
||
|
_CLC_DEF _CLC_OVERLOAD TYPE sign(TYPE x) { \
|
||
|
if (isnan(x)) { \
|
||
|
return 0.0F; \
|
||
|
} \
|
||
|
if (x > 0.0F) { \
|
||
|
return 1.0F; \
|
||
|
} \
|
||
|
if (x < 0.0F) { \
|
||
|
return -1.0F; \
|
||
|
} \
|
||
|
return x; /* -0.0 or +0.0 */ \
|
||
|
}
|
||
|
|
||
|
SIGN(float, f)
|
||
|
_CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, float, sign, float)
|
||
|
|
||
|
#ifdef cl_khr_fp64
|
||
|
|
||
|
#pragma OPENCL EXTENSION cl_khr_fp64 : enable
|
||
|
|
||
|
SIGN(double, )
|
||
|
_CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, double, sign, double)
|
||
|
|
||
|
#endif
|