class_docstr: Broyden-Fletcher-Goldfarb-Shanno (BFGS) Hessian update strategy.
  
  Parameters
  ----------
  exception_strategy : {'skip_update', 'damp_update'}, optional
      Define how to proceed when the curvature condition is violated.
      Set it to 'skip_update' to just skip the update. Or, alternatively,
      set it to 'damp_update' to interpolate between the actual BFGS
      result and the unmodified matrix. Both exceptions strategies
      are explained  in [1]_, p.536-537.
  min_curvature : float
      This number, scaled by a normalization factor, defines the
      minimum curvature ``dot(delta_grad, delta_x)`` allowed to go
      unaffected by the exception strategy. By default is equal to
      1e-8 when ``exception_strategy = 'skip_update'`` and equal
      to 0.2 when ``exception_strategy = 'damp_update'``.
  init_scale : {float, 'auto'}
      Matrix scale at first iteration. At the first
      iteration the Hessian matrix or its inverse will be initialized
      with ``init_scale*np.eye(n)``, where ``n`` is the problem dimension.
      Set it to 'auto' in order to use an automatic heuristic for choosing
      the initial scale. The heuristic is described in [1]_, p.143.
      By default uses 'auto'.
  
  Notes
  -----
  The update is based on the description in [1]_, p.140.
  
  References
  ----------
  .. [1] Nocedal, Jorge, and Stephen J. Wright. "Numerical optimization"
         Second Edition (2006).
docstr: Update the inverse Hessian matrix.
  
  BFGS update using the formula:
  
      ``H <- H + ((H*y).T*y + s.T*y)/(s.T*y)^2 * (s*s.T)
               - 1/(s.T*y) * ((H*y)*s.T + s*(H*y).T)``
  
  where ``s = delta_x`` and ``y = delta_grad``. This formula is
  equivalent to (6.17) in [1]_ written in a more efficient way
  for implementation.
  
  References
  ----------
  .. [1] Nocedal, Jorge, and Stephen J. Wright. "Numerical optimization"
         Second Edition (2006).
docstr_tok: ["Update","the","inverse","Hessian","matrix",".","BFGS","update","using","the","formula",":","``","H","<","-","H","+","(","(","H","*","y",")",".T","*","y","+","s.T","*","y",")","\/","(","s.T","*","y",")","^2","*","(","s","*","s.T",")","-","1\/","(","s.T","*","y",")","*","(","(","H","*","y",")","*","s.T","+","s","*","(","H","*","y",")",".T",")","``","where","``","s","=","delta_x","``","and","``","y","=","delta_grad","``",".","This","formula","is","equivalent","to","(","6.17",")","in","[","1","]","_","written","in","a","more","efficient","way","for","implementation",".","References","--","--","--","--","--","..","[","1","]","Nocedal",",","Jorge",",","and","Stephen","J.","Wright",".","``","Numerical","optimization","''","Second","Edition","(","2006",")","."]
code: def _update_inverse_hessian(self, ys, Hy, yHy, s):
      """Update the inverse Hessian matrix.
  
      BFGS update using the formula:
  
          ``H <- H + ((H*y).T*y + s.T*y)/(s.T*y)^2 * (s*s.T)
                   - 1/(s.T*y) * ((H*y)*s.T + s*(H*y).T)``
  
      where ``s = delta_x`` and ``y = delta_grad``. This formula is
      equivalent to (6.17) in [1]_ written in a more efficient way
      for implementation.
  
      References
      ----------
      .. [1] Nocedal, Jorge, and Stephen J. Wright. "Numerical optimization"
             Second Edition (2006).
      """
      self.H = self._syr2(-1.0 / ys, s, Hy, a=self.H)
      self.H = self._syr((ys + yHy) / ys**2, s, a=self.H)
  
imports: from __future__ import division, print_function, absolute_import
  import numpy
  from numpy.linalg import norm
  from scipy.linalg import get_blas_funcs
  from warnings import warn
label_desc: Use image node_id 2 for calling the BFGS obj's underlying member method code with example usage: obj._update_inverse_hessian(ys, Hy, yHy, s) without return types