How about a boolean value for `complexOP`? By default it can be false, but is set to true if necessary.

Another option could be that the user when passing in an `AbstractMatrix` is required to define `isreal` for it, and we just call `isreal`.

Often, people want to pass in a function for A instead of an `AbstractMatrix`, and we need to think through that interface a bit.