def test_is_normal_ordered_empty(self): op = FermionOperator() * 2 self.assertTrue(op.is_normal_ordered())
def test_number_operator_site(self): op = number_operator(3, 2, 1j) self.assertTrue(op.isclose(FermionOperator(((2, 1), (2, 0))) * 1j))
def test_number_operator_nosite(self): op = number_operator(4) expected = (FermionOperator(((0, 1), (0, 0))) + FermionOperator( ((1, 1), (1, 0))) + FermionOperator( ((2, 1), (2, 0))) + FermionOperator(((3, 1), (3, 0)))) self.assertTrue(op.isclose(expected))
def test_freeze_orbitals_nonvanishing(self): op = FermionOperator(((1, 1), (1, 0), (0, 1), (2, 0))) op_frozen = freeze_orbitals(op, [1]) expected = FermionOperator(((0, 1), (1, 0)), -1) self.assertTrue(op_frozen.isclose(expected))
def test_freeze_orbitals_vanishing(self): op = FermionOperator(((1, 1), (2, 0))) op_frozen = freeze_orbitals(op, [], [2]) self.assertEquals(len(op_frozen.terms), 0)
def test_is_molecular_term_three(self): op = FermionOperator(((0, 1), (2, 1), (4, 0))) self.assertFalse(op.is_molecular_term())
def test_is_molecular_term_out_of_order(self): op = FermionOperator(((0, 1), (2, 0), (1, 1), (3, 0))) self.assertTrue(op.is_molecular_term())
def test_is_molecular_term_downup_badspin(self): op = FermionOperator(((2, 0), (3, 1))) self.assertFalse(op.is_molecular_term())
def test_is_molecular_term_downup(self): op = FermionOperator(((2, 0), (4, 1))) self.assertTrue(op.is_molecular_term())
def test_is_molecular_term_FermionOperator(self): op = FermionOperator() self.assertTrue(op.is_molecular_term())
def test_normal_ordered_multi(self): op = FermionOperator(((2, 0), (1, 1), (2, 1))) expected = (-FermionOperator( ((2, 1), (1, 1), (2, 0))) - FermionOperator(((1, 1), ))) self.assertTrue(expected.isclose(normal_ordered(op)))
def test_normal_ordered_double_create_separated(self): op = FermionOperator(((3, 1), (2, 0), (3, 1))) expected = FermionOperator((), 0.0) self.assertTrue(expected.isclose(normal_ordered(op)))