I have 2 user-defined types, and simple arithmetic working for the cases I registered with PyUFunc_RegisterLoopForType. I'd like to use automatic conversion to do mixed arithmetic between these 2 types. I did PyArray_RegisterCastFunc, and it seems this allows explicit conversion:

a array([(0,0), (1,0), (2,0), (3,0), (4,0), (5,0), (6,0), (7,0), (8,0), (9,0)], dtype=cmplx_int32) b array([(0,0), (1,0), (2,0), (3,0), (4,0), (5,0), (6,0), (7,0), (8,0), (9,0)], dtype=cmplx_int64) array (a,dtype=b.dtype) array([(0,0), (1,0), (2,0), (3,0), (4,0), (5,0), (6,0), (7,0), (8,0), (9,0)], dtype=cmplx_int64)

But mixed mode arithmetic gives: a+b TypeError: function not supported for these types, and can't coerce safely to supported types I've been trying to understand this 'coerce' without much luck. Any clues what I need to do here?