Skip to content

Lt spinor constructor gives wrong results for non-normalized rotors #462

@eric-wieser

Description

@eric-wieser

It seems that a multiplication by (R * ~R) is happening when a division should be

>>> base = Ga('a b', g=[1, 1], coords=symbols('x, y', real=True))
>>> a, b = base.mv()
>>> R = base.mv('R', 'spinor')
>>> f = base.lt(R)

>>> R * a * R.inv()  # expected result of a rotor transform
(R**2 - R__xy**2)*a/(R**2 + R__xy**2) - 2*R*R__xy*b/(R**2 + R__xy**2)
>>> (R * a * ~R) / (R * ~R)  # equivalent formulation
(R**2 - R__xy**2)*a/(R**2 + R__xy**2) - 2*R*R__xy*b/(R**2 + R__xy**2)

>>> f(a)  # actual result of a rotor transform
(R**4 - R__xy**4)*a - 2*R*R__xy*(R**2 + R__xy**2)*b
>>> (R * a * ~R) * (R * ~R)  # computation method
(R**4 - R__xy**4)*a - 2*R*R__xy*(R**2 + R__xy**2)*b

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions