OK, but `Complex` should probably gain an `opEquals` for imaginary types, as it already has one for numerical types.