public static()

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)))
                );
        }