Beispiel #1
0
 def test_mixed_unitary_error_raise_differnt_shape(self):
     """Test error is raised if input matrices different size"""
     unitaries = [np.eye(4), np.eye(2)]
     probs = [0.7, 0.4]
     noise_ops = [(unitaries[0], probs[0]), (unitaries[1], probs[1])]
     with self.assertRaises(NoiseError):
         mixed_unitary_error(noise_ops)
Beispiel #2
0
 def test_mixed_unitary_error_raise_nonunitary(self):
     """Test error is raised if input is not unitary."""
     A0 = [[1, 0], [0, np.sqrt(1 - 0.3)]]
     A1 = [[0, 0], [0, np.sqrt(0.3)]]
     noise_ops = [(A0, 0.5), (A1, 0.5)]
     with self.assertRaises(NoiseError):
         mixed_unitary_error(noise_ops)
Beispiel #3
0
 def test_mixed_unitary_error(self):
     """Test construction of mixed unitary error"""
     unitaries = [np.diag([1, -1]), np.eye(2)]
     probs = [0.3, 0.7]
     error = mixed_unitary_error([(unitaries[0], probs[0]),
                                  (unitaries[1], probs[1])])
     for i in [0, 1]:
         op, p = error.error_term(i)
         self.assertEqual(p, probs[i])
         self.assertTrue(np.allclose(op[0][0].to_matrix(), unitaries[i]))
 def test_mixed_unitary_error(self):
     """Test construction of mixed unitary error"""
     unitaries = [np.eye(2), np.diag([1, -1])]
     probs = [0.7, 0.3]
     error = mixed_unitary_error([(unitaries[0], probs[0]),
                                  (unitaries[1], probs[1])])
     (op0, p0) = error.error_term(0)
     (op1, p1) = error.error_term(1)
     self.assertEqual(op0[0], {"name": "z", "qubits": [0]})
     self.assertEqual(op1[0], {"name": "id", "qubits": [0]})
     self.assertEqual(p0, 0.3)
     self.assertEqual(p1, 0.7)
 def test_coherent_unitary_error(self):
     """Test coherent unitary error"""
     unitary = np.diag([1, -1, 1, -1])
     error = coherent_unitary_error(unitary)
     ref = mixed_unitary_error([(unitary, 1)])
     self.assertEqual(error.as_dict(), ref.as_dict())