cnum_t
b1 = (struct cnum_t){ dbase, b.size };
return (struct cnum_t) {
return (struct cnum_t) {
void FN(intersect_with)(struct cnum_t *dst, struct cnum_t src)
void FN(intersect_with_urange)(struct cnum_t *dst, ut min, ut max)
void FN(intersect_with_srange)(struct cnum_t *dst, st min, st max)
static inline struct cnum_t FN(normalize)(struct cnum_t cnum)
struct cnum_t FN(add)(struct cnum_t a, struct cnum_t b)
return (struct cnum_t){ 0, (ut)UT_MAX };
return FN(normalize)((struct cnum_t){ a.base + b.base, a.size + b.size });
struct cnum_t FN(negate)(struct cnum_t a)
return FN(normalize)((struct cnum_t){ -((ut)a.base + a.size), a.size });
bool FN(is_empty)(struct cnum_t cnum)
bool FN(contains)(struct cnum_t cnum, ut v)
bool FN(is_const)(struct cnum_t cnum)
bool FN(is_subset)(struct cnum_t bigger, struct cnum_t smaller)
struct cnum_t FN(from_urange)(ut min, ut max)
return (struct cnum_t){ .base = min, .size = (ut)max - min };
struct cnum_t FN(from_srange)(st min, st max)
return (struct cnum_t){ .base = base, .size = size };
static inline bool FN(urange_overflow)(struct cnum_t cnum)
ut FN(umin)(struct cnum_t cnum)
ut FN(umax)(struct cnum_t cnum)
static inline bool FN(srange_overflow)(struct cnum_t cnum)
st FN(smin)(struct cnum_t cnum)
st FN(smax)(struct cnum_t cnum)
struct cnum_t FN(intersect)(struct cnum_t a, struct cnum_t b)
struct cnum_t b1;