





from collections.abc import Callable




def     a__ (					lowercase__  ,    lowercase__  ,    lowercase__  ):






   '''simple docstring'''






   UpperCAmelCase_											=a
   UpperCAmelCase_											=b
   if function(lowercase__  ) == 0:  # one of the a or b is a root for the function
      return a
   elif function(lowercase__  ) == 0:
      return b
   elif (
       function(lowercase__  ) * function(lowercase__  ) > 0
   ):  # if none of these are root and they are both positive or negative,
      # then this algorithm can't find the root
      raise ValueError("could not find root in given interval."  )
   else:
      UpperCAmelCase_											=start + (end - start) / 2.0
      while abs(start - mid  ) > 1_0**-7:  # until precisely equals to 10^-7
         if function(lowercase__  ) == 0:
            return mid
         elif function(lowercase__  ) * function(lowercase__  ) < 0:
            UpperCAmelCase_											=mid
         else:
            UpperCAmelCase_											=mid
         UpperCAmelCase_											=start + (end - start) / 2.0
      return mid




def     a__ (					lowercase__  ):






   '''simple docstring'''






   return x**3 - 2 * x - 5


if __name__ == "__main__":
     print(bisection(f, 1, 1000))

     import doctest

     doctest.testmod()











import sys

from .dependency_versions_table import deps
from .utils.versions import require_version, require_version_core


# define which module versions we always want to check at run time
# (usually the ones defined in `install_requires` in setup.py)
#
# order specific notes:
# - tqdm must be checked before tokenizers

__lowercase  :   Optional[int]						      ="""python tqdm regex requests packaging filelock numpy tokenizers""".split()
if sys.version_info < (3, 7):
     pkgs_to_check_at_runtime.append("""dataclasses""")
if sys.version_info < (3, 8):
     pkgs_to_check_at_runtime.append("""importlib_metadata""")

for pkg in pkgs_to_check_at_runtime:
     if pkg in deps:
          if pkg == "tokenizers":
               # must be loaded here, or else tqdm check may fail
               from .utils import is_tokenizers_available

               if not is_tokenizers_available():
                    continue  # not required, check version only if installed

          require_version_core(deps[pkg])
     else:
          raise ValueError(f"""can't find {pkg} in {deps.keys()}, check dependency_versions_table.py""")




def     a__ (					lowercase__  ,    lowercase__=None  ):






   '''simple docstring'''






   require_version(deps[pkg]  ,    lowercase__  )




