code: def _minimize_trust_krylov(
      fun,
      x0,
      args=(),
      jac=None,
      hess=None,
      hessp=None,
      inexact=True,
      **trust_region_options,
  ):
      """
      Minimization of a scalar function of one or more variables using
      a nearly exact trust-region algorithm that only requires matrix
      vector products with the hessian matrix.
  
      .. versionadded:: 1.0.0
  
      Options
      -------
      inexact : bool, optional
          Accuracy to solve subproblems. If True requires less nonlinear
          iterations, but more vector products.
      """
  
      if jac is None:
          raise ValueError(
              "Jacobian is required for trust region ",
              "exact minimization.",
          )
      if hess is None and hessp is None:
          raise ValueError(
              "Either the Hessian or the Hessian-vector product "
              "is required for Krylov trust-region minimization"
          )
  
      # tol_rel specifies the termination tolerance relative to the initial
      # gradient norm in the Krylov subspace iteration.
  
      # - tol_rel_i specifies the tolerance for interior convergence.
      # - tol_rel_b specifies the tolerance for boundary convergence.
      #   in nonlinear programming applications it is not necessary to solve
      #   the boundary case as exact as the interior case.
  
      # - setting tol_rel_i=-2 leads to a forcing sequence in the Krylov
      #   subspace iteration leading to quadratic convergence if eventually
      #   the trust region stays inactive.
      # - setting tol_rel_b=-3 leads to a forcing sequence in the Krylov
      #   subspace iteration leading to superlinear convergence as long
      #   as the iterates hit the trust region boundary.
  
      # For details consult the documentation of trlib_krylov_min
      # in _trlib/trlib_krylov.h
      #
      # Optimality of this choice of parameters among a range of possibilities
      # has been tested on the unconstrained subset of the CUTEst library.
  
      if inexact:
          return _minimize_trust_region(
              fun,
              x0,
              args=args,
              jac=jac,
              hess=hess,
              hessp=hessp,
              subproblem=get_trlib_quadratic_subproblem(
                  tol_rel_i=-2.0,
                  tol_rel_b=-3.0,
                  disp=trust_region_options.get("disp", False),
              ),
              **trust_region_options,
          )
      else:
          return _minimize_trust_region(
              fun,
              x0,
              args=args,
              jac=jac,
              hess=hess,
              hessp=hessp,
              subproblem=get_trlib_quadratic_subproblem(
                  tol_rel_i=1e-8,
                  tol_rel_b=1e-6,
                  disp=trust_region_options.get("disp", False),
              ),
              **trust_region_options,
          )
  
label_desc: Use image node_id 1 for calling a global function with example usage: _minimize_trust_krylov(fun, x0, args, jac, hess, hessp, inexact) and returns: _minimize_trust_region, _minimize_trust_region