code: def _get_atol(tol, atol, bnrm2, get_residual, routine_name):
      """
      Parse arguments for absolute tolerance in termination condition.
  
      Parameters
      ----------
      tol, atol : object
          The arguments passed into the solver routine by user.
      bnrm2 : float
          2-norm of the rhs vector.
      get_residual : callable
          Callable ``get_residual()`` that returns the initial value of
          the residual.
      routine_name : str
          Name of the routine.
      """
  
      if atol is None:
          warnings.warn(
              "scipy.sparse.linalg.{name} called without specifying `atol`. "
              "The default value will be changed in a future release. "
              "For compatibility, specify a value for `atol` explicitly, e.g., "
              "``{name}(..., atol=0)``, or to retain the old behavior "
              "``{name}(..., atol='legacy')``".format(
                  name=routine_name
              ),
              category=DeprecationWarning,
              stacklevel=4,
          )
          atol = "legacy"
  
      tol = float(tol)
  
      if atol == "legacy":
          # emulate old legacy behavior
          resid = get_residual()
          if resid <= tol:
              return "exit"
          if bnrm2 == 0:
              return tol
          else:
              return tol * float(bnrm2)
      else:
          return max(float(atol), tol * float(bnrm2))
  
file_path: catboost/contrib/python/scipy/py2/scipy/sparse/linalg/isolve/iterative.py
imports: from __future__ import division, print_function, absolute_import
  import warnings
  import numpy
  from .None import _iterative
  from scipy.sparse.linalg.interface import LinearOperator
  from .utils import make_system
  from scipy._lib._util import _aligned_zeros
  from scipy._lib._threadsafety import non_reentrant
label_desc: Use image node_id 2 for calling a global function with example usage: _get_atol(tol, atol, bnrm2, get_residual, routine_name) and returns: max, str, tol, unknown