Finds orthogonal matrices that diagonalize both mat1 and mat2.
cirq.bidiagonalize_real_matrix_pair_with_symmetric_products(
mat1: np.ndarray,
mat2: np.ndarray,
*,
rtol: float = 1e-05,
atol: float = 1e-08,
check_preconditions: bool = True
) -> Tuple[np.ndarray, np.ndarray]
Requires mat1 and mat2 to be real.
Requires mat1.T @ mat2 to be symmetric.
Requires mat1 @ mat2.T to be symmetric.
Args |
mat1
|
One of the real matrices.
|
mat2
|
The other real matrix.
|
rtol
|
Relative numeric error threshold.
|
atol
|
Absolute numeric error threshold.
|
check_preconditions
|
If set, verifies that the inputs are real, and that
mat1.T @ mat2 and mat1 @ mat2.T are both symmetric. Defaults to set.
|
Returns |
A tuple (L, R) of two orthogonal matrices, such that both L @ mat1 @ R
and L @ mat2 @ R are diagonal matrices.
|
Raises |
ValueError
|
Matrices don't meet preconditions (e.g. not real).
|