% c_dtype = dtype_to_c_type(dtype)
__kernel void sign_<%= dtype %>(__global const <%= c_dtype %> *A, __global <%= c_dtype %> *C) {
// Get the index of the current element to be processed const int id = get_global_id(0); <%= c_dtype %> value = A[id];
% if floating_point?(dtype)
if (isnan(value) || value == 0.0f) { C[id] = 0.0; } else { C[id] = value < 0 ? -1.0 : 1.0; }
% else
if (value == 0) { C[id] = 0; } else { C[id] = value < 0 ? -1 : 1; }
% end }