cirq.bidiagonalize_real_matrix_pair_with_symmetric_products¶
-
cirq.bidiagonalize_real_matrix_pair_with_symmetric_products(mat1: numpy.ndarray, mat2: numpy.ndarray, tolerance: cirq.linalg.tolerance.Tolerance = Tolerance(rtol=1e-05, atol=1e-08, equal_nan=False)) → Tuple[numpy.ndarray, numpy.ndarray][source]¶ Finds orthogonal matrices that diagonalize both mat1 and mat2.
Requires mat1 and mat2 to be real.Requires mat1.T @ mat2 to be symmetric.Requires mat1 @ mat2.T to be symmetric.Parameters: - mat1 – One of the real matrices.
- mat2 – The other real matrix.
- tolerance – Numeric error thresholds.
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).ArithmeticError– Failed to meet specified tolerance.