Exemplo n.º 1
0
 def __init__(self, nqubits, matrix):
     if not (isinstance(matrix, K.tensor_types) or K.issparse(matrix)):
         raise_error(
             TypeError, "Matrix of invalid type {} given during "
             "Hamiltonian initialization"
             "".format(type(matrix)))
     self.K = K
     matrix = self.K.cast(matrix)
     super().__init__(nqubits, matrix)
Exemplo n.º 2
0
 def __mul__(self, o):
     if isinstance(o, K.tensor_types):
         o = complex(o)
     elif not isinstance(o, K.numeric_types):
         raise_error(
             NotImplementedError, "Hamiltonian multiplication to {} "
             "not implemented.".format(type(o)))
     new_matrix = self.matrix * o
     r = self.__class__(self.nqubits, new_matrix)
     if self._eigenvalues is not None:
         if K.qnp.cast(o).real >= 0:
             r._eigenvalues = o * self._eigenvalues
         elif not K.issparse(self.matrix):
             r._eigenvalues = o * self._eigenvalues[::-1]
     if self._eigenvectors is not None:
         if K.qnp.cast(o).real > 0:
             r._eigenvectors = self._eigenvectors
         elif o == 0:
             r._eigenvectors = self.eye(int(self._eigenvectors.shape[0]))
     return r