I don't see the justification of having an opEquals for real types (complex with imaginary part == 0 versus numeric) but not for imaginary.  Seems to me it should be either both or neither, but if the verdict is, "Don't add to the existing mistake", I'll go with that :-)