




'''simple docstring'''





import math
from timeit import timeit





def UpperCAmelCase						(					UpperCAmelCase_	):
				_a							:       Optional[Any]       					=			0
				_a							:       Any       					=			abs(_A	)
				while True:
								_a							:       Optional[int]       					=			n // 10
								digits += 1
								if n == 0:
												break
				return digits





def UpperCAmelCase						(					UpperCAmelCase_	):
				return 1 if n == 0 else math.floor(math.log(abs(_A	)      ,  10	) + 1	)





def UpperCAmelCase						(					UpperCAmelCase_	):
				return len(str(abs(_A	)	)	)





def UpperCAmelCase						(					):
				from collections.abc import Callable

				def benchmark_a_function(UpperCAmelCase_      ,  UpperCAmelCase_	) -> None:
								_a							:       Optional[Any]       					=			F'''{func.__name__}({value})'''
								_a							:       List[str]       					=			timeit(F'''__main__.{call}'''      ,  setup="""import __main__"""	)
								print(F'''{call}: {func(_A	)} -- {timing} seconds'''	)

				for value in (262_144, 1_125_899_906_842_624, 1_267_650_600_228_229_401_496_703_205_376):
								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'''





from cva import COLOR_BGR2GRAY, cvtColor, imread, imshow, waitKey
from numpy import divide, inta, multiply, ravel, sort, zeros_like





def UpperCAmelCase						(					UpperCAmelCase_      ,  UpperCAmelCase_=3	):
    _a							:       Optional[Any]       					=			int(mask / 2	)
    # copy image size
    _a							:       Optional[int]       					=			zeros_like(UpperCAmelCase_	)
    for i in range(UpperCAmelCase_      ,  gray_img.shape[0] - bd	):
        for j in range(UpperCAmelCase_      ,  gray_img.shape[1] - bd	):
            # get mask according with mask
            _a							:       List[str]       					=			ravel(gray_img[i - bd : i + bd + 1, j - bd : j + bd + 1]	)
            # calculate mask median
            _a							:       Optional[Any]       					=			sort(UpperCAmelCase_	)[inta(divide((multiply(UpperCAmelCase_      ,  UpperCAmelCase_	))      ,  2	) + 1	)]
            _a							:       int       					=			median
    return median_img


if __name__ == "__main__":
  # read original image
  a		:  List[Any]   			=			imread('''../image_data/lena.jpg''')
  # turn image in gray scale value
  a		:  Optional[Any]   			=			cvtColor(img, COLOR_BGR2GRAY)

  # get values with two different mask size
  a		:  str   			=			median_filter(gray, 3)
  a		:  Optional[Any]   			=			median_filter(gray, 5)

  # show result images
  imshow('''median filter with 3x3 mask''', medianaxa)
  imshow('''median filter with 5x5 mask''', medianaxa)
  waitKey(0)


