def _is_cp_helper(self, choi, atol, rtol): """Test if a channel is completely-positive (CP)""" if atol is None: atol = self.atol if rtol is None: rtol = self.rtol return is_positive_semidefinite_matrix(choi, rtol=rtol, atol=atol)
def _is_cp(self, choi=None): """Test if a channel is completely-positive (CP)""" if choi is None: choi = _to_choi(self.rep, self._data, *self.dim) return is_positive_semidefinite_matrix(choi, rtol=self._rtol, atol=self._atol)
def is_valid(self, atol=None, rtol=None): """Return True if trace 1 and positive semidefinite.""" if atol is None: atol = self.atol if rtol is None: rtol = self.rtol # Check trace == 1 if not np.allclose(self.trace(), 1, rtol=rtol, atol=atol): return False # Check Hermitian if not is_hermitian_matrix(self.data, rtol=rtol, atol=atol): return False # Check positive semidefinite return is_positive_semidefinite_matrix(self.data, rtol=rtol, atol=atol)
def _is_cp(self): """Test if Choi-matrix is completely-positive (CP)""" return is_positive_semidefinite_matrix( self._data, rtol=self.rtol, atol=self.atol)