# Is there a Hamiltonian simulation technique implemented somewhere?

I was wondering if there was some code available for Hamiltonian simulation for sparse matrix. And also if they exist, they correspond to a divide and conquer approach or a Quantum walk approach?

In this article the authors stated that they used this Group Leader's algorithm in order to obtain the circuit implementing the hamiltonian simulation used as a subroutine in an instance of HHL algorithm.

Unfortunately though, I did not understand quite well how they actually managed to find the circuit with that method.

• I know this one and I understand it well. I even did an implementation on it. But I want actually something that is not using this one. Either divide and conquer algorithms or quantum walks with a real code. The GLOA can be long to run actually. – cnada Aug 14 '18 at 13:16

Update on the subject: there are several implementations in the wild. I don't know if you still need them, but even if you don't it will hopefully be useful to other people.

I chose to list the implementations by "provenance" rather than by the algorithm used because there are not that much implementations. This may change in the future.

1. Qiskit-aqua: Qiskit is the library of IBM for quantum computing. Qiskit-aqua is the part of the library that deals with quantum algorithms.

The Qiskit-aqua implementation can only simulate Hamiltonians that are a sum of hermitian matrices that can be written as tensor products of Pauli operators. To do so, they used the Trotter-Suzuki formula.

The implementation is available here (method evolve in the class qiskit.aqua.operator.Operator).

2. simcount: Implementation of 3 hamiltonian simulation algorithms for a specific kind of hamiltonian. Based on Quipper. All their work is explained in the paper Toward the first quantum simulation with quantum speedup (Andrew M. Childs, Dmitri Maslov, Yunseong Nam, Neil J. Ross, Yuan Su, 2017).

The 3 algorithms (and their variations) implemented in the repository have been optimised for a very specific Hamiltonian $$H = \sum_{j=1}^n \left( \vec{\sigma}_j \cdot{} \vec{\sigma}_{j+1} + h_j \sigma_j^z \right).$$

The implementations are available here.