type_properties
#define size_in_bits(t) (type_properties(t)->tt_size_in_bits)
#define signed_type(t) (type_properties(t)->tt_signed_counterpart)
#define unsigned_type(t) (type_properties(t)->tt_unsigned_counterpart)
#define is_integer(t) (type_properties(t)->tt_is_integer)
#define is_uinteger(t) (type_properties(t)->tt_is_uinteger)
#define is_floating(t) (type_properties(t)->tt_is_floating)
#define is_arithmetic(t) (type_properties(t)->tt_is_arithmetic)
#define is_complex(t) (type_properties(t)->tt_is_complex)
#define is_scalar(t) (type_properties(t)->tt_is_scalar)
const ttab_t *p1 = type_properties(t1), *p2 = type_properties(t2);
enum rank_kind rk1 = type_properties(nst)->tt_rank_kind;
enum rank_kind rk2 = type_properties(ost)->tt_rank_kind;