void CountTerms() { var hamiltonian = new OrbitalIntegralHamiltonian(); hamiltonian.AddRange(orbitalIntegrals.Select(o => (o, o.Coefficient.ToDoubleCoeff()))); var oneNorm = hamiltonian.Norm(); Assert.Equal(orbitalIntegrals.Count(), hamiltonian.CountTerms()); hamiltonian.AddRange(orbitalIntegrals.Select(o => (o, o.Coefficient.ToDoubleCoeff()))); Assert.Equal(orbitalIntegrals.Count(), hamiltonian.CountTerms()); hamiltonian.AddRange(orbitalIntegrals.Select(o => (o, o.Coefficient.ToDoubleCoeff()))); Assert.Equal(orbitalIntegrals.Count(), hamiltonian.CountTerms()); hamiltonian.AddRange(orbitalIntegrals.Select(o => (o, o.Coefficient.ToDoubleCoeff()))); Assert.Equal(orbitalIntegrals.Count(), hamiltonian.CountTerms()); }
public void MakeHamiltonian() { // We create a `FermionHamiltonian` object to store the terms. var hamiltonian = new OrbitalIntegralHamiltonian( new[] { new OrbitalIntegral(new[] { 0, 1, 2, 3 }, 0.123), new OrbitalIntegral(new[] { 0, 1 }, 0.456) } ) .ToFermionHamiltonian(IndexConvention.UpDown); // We convert this fermion Hamiltonian to a Jordan–Wigner representation. var jordanWignerEncoding = hamiltonian.ToPauliHamiltonian(QubitEncoding.JordanWigner); // We now convert this representation into a format consumable by Q#. var qSharpData = jordanWignerEncoding.ToQSharpFormat(); Assert.Equal(10, hamiltonian.CountTerms()); Assert.Equal(6, jordanWignerEncoding.CountTerms()); }