All these methods are feasible, i.e. generate a sequence of iterates \(X_k\)  where each iterate is in \(\mathcal {O}_p\) .
Unlike what we assume in the first  sentence of the present article, they do not need the function \(f\)  to be defined outside \(\mathcal {O}_p\) .
This comes with a computational drawback: in order to compute \(X_{k+1}\)  from \(X_k\) , one needs a way to move and stay on the manifold, called retraction [1]}.
Unfortunately, retractions on \(\mathcal {O}_p\)  are computationally expensive: they usually require a matrix inversion, square root, or exponential.
These operations are also generally slow on modern computing hardware such as GPU's.
Therefore, when the dimension \(p\)  is large, computing a retraction can become the computational bottleneck in the processing pipeline.
