def _custom_density_matrix_call(self, state): state = self.gate_op(state, self.cache.qubits_tensor + self.nqubits, 2 * self.nqubits, *self.target_qubits, K.get_threads()) matrix = K.conj(K.matrices.Y) state = K.op.apply_gate(state, matrix, self.cache.qubits_tensor, 2 * self.nqubits, *self.cache.target_qubits_dm, K.get_threads()) return state
def density_matrix_call(self, state): if K.name == "custom": return self.gate_op(state, self.matrix, self.cache.qubits_tensor, 2 * self.nqubits, *self.cache.target_qubits_dm, K.get_threads()) return K.state_vector_call(self, state)