cirq.bidiagonalize_unitary_with_special_orthogonals¶
-
cirq.bidiagonalize_unitary_with_special_orthogonals(mat: numpy.ndarray, tolerance: cirq.linalg.tolerance.Tolerance = Tolerance(rtol=1e-05, atol=1e-08, equal_nan=False)) → Tuple[numpy.ndarray, numpy.array, numpy.ndarray][source]¶ Finds orthogonal matrices L, R such that L @ matrix @ R is diagonal.
Parameters: - mat – A unitary matrix.
- tolerance – Numeric error thresholds.
Returns: A triplet (L, d, R) such that L @ mat @ R = diag(d). Both L and R will be orthogonal matrices with determinant equal to 1.
Raises: ValueError– Matrices don’t meet preconditions (e.g. not real).ArithmeticError– Failed to meet specified tolerance.