Finds orthogonal matrices L, R such that L @ matrix @ R is diagonal.
cirq.bidiagonalize_unitary_with_special_orthogonals(
mat: np.ndarray,
*,
rtol: float = 1e-05,
atol: float = 1e-08,
check_preconditions: bool = True
) -> Tuple[np.ndarray, np.ndarray, np.ndarray]
Args |
mat
|
A unitary matrix.
|
rtol
|
Relative numeric error threshold.
|
atol
|
Absolute numeric error threshold.
|
check_preconditions
|
If set, verifies that the input is a unitary matrix
(to the given tolerances). Defaults to set.
|
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).
|