[utils] adding non-branching sign functions
This commit is contained in:
@@ -14,6 +14,10 @@ inline bool float_equals(float a, float b) {
|
|||||||
return float_equals_epsilon(a, b, FLT_EPSILON);
|
return float_equals_epsilon(a, b, FLT_EPSILON);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline float fsign(float x) {
|
||||||
|
return (float)((x > 0.0f) - (x < 0.0f));
|
||||||
|
}
|
||||||
|
|
||||||
inline bool double_equals_epsilon(double a, double b, double epsilon) {
|
inline bool double_equals_epsilon(double a, double b, double epsilon) {
|
||||||
double diff = fabs(a - b);
|
double diff = fabs(a - b);
|
||||||
a = fabs(a);
|
a = fabs(a);
|
||||||
@@ -27,3 +31,8 @@ inline bool double_equals_epsilon(double a, double b, double epsilon) {
|
|||||||
inline bool double_equals(double a, double b) {
|
inline bool double_equals(double a, double b) {
|
||||||
return double_equals_epsilon(a, b, DBL_EPSILON);
|
return double_equals_epsilon(a, b, DBL_EPSILON);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
inline double sign(double x) {
|
||||||
|
return (double)((x > 0.0) - (x < 0.0));
|
||||||
|
}
|
||||||
|
|||||||
@@ -8,9 +8,11 @@
|
|||||||
|
|
||||||
bool float_equals(float a, float b);
|
bool float_equals(float a, float b);
|
||||||
bool float_equals_epsilon(float a, float b, float epsilon);
|
bool float_equals_epsilon(float a, float b, float epsilon);
|
||||||
|
float fsign(float x);
|
||||||
|
|
||||||
bool double_equals(double a, double b);
|
bool double_equals(double a, double b);
|
||||||
bool double_equals_epsilon(double a, double b, double epsilon);
|
bool double_equals_epsilon(double a, double b, double epsilon);
|
||||||
|
double sign(double x);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user