maximum-number-type does not take into account complex float types
Function is used to compute the output type of arithmetic operation between two types using the rules of floating point contagion. Function should work also for gencomplex and complex-float types. Results of this function are used for type propagation.
Bonus points come for computing precise types (I'm not sure how feasible that would be, surely to compute correct boundaries we'd need to provide the operation type, i.e (c::max-nt '(integer 0 10) '(float 3.14 22.23) :op '+)
-> (float 3.14 32.23)
).
(c::maximum-number-type 'integer '(complex single-float))
;-> number integer number
;expected -> (complex single-float) integer (complex single-float)