Comment 7 for bug 1733400

Stas Boukarev (stassats) wrote :

I don't think that there's actually any ambiguity anymore.
"(typep object '(complex type-specifier)) returns true for all complex numbers that can result from giving numbers of type type-specifier to the function
complex, plus all other complex numbers of the same specialized representation. Both the real and the imaginary parts of any such complex number must

 (typep realpart 'type-specifier)
 (typep imagpart 'type-specifier)"

None of the sentences contradict each other, but when you combine them all you get a restricted space of (and (typep realpart 'type-specifier) (typep imagpart 'type-specifier)) it was probably worded that way to handle (complex float), and it's even stated that array and complex types are handled differently.
"The small differences between the subtypep specification for the array and complex types are necessary because there is no creation function for complexes
which allows the specification of the resultant part type independently of the actual types of the parts."