in Chemistry/src/DataModel/QSharpFormat/QSharpFormatPauliHamiltonian.cs [38:71]
public static (Double, Int64, JWOptimizedHTerms) ToQSharpFormat(this PauliHamiltonian pauliHamiltonian)
{
var energyOffset = 0.0;
if (pauliHamiltonian.Terms.ContainsKey(TermType.PauliTerm.Identity))
{
energyOffset = pauliHamiltonian.Terms[TermType.PauliTerm.Identity].Values.First().Value.First();
}
var nSpinOrbitals = pauliHamiltonian.SystemIndices.Max() + 1;
var hZ = CreateHTermList(pauliHamiltonian,TermType.PauliTerm.Z);
var hZZ = CreateHTermList(pauliHamiltonian,TermType.PauliTerm.ZZ);
var hPQ = CreateHTermList(pauliHamiltonian,TermType.PauliTerm.PQ);
var hPQQR = CreateHTermList(pauliHamiltonian,TermType.PauliTerm.PQQR);
var hv0123 = CreateHTermList(pauliHamiltonian,TermType.PauliTerm.v01234);
var hPQandPQQR = hPQ.Concat(hPQQR).ToList();
// Sort terms into desired order.
hZ.Sort(new HTermIndexIComparer());
hZZ.Sort(new HTermIndexIComparer());
hPQandPQQR.Sort(new HPQandPQQRIComparer());
hv0123.Sort(new HTermIndexIComparer());
return (
energyOffset,
nSpinOrbitals,
new JWOptimizedHTerms((
new QArray<HTerm>(hZ),
new QArray<HTerm>(hZZ),
new QArray<HTerm>(hPQandPQQR),
new QArray<HTerm>(hv0123)))
);
}