18 #include "dtoolbase.h" 29 get_nearly_zero_value(
double) {
34 get_nearly_zero_value(
float) {
39 get_nearly_zero_value(
int) {
48 #define IS_THRESHOLD_ZERO(value, threshold) \ 49 ((value) < (threshold) && (value) > -(threshold)) 53 #define IS_THRESHOLD_EQUAL(value1, value2, threshold) \ 54 (IS_THRESHOLD_ZERO((value1) - (value2), threshold)) 61 #define IS_THRESHOLD_COMPEQ(value1, value2, threshold) \ 62 (cfloor(value1 / threshold + 0.5f) == cfloor(value2 / threshold + 0.5f)) 67 #define NEARLY_ZERO(FLOATTYPE) (get_nearly_zero_value((FLOATTYPE)0)) 71 #define IS_NEARLY_ZERO(value) \ 72 (IS_THRESHOLD_ZERO(value, get_nearly_zero_value(value))) 76 #define IS_NEARLY_EQUAL(value1, value2) \ 77 (IS_THRESHOLD_EQUAL(value1, value2, get_nearly_zero_value(value1))) 82 #define MAYBE_ZERO(value) \ 83 (IS_NEARLY_ZERO(value) ? 0 : (value))