From 0c5d1624794c147aa6db9e9d8eefc3abe3d1e386 Mon Sep 17 00:00:00 2001 From: Mateusz Baran Date: Fri, 23 Aug 2024 20:43:14 +0200 Subject: [PATCH] optimized defaults for inverse_translate_diff! of groups with left-invariant storage --- NEWS.md | 2 +- src/groups/group.jl | 44 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/NEWS.md b/NEWS.md index 1f1f55080..a242a2838 100644 --- a/NEWS.md +++ b/NEWS.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [0.10.0] – unreleased +## [0.10.0] – 2024-08-24 ### Changed diff --git a/src/groups/group.jl b/src/groups/group.jl index 537e50436..02438a70b 100644 --- a/src/groups/group.jl +++ b/src/groups/group.jl @@ -1081,6 +1081,50 @@ function inverse_translate_diff!( BG = base_group(G) return translate_diff!(BG, Y, inv(BG, p), q, X, conv) end +function inverse_translate_diff!( + ::TraitList{<:IsGroupManifold{<:AbstractGroupOperation,LeftInvariantRepresentation}}, + G::AbstractDecoratorManifold, + Y, + ::Any, + ::Any, + X, + ::LeftForwardAction, +) + return copyto!(G, Y, X) +end +function inverse_translate_diff!( + ::TraitList{<:IsGroupManifold{<:AbstractGroupOperation,LeftInvariantRepresentation}}, + G::AbstractDecoratorManifold, + Y, + ::Any, + ::Any, + X, + ::RightForwardAction, +) + return copyto!(G, Y, X) +end +function inverse_translate_diff!( + ::TraitList{<:IsGroupManifold{<:AbstractGroupOperation,LeftInvariantRepresentation}}, + G::AbstractDecoratorManifold, + Y, + p, + ::Any, + X, + ::LeftBackwardAction, +) + return adjoint_action!(G, Y, p, X, RightAction()) +end +function inverse_translate_diff!( + ::TraitList{<:IsGroupManifold{<:AbstractGroupOperation,LeftInvariantRepresentation}}, + G::AbstractDecoratorManifold, + Y, + p, + ::Any, + X, + ::RightBackwardAction, +) + return adjoint_action!(G, Y, p, X, LeftAction()) +end """ log_inv(G::AbstractManifold, p, q)