-
Notifications
You must be signed in to change notification settings - Fork 56
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
Wrong parameter for GroupExponentialRetraction
#682
Comments
You're right,
This looks like the right solution 👍 . It's technically breaking but I'd consider it a bugfix so we could do it without a breaking release.
Yes, it is currently superfluous. Originally when it was introduced we didn't have right-forward and left-backward actions so it was useful but right now is should be deprecated in favor of |
I did not fully follow up on the 0.10 rework, but was this one resolved? |
No, this is independent from the 0.10 rework. This is a bug that still is to be fixed: using |
Ah I see, then let's keep this open until we remove the group exponential retraction here, when we have an analogue in Lie groups. |
Actually, i realise now that these retractions should not depend on any such parameter at all. I will try to fix that. |
Currently,
GroupExponentialRetraction
depends on a typeActionDirectionAndSide
, but, unless I am mistaken, it should only depend onGroupActionSide
.Put differently, the
GroupExponentialRetraction{LeftBackwardAction}
andGroupExponentialRetraction{RightForwardAction}
make no sense.Indeed: in the code to
retract
, there is a call toinverse_translate_diff(G, p, p, X, conv)
, which is supposed to send the tangent vectorX
to the Lie algebra. But this only holds ifconv
is eitherLeftForwardAction
orRightBackwardAction
.Suggested solution:
Implement the generally useful
translate_to_id
which translates a tangent vector to the identity (to the Lie algebra) like sothen change the implementation of
GroupExponentialRetraction
asthen essentially keep the current implementation of
retract
asNote 1 there is probably exactly the same problem (solved in the same manner) for
GroupLogarithmicInverseRetraction
.Note 2
inverse_translate_diff
may be superfluous in general, or at least it should be implemented asinverse_translate_diff(G, p, q, X, conv) = inverse_translate_diff(G, p, q, X, switch_direction(conv))
.Let me know if the problem and/or the solution make any sense to you.
The text was updated successfully, but these errors were encountered: