

'''simple docstring'''

import math
from timeit import timeit





def 				A_					(	snake_case	):
  SCREAMING_SNAKE_CASE:Any   =   0
  SCREAMING_SNAKE_CASE:Any   =   abs(snake_case	)
  while True:
    SCREAMING_SNAKE_CASE:Optional[int]   =   n // 10
    digits += 1
    if n == 0:
      break
  return digits





def 				A_					(	snake_case	):
  return 1 if n == 0 else math.floor(math.log(abs(snake_case	) ,    10	) + 1	)





def 				A_					(	snake_case	):
  return len(str(abs(snake_case	)	)	)





def 				A_					(	):
  from collections.abc import Callable

  def benchmark_a_function(snake_case ,    snake_case	) -> None:
    SCREAMING_SNAKE_CASE:Dict   =   F'''{func.__name__}({value})'''
    SCREAMING_SNAKE_CASE:str   =   timeit(F'''__main__.{call}''' ,    setup="import __main__"	)
    print(F'''{call}: {func(snake_case	)} -- {timing} seconds'''	)

  for value in (262144, 1125899906842624, 1267650600228229401496703205376):
    for func in (num_digits, num_digits_fast, num_digits_faster):
      benchmark_a_function(snake_case ,    snake_case	)
    print()


if __name__ == "__main__":
    import doctest

    doctest.testmod()
    benchmark()









'''simple docstring'''

def 				A_					(	snake_case	):
  return "".join(chr(ord(snake_case	) + 32	) if "A" <= char <= "Z" else char for char in word	)


if __name__ == "__main__":
    from doctest import testmod

    testmod()






