Transforms a Hamiltonian written in fermionic basis into a Hamiltonian written in qubit basis, via a binary code.

Used in the notebooks

Used in the tutorials

The role of the binary code is to relate the occupation vectors (v0 v1 v2 ... vN-1) that span the fermionic basis, to the qubit basis, spanned by binary vectors (w0, w1, w2, ..., wn-1).

The binary code has to provide an analytic relation between the binary vectors (v0, v1, ..., vN-1) and (w0, w1, ..., wn-1), and possibly has the property N>n, when the Fermion basis is smaller than the fermionic Fock space. The binary_code_transform function can transform Fermion operators to qubit operators for custom- and qubit-saving mappings.

Logic multi-qubit operators are decomposed into Pauli-strings (e.g. CPhase(1,2) = 0.5 * (1 + Z1 + Z2 - Z1 Z2 ) ), which might increase the number of Hamiltonian terms drastically.

hamiltonian FermionOperator

the fermionic Hamiltonian

code BinaryCode

the binary code to transform the Hamiltonian

Returns (QubitOperator): the transformed Hamiltonian

TypeError if the hamiltonian is not a FermionOperator or code is not a BinaryCode