cirq.protocols.unitary

Returns a unitary matrix describing the given value.

Used in the notebooks

Used in the tutorials

The matrix is determined by any one of the following techniques:

  • The value has a _unitary_ method that returns something besides None or NotImplemented. The matrix is whatever the method returned.
  • The value has a _decompose_ method that returns a list of operations, and each operation in the list has a unitary effect. The matrix is created by aggregating the sub-operations' unitary effects.
  • The value has an _apply_unitary_ method, and it returns something besides None or NotImplemented. The matrix is created by applying _apply_unitary_ to an identity matrix.

If none of these techniques succeeds, it is assumed that val doesn't have a unitary effect. The order in which techniques are attempted is unspecified.

val The value to describe with a unitary matrix.
default Determines the fallback behavior when val doesn't have a unitary effect. If default is not set, a TypeError is raised. If default is set to a value, that value is returned.

If val has a unitary effect, the corresponding unitary matrix. Otherwise, if default is specified, it is returned.

TypeError val doesn't have a unitary effect and no default value was specified.