def test_inner_product(): i, j, k, l = symbols("i,j,k,l") s1 = BBra([0]) s2 = BKet([1]) assert InnerProduct(s1, Dagger(s1)) == 1 assert InnerProduct(s1, s2) == 0 s1 = BBra([i, j]) s2 = BKet([k, l]) r = InnerProduct(s1, s2) assert r == KroneckerDelta(i, k) * KroneckerDelta(j, l)
def test_symbolic_matrix_elements(): n, m = symbols("n,m") s1 = BBra([n]) s2 = BKet([m]) o = B(0) e = apply_operators(s1 * o * s2) assert e == sqrt(m) * KroneckerDelta(n, m - 1)
def test_dagger(): i, j, n, m = symbols('i,j,n,m') assert Dagger(1) == 1 assert Dagger(1.0) == 1.0 assert Dagger(2 * I) == -2 * I assert Dagger(Rational(1, 2) * I / 3.0) == -Rational(1, 2) * I / 3.0 assert Dagger(BKet([n])) == BBra([n]) assert Dagger(B(0)) == Bd(0) assert Dagger(Bd(0)) == B(0) assert Dagger(B(n)) == Bd(n) assert Dagger(Bd(n)) == B(n) assert Dagger(B(0) + B(1)) == Bd(0) + Bd(1) assert Dagger(n * m) == Dagger(n) * Dagger(m) # n, m commute assert Dagger(B(n) * B(m)) == Bd(m) * Bd(n) assert Dagger(B(n)**10) == Dagger(B(n))**10
def test_dagger(): i, j, n, m = symbols("i,j,n,m") assert Dagger(1) == 1 assert Dagger(1.0) == 1.0 assert Dagger(2 * I) == -2 * I assert Dagger(S.Half * I / 3.0) == I * Rational(-1, 2) / 3.0 assert Dagger(BKet([n])) == BBra([n]) assert Dagger(B(0)) == Bd(0) assert Dagger(Bd(0)) == B(0) assert Dagger(B(n)) == Bd(n) assert Dagger(Bd(n)) == B(n) assert Dagger(B(0) + B(1)) == Bd(0) + Bd(1) assert Dagger(n * m) == Dagger(n) * Dagger(m) # n, m commute assert Dagger(B(n) * B(m)) == Bd(m) * Bd(n) assert Dagger(B(n) ** 10) == Dagger(B(n)) ** 10 assert Dagger("a") == Dagger(Symbol("a")) assert Dagger(Dagger("a")) == Symbol("a")