@@ -1042,6 +1042,11 @@ mutable struct PreconditionedDirectionRule{
10421042 } <: DirectionUpdateRule
10431043 preconditioner:: F
10441044 direction:: D
1045+ function PreconditionedDirectionRule (;
1046+ preconditioner:: F , direction:: D , evaluation:: E
1047+ ) where {E <: AbstractEvaluationType , D <: DirectionUpdateRule , F}
1048+ return new {E, D, F} (preconditioner, direction)
1049+ end
10451050end
10461051function PreconditionedDirectionRule (
10471052 M:: AbstractManifold ,
@@ -1050,7 +1055,7 @@ function PreconditionedDirectionRule(
10501055 evaluation:: E = AllocatingEvaluation (),
10511056 ) where {E <: AbstractEvaluationType , F}
10521057 dir = _produce_type (direction, M)
1053- return PreconditionedDirectionRule {E, typeof(dir), F} ( preconditioner, dir )
1058+ return PreconditionedDirectionRule (; preconditioner = preconditioner, direction = direction, evaluation = evaluation )
10541059end
10551060function (pg:: PreconditionedDirectionRule{AllocatingEvaluation} )(
10561061 mp:: AbstractManoptProblem , s:: AbstractGradientSolverState , k
@@ -1072,6 +1077,22 @@ function (pg::PreconditionedDirectionRule{InplaceEvaluation})(
10721077 pg. preconditioner (M, dir, p, dir)
10731078 return step, dir
10741079end
1080+ function Base. show (io:: IO , pg:: PreconditionedDirectionRule{E} ) where {E <: AbstractEvaluationType }
1081+ print (io, " PreconditionedDirectionRule(; direction = " , pg. direction, " , preconditioner = " , pg. preconditioner, " , " , _to_kw (E))
1082+ return print (io, " )" )
1083+ end
1084+ function status_summary (pg:: PreconditionedDirectionRule ; context:: Symbol = :default )
1085+ (context === :short ) && return repr (pg)
1086+ (context === :inline ) && return " A preconditioner gradient processor"
1087+ return """
1088+ Preconditioned Direction Rule
1089+
1090+ ## Parameters
1091+ preconditioner: $(_MANOPT_INDENT)$(nr. μ)
1092+ ## Direction Rule
1093+ $(_in_str (status_summary (pg. direction; context = context); indent = 1 , headers = 1 ))
1094+ """
1095+ end
10751096
10761097"""
10771098 PreconditionedDirection(preconditioner; kwargs...)
0 commit comments