Algorithm 9.2 shows the dependencies of the various subroutines on each other. We have grouped the routines together based on four loosely defined roles:
tangent
), line movement (move
), and the
connection term used for covariant differentiation
(connection
). These routines are independent of the
objective function group, but are essential to the geometrized
objective function group.
grad
)
and Hessian (dgrad
). Additionally, two routines for
inverting the covariant Hessian
(invdgrad_CG
and invdgrad_MINRES
) are located here.
This group provides the
raw tools out of which one builds implementations in the
high-level algorithm group. Lastly, functions which detect
(partition
) and remove (nosym
) block-diagonal
orthogonal symmetries are found in the group.
Fline
, dFline
, and gradline
),
and convergence criteria are defined.
Lastly, every function reads from a global SGParameters
structure whose
fields contain information about the manifold and the computation. In
our examples we have used a separate global FParameters
to store
information related to the computation of . The fields of
SGParameters
are set in sg_min
.