range_intersection
x_pos = range_intersection(x_t, x, range(x_t, 0, smax));
x_neg = range_intersection(x_t, x, range(x_t, smin, neg_one));
y_pos = range_intersection(y_t, y, range(x_t, 0, smax));
y_neg = range_intersection(y_t, y, range(y_t, smin, neg_one));
r_pos = range_intersection(x_t, x_pos, range_cast(y_t, x_t, y_pos));
r_neg = range_intersection(x_t, x_neg, range_cast(y_t, x_t, y_neg));
return range_intersection(x_t, x, y_cast);
return range_intersection(x_t, x, x_swap);
return range_intersection(x_t, x, y_cast);