Releases: JuliaManifolds/LieGroups.jl
Releases · JuliaManifolds/LieGroups.jl
v0.1.9
LieGroups v0.1.9
Merged pull requests:
- Fix typo in documentation (#82) (@wuzh07)
- Refactor the test suite and the project toml structure (#83) (@kellertuer)
- Bump actions/checkout from 4 to 6 (#84) (@dependabot[bot])
- Bump the all-julia-packages group across 2 directories with 2 updates (#85) (@dependabot[bot])
v0.1.8
LieGroups v0.1.8
Added
- a
MetricLieGroupas a meta type to be able to change the metric imposed on the Lie algebra and its effects e.g. on the coordinates, inner product and the exponential and logarithmic map. diff_left_composeanddiff_right_composefor the special Euclidean group.submanifold_componentsnow works withIdentity{<:ProductGroupOperation}.zero_vector(G, Identity(G))returns the zero vector in default representation.
Fixed
- fixed the contributing.md to mention runic as the code formatter.
diff_left_composecorrectly allocates whengisIdentity.init_constants!fixed forSpecialEuclideanMatrixTangentVectorandSpecialEuclideanMatrixPoint.
Merged pull requests:
- Introduce a MetricLieGroup (#74) (@kellertuer)
- Fix contrib to state Runic. (#80) (@kellertuer)
- Lots of small fixes and diff_left_compose on SE(n) (#81) (@mateuszbaran)
Closed issues:
- Support MetricManifold in LieGroups (#53)
v0.1.7
LieGroups v0.1.7
Added
NestedPowerRepresentationandNestedReplacingPowerRepresentationare now re-exported fromManifoldsBase.jl.getindexaccess to parts of a point of tangent vector represented by a matrix with:Rotationand:Translationas indices. For example, whengis a point on any variant of the special euclidean group,g[G, :Translation]will return the translation part ofgregardless of whetherGis the left or right semidirect product even whengis a matrix.
Fixed
- Zenodo metadata.
Merged pull requests:
- Fix zenodo. (#77) (@kellertuer)
- Fix #78 (#79) (@mateuszbaran)
Closed issues:
- Two small bugs accessing elements on power manifolds (#78)
v0.1.6
LieGroups v0.1.6
Fixed
diff_group_applyhas corrected documentation and works withgequal toIdentity.
Merged pull requests:
- Fix diff_group_apply (#73) (@mateuszbaran)
v0.1.5
LieGroups v0.1.5
Changed
LieGroups.jlnow requiresManifoldsBase.jlv2.0 andManifolds.jlv0.11.
Merged pull requests:
- Add entry for transition from
SpecialEuclideanInGeneralLinear(#71) (@mateuszbaran) - Update for Manifolds v0.11 (#72) (@mateuszbaran)
v0.1.4
LieGroups v0.1.4
Added
- mention
adjoint_matrixin the transition documentation (#52) - introduce
jacobian_expfor the Jacobian of the exponential function. - Introduce a
AbstractActionActsOnTypeto distinguish, what previously was called “side”,
i.e. whether an action acts on the left (ActionActsOnLeft) or right (ActionActsOnRight) - Introduce
_invand_inv!functions for the inverse operation to work the same way as_composeand_compose!, respectively. - introduce a
LeftMultiplicationGroupActionto represent left multiplication actions on Lie groups. While this is a bit more of a technical
name, it replaces the oldComplexPlanarRotation,QuaternionRotation, andRotationAction, since in theGroupActionthis type is coupled with a group and a manifold anyway. - further methods for the
LeftMultiplicationGroupActionto cover the previous functionality of e.g.RotationTranslationActionOnVector
- Add the Special Galilean Group (#60)
Fixed
- Fixed an issue where internally the product manifold in a
SemidirectProductLieGroupwas accidentally splashed - make
×andProductLieGroupbehave the same way as×andProductManifolddo - Fixed an issue, where
exp!(G, h, g, X)would return a wrong result if the inputgand the outputhare aliased (#63). - Fixed issues with the documentation of
diff_left_composeanddiff_right_composethat were inconsistent - fixed
push_forward_tangentandpull_back_tangentwhich on general Lie groups provided a wrong default. - fixes an allocation bug for
applyanddiff_apply(#52)
Merged pull requests:
- Porting the SpecialGalileanGroup from RoME (#60) (@Affie)
- Test and fix exp! issue from #63 (#64) (@Affie)
- Transfer more elements from Manifolds.jl (#65) (@kellertuer)
- Improve how product and semidirect Lie group constructors act. (#66) (@kellertuer)
- Refactor the semidirect product Lie group to cover all cases from GroupManifolds. (#67) (@Affie)
- Test 8 Semidirect Product combinations, add compose associativity test, and fix compose alias bug (#68) (@Affie)
- Test Semidirect Product against expected
invresults and fix inv/compose combinations (#70) (@Affie)
Closed issues:
v0.1.3
LieGroups v0.1.3
Added
- introduce
push_forward_tangentandpull_back_tangentto combine the differential of left compose and its inverse to “move” from the Lie algebra to a certain tangent space and back, but also takes care of adapting the representation, for the case where the representation on the manifold is different from the one on the Lie group / Lie algebra. - introduce a
BaseManifoldRetractionto be able to use retractions on the underlying manifold also as a retraction on the Lie group, cf. (#43) and (#47). This feature assumes that the representation of points and tangent vectors on Lie group and the underlying manifold are the same (so it doesn't work with special Euclidean group with homogeneous coordinates).
Changed
- Switch to using Runic.jl as code formatter
Fixed
- Fixed a typo, where
withinwas misspelled aswidthinwhich caused errors in a few places. - fix
default_basisforLieGroupto return aDefaultLieAlgebraOrthogonalBasisalso when providing a point type. That wayget_vectorfalls back to the manifold when called with a Lie group and a point, though this is mere a historical format and the Lie algebra approach is the recommended one. - mention
get_coordinates,get_vector,hat, andveein the transition documentation since it moved to using theLieAlgebrainstead of the Lie group and a point. - Fixed
RightGroupOperationActionto be a subtype ofAbstractRightGroupActionType - Add
lie_bracketfor the SpecialEuclideanGroup. - For the CircleGroup(ℝ), fixed compose StackOverflowError and a bug where result could be outside [-π,π), see (#62) for detail.
Merged pull requests:
- Use retractions, inverse retractions or vector transports on the base manifold (#47) (@kellertuer)
- Fix a typo (#55) (@kellertuer)
- hat/vee and get_vector improvements (#56) (@kellertuer)
- Add the lie_bracket for the SpecialEuclideanGroup (#58) (@Affie)
- Fix RightGroupOperationAction bug (#59) (@Affie)
- Switch Code formatter to using Runic.jl (#61) (@kellertuer)
- Fix compose in CircleGroup(ℝ) (#62) (@Affie)
Closed issues:
v0.1.2
LieGroups v0.1.2
Added
is_flatforSpecialEuclideanGroupinnerandnormforLieAlgebrato compute the inner product and norm on the Lie algebra.- a test suite function for
identity_element. - New StaticArrays.jl specializations for multiple functions, including:
expandlogon the orthogonal and special orthogonal group in 2 and 3 dimensions.get_coordinatesandget_vectoron the orthogonal and special orthogonal group in 2 and 3 dimensions, forLieAlgebraOrthogonalBasis.
- More generic implementation of non-mutating
get_vector_lieonAbstractProductGroupOperationgroups.
Changed
identity_elementonUnitaryGroup(1, ℍ)now returns by default a 1x1Matrixinstead of a number to be consistent with higher-dimensional unitary quaternionic groups. Useidentity_element(UnitaryGroup(1, ℍ), QuaternionF64)to get a number corresponding to the identity.
Fixed
get_vectoronSpecialEuclideanGroupwithArrayPartitionpoint type.identity_elementandzero_vectorare now all using a type as second argument and
respect this type more thoroughly.- fixes (#44) (accuracy of
logon SE(2) and SE(3) for small angles).
Merged pull requests:
- SE(n) improvements (#37) (@mateuszbaran)
- Add
inneron the Lie algebra (#41) (@kellertuer) - Towards consistent return types (#42) (@kellertuer)
- Fix #44 (#48) (@mateuszbaran)
- StaticArrays.jl specializations (#49) (@mateuszbaran)
- Add a
identity_elementtest to the Test suite (#50) (@kellertuer) - Slightly improve news.html (#51) (@kellertuer)
Closed issues:
v0.1.1
LieGroups v0.1.1
Added
identity_elementonTranslationGroupsupports nowStaticArrays.jltypes.- introduce
get_vectorin legacy form to work on Lie groups, but they pass on to their Lie algebra. - adapt to the new
default_basisfrom ManifoldsBase.jl 1.1.
Changed
- the tutorials are now rendered with
quartousing theQuartoNotebookRunner.jland are hence purely julia based.
Fixed
identity_elementonTranslationGroupno longer accepts a number as a second argument (it accepts number type instead).
Merged pull requests:
- Fix
SUmath representation (#32) (@MasonProtter) - Adapt to
default_basisand pass onwardsget_coordinates/get_vector(#34) (@kellertuer) - Fix identity_element on TranslationGroup with StaticArrays types (#35) (@mateuszbaran)
- Switch Quarto rendering in the docs to JuliaNotebookRunner (#36) (@kellertuer)
Closed issues:
- missing dispatches for cov, e.g. get_coordinates_orthonormal (#33)
v0.1.0
LieGroups v0.1.0
Everything denoted by “formerly” refers to the previous name in Manifolds.jl.
Several structs have been changed from the pre-release, so these are breaking.
Added
LieAlgebraLieGroup(formerlyGroupManifold) as well as the concrete groupsTranslationGroupSpecialEuclideanGroup(formerlySpecialEuclidean) includingSpecialEuclideanMatrixPointandSpecialEuclideanMatrixTangentVectorwhen representing the points as affine (abstract) matricesSpecialEuclideanProductPointandSpecialEuclideanProductTangentVectorwhen representing them in a product structure, that is as anArrayPartitionfromRecursiveArrayTools.- neither of those types is necessary, besides for conversion between both. The product representation differs for the left and right semidirect product, while the affine matrix variant does not.
SpecialOrthogonalGroup(formerlySpecialOrthogonal)SpecialUnitaryGroup(formerlySpecialUnitary)OrthogonalGroup(formerlyOrthogonal)UnitaryGroup(formerlyUnitary) also for quaternions.GeneralLinearGroup(formerlyGeneralLinear)HeisenbergGroupLeftSemidirectProductLieGroup(formerlySemidirectProductGroup)⋉(alias forLeftSemidirectProductGroupOperationwhen adefault_left_action(G,H)is defined for the two groups)PowerLieGroup(formerlyPowerGroup)PowerGroupOperationto internally avoid ambiguities. Since the constructor always expects a Lie group, this is only necessary internallyProductLieGroup(formerlyProductGroup)RightSemidirectProductLieGroupSpecialLinearGroup(formerlySpecialLinear)SymplecticGroupCircleGroupnow with even three representations: Real line (mod 2π), Complex and plane circle⋊(alias forRightSemidirectProductGroupOperationwhen adefault_right_action(G,H)is defined for the two groups)- a
ValidationLieGroupverifying input and output of all interface functions, similar to theValidationManifoldwhich can also be used internally.
AbstractGroupOperationas well as its concrete subtypesAdditionGroupOperation(formerlyAdditionOperation)MatrixMultiplicationGroupOperation(formerlyMultiplicationOperation)PowerGroupOperation(formerly the Lie group was stored inside a power manifold)ProductGroupOperation(formerly the Lie groups were stored inside a product manifold)LeftSemidirectProductGroupOperation(this was formerly only implicitly stored in theSemidirectProductGroup)RightSemidirectProductGroupOperation
AbstractGroupActionTypewith its 2 specific (new) abstract subtypesAbstractLeftGroupActionTypeAbstractRightGroupActionType
- For the group operation actions there are now
LeftGroupOperationAction(formerlyLeftForwardAction)RightGroupOperationAction(formerlyRightBackwardAction)InverseLeftGroupOperationAction(formerlyRightForwardAction)InverseRightGroupOperationAction(formerlyLeftBackwardAction)
DefaultLieAlgebraOrthogonalBasis(replacesVeeOrthogonalBasis, which is still available inManifoldsBase.jl)AbstractLieGroupPointandAbstractLieAlgebraTangentVectoras abstract types to introduce point and Lie algebra tangent vector representationsIdentityapplyandapply!base_manifoldto access the manifold within a Lie groupcomposeandcompose!conjugateandconjugate!diff_apply,diff_apply!,diff_group_apply, anddiff_group_apply!(formerlyapply_diff_[group][!])diff_conjugateanddiff_conjugate!diff_left_compose,diff_left_compose!,diff_right_compose,diff_right_compose!(formerlytranslate_diffwith different sides)exp(G::LieGroup, g, X)andexp!(G::LieGroup, h, g, X)(formerlyexp_invandexp_inv!)exp(G::LieGroup, X)andexp!(G::LieGroup, h, X)(formerlyexp_lieandexp_lie!)hatandhat!, with slightly different signatures, since the base point is omitted.identity_elementandidentity_element!invandinv!(inv(::AbstractGroupAction)was formerlyswitch_direction)inv_left_compose,inv_left_compose!andinv_right_compose,inv_right_compose!(these functions correspond toinverse_translatewith corresponding direction and side)is_identitylie_bracketandlie_bracket!jacobian_conjugate(formerlyadjoint_matrix, which is now a special case of this)log(G::LieGroup, g, h)andlog!(G::LieGroup, X, g, h)(formerlylog_invandlog_inv!)log(G::LieGroup, ::Identity, g)andlog!(G::LieGroup, X, ::Identity, g)(formerlylog_lieandlog_lie!)switch(formerlyswitch_side)veeandvee!, with slightly different signatures, since the base point is omitted.
Compared to Manifolds.jl
- all
translatefunctions are not implemented here, since you can just usecompose. The differentials are implemented as listed above with respect to both left and right argument of compose - all
inverse_applyfunctions are not implemented here, since it is recommended to useapply(inv(A), g, p)as a replacement.
Merged pull requests:
- Add a ValidationLieGroup (#22) (@kellertuer)
- Implement a default for
jacobian_conjugate(#23) (@kellertuer) - A get-started tutorial (#24) (@kellertuer)
- Add symplectic group (#28) (@kellertuer)
- Port remaining groups (part 1/3): Quaternion Unitary (#29) (@kellertuer)
- Port remaining groups (part 2/3): Special Linear (#30) (@kellertuer)
- Port remaining groups (Part 3/3): The Circle group (#31) (@kellertuer)
Closed issues: