A technical question on Manopt.jl. I have seen that Sphere(n-1, ℂ) gets its Hermitian metric \langle v, w\rangle_p = v^*w from its canonical embedding in \mathbb{C}^n. Instead, I would like to use that manifold with the metric \langle v, w\rangle_p = \operatorname{Re} (v^*w), which comes from its canonical embedding in \mathbb{R}^{2n}.
(Note that also Manopt for Matlab uses this second metric for the complex sphere.)
Is there a way to change metric easily? I see two avenues, both with disadvantages:
-
Work with
Sphere(2n-1, ℝ), and wrap my function into a wrapper that converts every vector in \mathbb{C}^n in \mathbb{R}^{2n}. This looks cumbersome, and most importantly it changes the working manifold nontrivially, since nowvand1im * vare no longer the same point. -
Define a new
AbstractMetricfrom scratch; I see that there is an example of how to define one inRosenbrockMetricin ManoptExamples.jl, but it doesn’t look trivial: I would have to define many new methods, and I am afraid of breaking something subtle down the line. Also, if I understand correctly now I have anAbstractManifold{ℝ}rather than anAbstractManifold{ℂ}and hence I cannot even reuseSphere(n-1, ℂ)but I have to basically define a new manifold from scratch.
Am I missing a simpler way to do this?