diff --git a/Project.toml b/Project.toml index 56e61900..16873504 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "ManifoldsBase" uuid = "3362f125-f0bb-47a3-aa74-596ffd7ef2fb" authors = ["Seth Axen ", "Mateusz Baran ", "Ronny Bergmann ", "Antoine Levitt "] -version = "0.7.2" +version = "0.7.3" [deps] LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" diff --git a/README.md b/README.md index 0657275c..c7302f52 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,20 @@ Basic interface for manifolds in Julia. The project [`Manifolds.jl`](https://github.com/JuliaManifolds/Manifolds.jl) is based on this interface and provides a variety of manifolds. +## Number system + +A number system represents the field a manifold is based upon. +Most prominently, these are real-valued (`ℝ`) and complex valued (`ℂ`) fields that +parametrize certain manifolds. +A further type to represent the field of quaternions (`ℍ`) can also be used. + +## Bases + +Several different types of bases for a tangent space at `p` on a [`Manifold`](@ref) are provided. +Methods are provided to obtain such a basis, to represent a tangent vector in a basis and to reconstruct a tangent vector from coefficients with respect to a basis. +The last two can be performed without computing the complete basis. +Further a basis can be cached and hence be reused, see [`CachedBasis`](https://juliamanifolds.github.io/Manifolds.jl/latest/interface.html#ManifoldsBase.CachedBasis). + ## `DecoratorManifold` The decorator manifold enhances a manifold by certain, in most cases implicitly @@ -23,7 +37,7 @@ of the [`Euclidean`](https://github.com/JuliaManifolds/Manifolds.jl/blob/master/ manifold from [`Manifolds.jl`](https://github.com/JuliaManifolds/Manifolds.jl), such that the interface functions can be tested. -## Embedded Manifold +## `EmbeddedManifold` The embedded manifold models the embedding of a manifold into another manifold. This way a manifold can benefit from existing implementations. diff --git a/src/EmbeddedManifold.jl b/src/EmbeddedManifold.jl index 60d02af2..d1d3e83d 100644 --- a/src/EmbeddedManifold.jl +++ b/src/EmbeddedManifold.jl @@ -50,8 +50,9 @@ Specify that an embedding is the default isometric embedding. This even inherits logarithmic and exponential map as well as retraction and inverse retractions from the embedding. -For an example, see [`SymmetricMatrices`](@ref) which are isometrically embedded in -the Euclidean space of matrices but also inherit exponential and logarithmic maps. +For an example, see [`SymmetricMatrices`](@ref Main.Manifolds.SymmetricMatrices) which are +isometrically embedded in the Euclidean space of matrices but also inherit exponential +and logarithmic maps. """ struct TransparentIsometricEmbedding <: AbstractIsometricEmbeddingType end diff --git a/src/ManifoldsBase.jl b/src/ManifoldsBase.jl index d93a662f..c02bfaff 100644 --- a/src/ManifoldsBase.jl +++ b/src/ManifoldsBase.jl @@ -416,7 +416,7 @@ injectivity_radius(M::Manifold, ::ExponentialRetraction) = injectivity_radius(M) Compute the inner product of tangent vectors `X` and `Y` at point `p` from the [`Manifold`](@ref) `M`. -See also: [`MetricManifold`](@ref) +See also: [`MetricManifold`](@ref Main.Manifolds.MetricManifold) """ function inner(M::Manifold, p, X, Y) error(manifold_function_not_implemented_message(M, inner, p, X, Y)) @@ -530,7 +530,7 @@ end log!(M::Manifold, X, p, q) Compute the logarithmic map of point `q` at base point `p` on the [`Manifold`](@ref) `M`. -THe result is saved to `X`. +The result is saved to `X`. """ function log!(M::Manifold, X, p, q) error(manifold_function_not_implemented_message(M, log!, X, p, q)) diff --git a/src/bases.jl b/src/bases.jl index 3c01a700..b6bece01 100644 --- a/src/bases.jl +++ b/src/bases.jl @@ -117,7 +117,13 @@ end const DefaultOrDiagonalizingBasis = Union{DefaultOrthonormalBasis,DiagonalizingOrthonormalBasis} +""" + CachedBasis(basis::AbstractBasis, data) +A cached version of the given `basis` with precomputed basis vectors. The basis vectors +are stored in `data`, either explicitly (like in cached variants of +[`ProjectedOrthonormalBasis`](@ref)) or implicitly. +""" struct CachedBasis{B,V,𝔽} <: AbstractBasis{𝔽} where {BT<:AbstractBasis,V} data::V end