code: def rosen_hess_prod(x, p):
      """
      Product of the Hessian matrix of the Rosenbrock function with a vector.
  
      Parameters
      ----------
      x : array_like
          1-D array of points at which the Hessian matrix is to be computed.
      p : array_like
          1-D array, the vector to be multiplied by the Hessian matrix.
  
      Returns
      -------
      rosen_hess_prod : ndarray
          The Hessian matrix of the Rosenbrock function at `x` multiplied
          by the vector `p`.
  
      See Also
      --------
      rosen, rosen_der, rosen_hess
  
      """
      x = atleast_1d(x)
      Hp = numpy.zeros(len(x), dtype=x.dtype)
      Hp[0] = (1200 * x[0] ** 2 - 400 * x[1] + 2) * p[0] - 400 * x[
          0
      ] * p[1]
      Hp[1:-1] = (
          -400 * x[:-2] * p[:-2]
          + (202 + 1200 * x[1:-1] ** 2 - 400 * x[2:]) * p[1:-1]
          - 400 * x[1:-1] * p[2:]
      )
      Hp[-1] = -400 * x[-2] * p[-2] + 200 * p[-1]
      return Hp
  
imports: from __future__ import division, print_function, absolute_import
  import warnings
  import sys
  import numpy
  from scipy._lib.six import callable, xrange
  from numpy import atleast_1d, eye, mgrid, argmin, zeros, shape, squeeze, vectorize, asarray, sqrt, Inf, asfarray, isinf
  import numpy
  from .linesearch import line_search_wolfe1, line_search_wolfe2, line_search_wolfe2, LineSearchWarning
  from scipy._lib._util import getargspec_no_self
label_desc: Use image node_id 7 for calling a global function with example usage: rosen_hess_prod(x, p) and returns: Hp