static VALUE
cmp_clamp(VALUE x, VALUE min, VALUE max)
{
int c;
if (cmpint(min, max) > 0) {
rb_raise(rb_eArgError, "min argument must be smaller than max argument");
}
c = cmpint(x, min);
if (c == 0) return x;
if (c < 0) return min;
c = cmpint(x, max);
if (c > 0) return max;
return x;
}