Определение знака переменной достаточно важная и нужная в геймдеве операция. Есть много разных вариантов отличающиеся производительностью.
Привожу наиболее оптимальное решение, которое мне удалось найти.
template<typename T> T sign(T val) { return (val > (T)0) - (val < (T)0); }