Internal documentation

This page documents the internal types and methods of Manifolds.jl's that might be of use for writing your own manifold.

Functions

Manifolds.eigen_safe โ€” Function
eigen_safe(x)

Compute the eigendecomposition of x. If x is a StaticMatrix, it is converted to a Matrix before the decomposition.

source
Manifolds.isnormal โ€” Function
isnormal(x; kwargs...) -> Bool

Check if the matrix or number x is normal, that is, if it commutes with its adjoint:

\[x x^\mathrm{H} = x^\mathrm{H} x.\]

By default, this is an equality check. Provide kwargs for isapprox to perform an approximate check.

source
Manifolds.log_safe โ€” Function
log_safe(x)

Compute the matrix logarithm of x. If x is a StaticMatrix, it is converted to a Matrix before computing the log.

source
Manifolds.log_safe! โ€” Function
log_safe!(y, x)

Compute the matrix logarithm of x. If the eltype of y is real, then the imaginary part of x is ignored, and a DomainError is raised if real(x) has no real logarithm.

source
Manifolds.mul!_safe โ€” Function
mul!_safe(Y, A, B) -> Y

Call mul! safely, that is, A and/or B are permitted to alias with Y.

source
Manifolds.nzsign โ€” Function
nzsign(z[, absz])

Compute a modified sign(z) that is always nonzero, i.e. where

\[\operatorname(nzsign)(z) = \begin{cases} 1 & \text{if } z = 0\\ \frac{z}{|z|} & \text{otherwise} \end{cases}\]

source
Manifolds.realify โ€” Function
realify(X::AbstractMatrix{T๐”ฝ}, ๐”ฝ::AbstractNumbers) -> Y::AbstractMatrix{<:Real}

Given a matrix $X โˆˆ ๐”ฝ^{n ร— n}$, compute $Y โˆˆ โ„^{m ร— m}$, where $m = n \operatorname{dim}_๐”ฝ$, and $\operatorname{dim}_๐”ฝ$ is the real_dimension of the number field $๐”ฝ$, using the map $ฯ• \colon X โ†ฆ Y$, that preserves the matrix product, so that for all $C,D โˆˆ ๐”ฝ^{n ร— n}$,

\[ฯ•(C) ฯ•(D) = ฯ•(CD).\]

See realify! for an in-place version, and unrealify! to compute the inverse of $ฯ•$.

source
Manifolds.realify! โ€” Function
realify!(Y::AbstractMatrix{<:Real}, X::AbstractMatrix{T๐”ฝ}, ๐”ฝ::AbstractNumbers)

In-place version of realify.

source
realify!(Y::AbstractMatrix{<:Real}, X::AbstractMatrix{<:Complex}, ::typeof(โ„‚))

Given a complex matrix $X = A + iB โˆˆ โ„‚^{n ร— n}$, compute its realified matrix $Y โˆˆ โ„^{2n ร— 2n}$, written where

\[Y = \begin{pmatrix}A & -B \\ B & A \end{pmatrix}.\]

source
Manifolds.select_from_tuple โ€” Function
select_from_tuple(t::NTuple{N, Any}, positions::Val{P})

Selects elements of tuple t at positions specified by the second argument. For example select_from_tuple(("a", "b", "c"), Val((3, 1, 1))) returns ("c", "a", "a").

source
Manifolds.unrealify! โ€” Function
unrealify!(X::AbstractMatrix{T๐”ฝ}, Y::AbstractMatrix{<:Real}, ๐”ฝ::AbstractNumbers[, n])

Given a real matrix $Y โˆˆ โ„^{m ร— m}$, where $m = n \operatorname{dim}_๐”ฝ$, and $\operatorname{dim}_๐”ฝ$ is the real_dimension of the number field $๐”ฝ$, compute in-place its equivalent matrix $X โˆˆ ๐”ฝ^{n ร— n}$. Note that this function does not check that $Y$ has a valid structure to be un-realified.

See realify! for the inverse of this function.

source
Manifolds.usinc โ€” Function
usinc(ฮธ::Real)

Unnormalized version of sinc function, i.e. $\operatorname{usinc}(ฮธ) = \frac{\sin(ฮธ)}{ฮธ}$. This is equivalent to sinc(ฮธ/ฯ€).

source
Manifolds.usinc_from_cos โ€” Function
usinc_from_cos(x::Real)

Unnormalized version of sinc function, i.e. $\operatorname{usinc}(ฮธ) = \frac{\sin(ฮธ)}{ฮธ}$, computed from $x = cos(ฮธ)$.

source
Manifolds.vec2skew! โ€” Function
vec2skew!(X, v, k)

create a skew symmetric matrix inplace in X of size $k\times k$ from a vector v, for example for v=[1,2,3] and k=3 this yields

[  0  1  2;
  -1  0  3;
  -2 -3  0
]
source
Manifolds.ziptuples โ€” Function
ziptuples(a, b[, c[, d[, e]]])

Zips tuples a, b, and remaining in a fast, type-stable way. If they have different lengths, the result is trimmed to the length of the shorter tuple.

source

Types in Extensions