Returns a phased version of the effect.

For example, an X gate phased by 90 degrees would be a Y gate. This works by calling val's _phaseby method and returning the result.

val The value to describe with a unitary matrix.
phase_turns The amount to phase the gate, in fractions of a whole turn. Multiply by 2π to get radians.
qubit_index The index of the target qubit the phasing applies to. For operations this is the index of the qubit within the operation's qubit list. For gates it's the index of the qubit within the tuple of qubits taken by the gate's on method.
default The default value to return if val can't be phased. If not specified, an error is raised when val can't be phased.

If val has a _phaseby method and its result is not NotImplemented, that result is returned. Otherwise, the function will return the default value provided or raise a TypeError if none was provided.

TypeError val doesn't have a _phaseby method (or that method returned NotImplemented) and no default was specified.