diff --git a/cirq-core/cirq/ops/pauli_interaction_gate.py b/cirq-core/cirq/ops/pauli_interaction_gate.py index 09049390246..f6a0eb71bc8 100644 --- a/cirq-core/cirq/ops/pauli_interaction_gate.py +++ b/cirq-core/cirq/ops/pauli_interaction_gate.py @@ -24,7 +24,7 @@ if TYPE_CHECKING: import cirq -PAULI_EIGEN_MAP: Dict[pauli_gates.Pauli, np.ndarray] = { +PAULI_EIGEN_MAP: Dict[pauli_gates.Pauli, Tuple[np.ndarray, np.ndarray]] = { pauli_gates.X: (np.array([[0.5, 0.5], [0.5, 0.5]]), np.array([[0.5, -0.5], [-0.5, 0.5]])), pauli_gates.Y: (np.array([[0.5, -0.5j], [0.5j, 0.5]]), np.array([[0.5, 0.5j], [-0.5j, 0.5]])), pauli_gates.Z: (np.diag([1, 0]), np.diag([0, 1])), diff --git a/cirq-core/cirq/protocols/apply_channel_protocol.py b/cirq-core/cirq/protocols/apply_channel_protocol.py index e1f9a282b89..067615dd36e 100644 --- a/cirq-core/cirq/protocols/apply_channel_protocol.py +++ b/cirq-core/cirq/protocols/apply_channel_protocol.py @@ -162,7 +162,9 @@ def _apply_channel_( def apply_channel( - val: Any, args: ApplyChannelArgs, default: TDefault = RaiseTypeErrorIfNotProvided + val: Any, + args: ApplyChannelArgs, + default: Union[np.ndarray, TDefault] = RaiseTypeErrorIfNotProvided, ) -> Union[np.ndarray, TDefault]: """High performance evolution under a channel evolution. diff --git a/cirq-core/cirq/protocols/apply_mixture_protocol.py b/cirq-core/cirq/protocols/apply_mixture_protocol.py index 46dd83ece1d..853d2be008f 100644 --- a/cirq-core/cirq/protocols/apply_mixture_protocol.py +++ b/cirq-core/cirq/protocols/apply_mixture_protocol.py @@ -155,7 +155,10 @@ def _apply_mixture_( def apply_mixture( - val: Any, args: ApplyMixtureArgs, *, default: TDefault = RaiseTypeErrorIfNotProvided + val: Any, + args: ApplyMixtureArgs, + *, + default: Union[np.ndarray, TDefault] = RaiseTypeErrorIfNotProvided, ) -> Union[np.ndarray, TDefault]: """High performance evolution under a mixture of unitaries evolution. @@ -357,9 +360,7 @@ def _apply_unitary_from_matrix_strat( return args.target_tensor -def _mixture_strat( - val: Any, args: 'ApplyMixtureArgs', is_density_matrix: bool -) -> Optional[np.ndarray]: +def _mixture_strat(val: Any, args: 'ApplyMixtureArgs', is_density_matrix: bool) -> np.ndarray: """Attempt to use unitary matrices in _mixture_ and return the result.""" args.out_buffer[:] = 0 np.copyto(dst=args.auxiliary_buffer1, src=args.target_tensor) diff --git a/cirq-core/cirq/protocols/apply_unitary_protocol.py b/cirq-core/cirq/protocols/apply_unitary_protocol.py index 3f8a36bf004..61881eddbf6 100644 --- a/cirq-core/cirq/protocols/apply_unitary_protocol.py +++ b/cirq-core/cirq/protocols/apply_unitary_protocol.py @@ -277,7 +277,7 @@ def _apply_unitary_( def apply_unitary( unitary_value: Any, args: ApplyUnitaryArgs, - default: TDefault = RaiseTypeErrorIfNotProvided, + default: Union[np.ndarray, TDefault] = RaiseTypeErrorIfNotProvided, *, allow_decompose: bool = True, ) -> Union[np.ndarray, TDefault]: diff --git a/cirq-core/cirq/protocols/commutes_protocol.py b/cirq-core/cirq/protocols/commutes_protocol.py index d040c8cae28..95914f6610e 100644 --- a/cirq-core/cirq/protocols/commutes_protocol.py +++ b/cirq-core/cirq/protocols/commutes_protocol.py @@ -78,7 +78,7 @@ def commutes( v2: Any, *, atol: Union[int, float] = 1e-8, - default: TDefault = RaiseTypeErrorIfNotProvided, + default: Union[bool, TDefault] = RaiseTypeErrorIfNotProvided, ) -> Union[bool, TDefault]: """Determines whether two values commute. diff --git a/cirq-core/cirq/protocols/unitary_protocol.py b/cirq-core/cirq/protocols/unitary_protocol.py index ecc38214e9f..e5acd30e7df 100644 --- a/cirq-core/cirq/protocols/unitary_protocol.py +++ b/cirq-core/cirq/protocols/unitary_protocol.py @@ -77,7 +77,7 @@ def _has_unitary_(self) -> bool: def unitary( - val: Any, default: TDefault = RaiseTypeErrorIfNotProvided + val: Any, default: Union[np.ndarray, TDefault] = RaiseTypeErrorIfNotProvided ) -> Union[np.ndarray, TDefault]: """Returns a unitary matrix describing the given value. diff --git a/cirq-core/cirq/sim/sparse_simulator_test.py b/cirq-core/cirq/sim/sparse_simulator_test.py index 764f3c0abaa..3300170efeb 100644 --- a/cirq-core/cirq/sim/sparse_simulator_test.py +++ b/cirq-core/cirq/sim/sparse_simulator_test.py @@ -331,7 +331,9 @@ def test_simulate_random_unitary(dtype: Type[np.complexfloating], split: bool): result = simulator.simulate(random_circuit, qubit_order=[q0, q1], initial_state=x) circuit_unitary.append(result.final_state_vector) np.testing.assert_almost_equal( - np.transpose(circuit_unitary), random_circuit.unitary(qubit_order=[q0, q1]), decimal=6 + np.transpose(np.array(circuit_unitary)), + random_circuit.unitary(qubit_order=[q0, q1]), + decimal=6, ) diff --git a/cirq-google/cirq_google/ops/fsim_gate_family.py b/cirq-google/cirq_google/ops/fsim_gate_family.py index f81704088e6..d322569a754 100644 --- a/cirq-google/cirq_google/ops/fsim_gate_family.py +++ b/cirq-google/cirq_google/ops/fsim_gate_family.py @@ -42,7 +42,7 @@ def _exp(theta: Union[complex, sympy.Basic]): """Utility method to return exp(theta) using numpy or sympy, depending on the type of theta.""" - return sympy.exp(theta) if cirq.is_parameterized(theta) else np.exp(theta) + return sympy.exp(theta) if cirq.is_parameterized(theta) else np.exp(cast(complex, theta)) def _gates_to_str(gates: Iterable[Any], gettr: Callable[[Any], str] = _gate_str) -> str: @@ -360,7 +360,7 @@ def _convert_to_fsim(self, g: POSSIBLE_FSIM_GATES) -> Optional[cirq.FSimGate]: def _convert_to_phased_fsim(self, g: POSSIBLE_FSIM_GATES) -> Optional[cirq.PhasedFSimGate]: if isinstance(g, cirq.PhasedFSimGate): return g - chi = 0 + chi = 0.0 if isinstance(g, cirq.PhasedISwapPowGate): chi = g.phase_exponent * 2 * np.pi g = g._iswap @@ -376,7 +376,7 @@ def _convert_to_iswap(self, g: POSSIBLE_FSIM_GATES) -> Optional[cirq.ISwapPowGat return ( None if (fsim is None or not self._approx_eq_or_symbol(fsim.phi, 0)) - else cirq.ISWAP ** (-2 * fsim.theta / np.pi) + else cirq.ISwapPowGate(exponent=-2 * fsim.theta / np.pi) ) def _convert_to_phased_iswap(self, g: POSSIBLE_FSIM_GATES) -> Optional[cirq.PhasedISwapPowGate]: @@ -400,7 +400,7 @@ def _convert_to_cz(self, g: POSSIBLE_FSIM_GATES) -> Optional[cirq.CZPowGate]: return ( None if (cg is None or not self._approx_eq_or_symbol(cg.theta, 0)) - else cirq.CZ ** (-cg.phi / np.pi) + else cirq.CZPowGate(exponent=-cg.phi / np.pi) ) def _convert_to_identity(self, g: POSSIBLE_FSIM_GATES) -> Optional[cirq.IdentityGate]: diff --git a/cirq-google/cirq_google/optimizers/two_qubit_gates/example.py b/cirq-google/cirq_google/optimizers/two_qubit_gates/example.py index 96845771bc2..16ccb216cb1 100644 --- a/cirq-google/cirq_google/optimizers/two_qubit_gates/example.py +++ b/cirq-google/cirq_google/optimizers/two_qubit_gates/example.py @@ -80,16 +80,16 @@ def main(samples: int = 1000, max_infidelity: float = 0.01): print(f'Gate compilation time : {t_comp:.3f} seconds ({t_comp / samples:.4f} s per gate)') - infidelities = np.array(infidelities) - failed_infidelities = np.array(failed_infidelities) + infidelities_arr = np.array(infidelities) + failed_infidelities_arr = np.array(failed_infidelities) - if np.size(failed_infidelities): + if np.size(failed_infidelities_arr): # coverage: ignore - print(f'Number of "failed" compilations: {np.size(failed_infidelities)}.') - print(f'Maximum infidelity of "failed" compilation: {np.max(failed_infidelities)}') + print(f'Number of "failed" compilations: {np.size(failed_infidelities_arr)}.') + print(f'Maximum infidelity of "failed" compilation: {np.max(failed_infidelities_arr)}') plt.figure() - plt.hist(infidelities, bins=25, range=[0, max_infidelity * 1.1]) + plt.hist(infidelities_arr, bins=25, range=[0, max_infidelity * 1.1]) ylim = plt.ylim() plt.plot([max_infidelity] * 2, ylim, '--', label='Maximum tabulation infidelity') plt.xlabel('Compiled gate infidelity vs target')