Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Consistent action of conjugation #26

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

switzel
Copy link

@switzel switzel commented Sep 1, 2023

It should generally be true that

a.apply_to_point(b.apply_to_point(p)) == Transform.merge(a,b).apply_to_point(p)

(up to numerical error).

According to Transform.apply_to_tuple() a potential conjugation is first applied before the matrix is multiplied. Since the action is from the left this means that conjugation is on the right.

Thus in Transform.merge() conjugation has to be applied to the entries of the product of the factors to the right not to the left (see issue #24). This commit fixes this.

According to Transform.apply_to_tuple() a potential conjugation is first
applied before the matrix is multiplied. Since the action is from
the left this means that conjugation is on the right.

Thus in Transform.merge() conjugation has to be applied to the entries
of the product of the factors to the right not to the left. This commit
fixes this.
@@ -95,13 +95,13 @@ def identity():
def merge(*transfoms):
a,b,c,d = 1,0,0,1
conj = False
for i, trans in enumerate(transfoms):
for trans in reversed(transfoms):
a2,b2,c2,d2 = trans.abcd
if trans.conj:
a,b,c,d = (a.conjugate(), b.conjugate(), c.conjugate(),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you don't need the ( and ) here

a2,b2,c2,d2 = trans.abcd
if trans.conj:
a,b,c,d = (a.conjugate(), b.conjugate(), c.conjugate(),
d.conjugate())
conj = not conj
a,b,c,d = a*a2+c*b2, b*a2+d*b2, a*c2+c*d2, b*c2+d*d2
a,b,c,d = a2*a+b2*c, a2*b+b2*d, c2*a+d2*c, c2*b+d2*d
return Transform(a,b,c,d,conj=conj)
@staticmethod
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

leave a space between two methods

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants