"Testing relational operators"

clear

check(test(a + 1 < a + 2,"yes","no") == "yes")
check(test(exp(1) < pi, "yes","no") == "yes")

T = 1==1
check(T = 1)
T = 1==2
check(T = 0)
T = 1>=1
check(T = 1)
T = 1>=2
check(T = 0)
T = 2>=1
check(T = 1)
T = 1>1
check(T = 0)
T = 1>2
check(T = 0)
T = 2>1
check(T = 1)
T = 1<=1
check(T = 1)
T = 1<=2
check(T = 1)
T = 2<=1
check(T = 0)
T = 1<1
check(T = 0)
T = 1<2
check(T = 1)
T = 2<1
check(T = 0)

clear

r = sqrt(x^2 + y^2 + z^2)

Px(f) = -i hbar d(f,x)
Py(f) = -i hbar d(f,y)
Pz(f) = -i hbar d(f,z)

Lx(f) = -i hbar (y d(f,z) - z d(f,y))
Ly(f) = -i hbar (z d(f,x) - x d(f,z))
Lz(f) = -i hbar (x d(f,y) - y d(f,x))

Ax(f) = 1 / m (Py(Lz(f)) - Pz(Ly(f))) -
        i hbar / m Px(f) - kappa / r x f

Ay(f) = 1 / m (Pz(Lx(f)) - Px(Lz(f))) -
        i hbar / m Py(f) - kappa / r y f

Az(f) = 1 / m (Px(Ly(f)) - Py(Lx(f))) -
        i hbar / m Pz(f) - kappa / r z f

P2(f) = Px(Px(f)) + Py(Py(f)) + Pz(Pz(f))
L2(f) = Lx(Lx(f)) + Ly(Ly(f)) + Lz(Lz(f))
A2(f) = Ax(Ax(f)) + Ay(Ay(f)) + Az(Az(f))

H(f) = 1 / (2 m) P2(f) - kappa / r f

psi = f(x,y,z)

check(A2(psi) == 2 / m H(L2(psi) + hbar^2 psi) + kappa^2 psi)

-- tensor equality test

clear

A = ((0,0,0,0),(0,2 M / (r^3 (-2 M / r + 1)) + r^(-2) - 1 / (r^2 (-2 M / r + 1)),0,0),(0,0,0,0),(0,0,0,0))
check(A == 0)
check(0 == A)
check(A == zero(4,4))
check(zero(4,4) == A)
B = A
check(A == B)
B[1,1] = 1
check(not(A == B))

clear

-- dirac from boost
-- requires "shortcut" in eval_testeq()

A = ((E + m, 0, pz, 0),
     (0, E + m, 0, -pz),
     (pz, 0, E + m, 0),
     (0, -pz, 0, E + m)) / sqrt(E + m) / sqrt(2 m)

gamma0 = ((1,0,0,0),(0,1,0,0),(0,0,-1,0),(0,0,0,-1))
pslash = m dot(A,gamma0,inv(A))
check(1/m dot(pslash,A) == dot(A,gamma0))
