import math
from timeit import timeit

def      lowercase_							(     _lowerCamelCase				:			Any):
    lowercase__					:  Union[str, Any]          =							0
    lowercase__					:  Dict          =							abs(__A)
    while True:
        lowercase__					:  Tuple          =							n // 10
        digits += 1
        if n == 0:
            break
    return digits

def      lowercase_							(     _lowerCamelCase				:			Dict):
    return 1 if n == 0 else math.floor(math.log(abs(__A)						,      10) + 1)

def      lowercase_							(     _lowerCamelCase				:			str):
    return len(str(abs(__A)))

def      lowercase_							(     ):
    from collections.abc import Callable

    def benchmark_a_function(_lowerCamelCase				:			List[Any]						,      _lowerCamelCase				:			Optional[int]) -> None:
        lowercase__					:  Tuple          =							f'''{func.__name__}({value})'''
        lowercase__					:  List[str]          =							timeit(f'''__main__.{call}'''						,      setup="import __main__")
        print(f'''{call}: {func(__A)} -- {timing} seconds''')

    for value in (26_2144, 1125_8999_0684_2624, 126_7650_6002_2822_9401_4967_0320_5376):
        for func in (num_digits, num_digits_fast, num_digits_faster):
            benchmark_a_function(__A						,      __A)
        print()


if __name__ == "__main__":
      import doctest

      doctest.testmod()
      benchmark()







'''simple docstring'''







import math
from timeit import timeit







def _UpperCamelCase			(	__A       )				->						int:


      '''simple docstring'''



      UpperCamelCase__      =							0
      UpperCamelCase__      =							abs(__A       )
      while True:
            UpperCamelCase__      =							n // 10
            digits += 1
            if n == 0:
                  break
      return digits







def _UpperCamelCase			(	__A       )				->						int:


      '''simple docstring'''



      return 1 if n == 0 else math.floor(math.log(abs(__A       ) ,     10       ) + 1       )







def _UpperCamelCase			(	__A       )				->						int:


      '''simple docstring'''



      return len(str(abs(__A       )       )       )







def _UpperCamelCase			(	)				->						None:


      '''simple docstring'''



      from collections.abc import Callable

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

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


if __name__ == "__main__":
  import doctest

  doctest.testmod()
  benchmark()





