code: def make_strictly_feasible(x, lb, ub, rstep=1e-10):
      """Shift a point to the interior of a feasible region.
  
      Each element of the returned vector is at least at a relative distance
      `rstep` from the closest bound. If ``rstep=0`` then `np.nextafter` is used.
      """
      x_new = x.copy()
  
      active = find_active_constraints(x, lb, ub, rstep)
      lower_mask = np.equal(active, -1)
      upper_mask = np.equal(active, 1)
  
      if rstep == 0:
          x_new[lower_mask] = np.nextafter(
              lb[lower_mask], ub[lower_mask]
          )
          x_new[upper_mask] = np.nextafter(
              ub[upper_mask], lb[upper_mask]
          )
      else:
          x_new[lower_mask] = lb[lower_mask] + rstep * np.maximum(
              1, np.abs(lb[lower_mask])
          )
          x_new[upper_mask] = ub[upper_mask] - rstep * np.maximum(
              1, np.abs(ub[upper_mask])
          )
  
      tight_bounds = (x_new < lb) | (x_new > ub)
      x_new[tight_bounds] = 0.5 * (lb[tight_bounds] + ub[tight_bounds])
  
      return x_new
  
imports: from math import copysign
  import numpy
  from numpy.linalg import norm
  from scipy.linalg import cho_factor, cho_solve, LinAlgError
  from scipy.sparse import issparse
  from scipy.sparse.linalg import LinearOperator, aslinearoperator
label_desc: Use image node_id 11 for calling a global function with example usage: make_strictly_feasible(x, lb, ub, rstep) and returns: x_new