__type_half_max
#define __type_half_max(type) ((type)1 << (8*sizeof(type) - 1 - is_signed_type(type)))