16 #define VuoRange_NoMinimum -INFINITY
19 #define VuoRange_NoMaximum INFINITY
38 #define VuoRange_SUPPORTS_COMPARISON
58 return (
VuoRange){_minimum, _maximum};
67 return range.minimum > range.maximum;
77 return (
VuoRange){range.maximum, range.minimum};
88 if (fabs(a.maximum - a.minimum) < FLT_EPSILON)
89 a.maximum = a.minimum + FLT_EPSILON;
101 VuoReal lower = fmin(range.minimum, range.maximum);
102 VuoReal upper = fmax(range.minimum, range.maximum);
103 return fmin(fmax(value, lower), upper);
116 VuoReal from_lower = fmin(from.minimum, from.maximum);
117 VuoReal from_upper = fmax(from.minimum, from.maximum);
118 VuoReal to_lower = fmin(to.minimum, to.maximum);
119 VuoReal to_upper = fmax(to.minimum, to.maximum);
125 VuoReal from_range = from_upper - from_lower;
126 VuoReal to_range = to_upper - to_lower;
127 VuoReal v = fmax(fmin(value, from_upper), from_lower);
128 VuoReal n = (v - from_lower) / from_range;
130 return to_lower + (n * to_range);