


'''simple docstring'''







from ...configuration_utils import PretrainedConfig
from ...utils import logging


a__    :   Optional[Any]								=			logging.get_logger(__name__)

a__    :   Optional[int]								=			{
    'dandelin/vilt-b32-mlm': 'https://huggingface.co/dandelin/vilt-b32-mlm/blob/main/config.json'
}
class    lowercase_	(       a__  ):
    __UpperCAmelCase       =      'vilt'


    def __init__(	self    ,   a=3_05_22    ,   a=2    ,   a=2    ,   a=40    ,   a=7_68    ,   a=12    ,   a=12    ,   a=30_72    ,   a="gelu"    ,   a=0.0    ,   a=0.0    ,   a=0.02    ,   a=1e-12    ,   a=3_84    ,   a=32    ,   a=3    ,   a=True    ,   a=-1    ,   a=False    ,   a=-1    ,   **a    ,   ):
          super().__init__(tie_word_embeddings=a    ,   **a       )

          UpperCamelCase__      =							vocab_size
          UpperCamelCase__      =							type_vocab_size
          UpperCamelCase__      =							modality_type_vocab_size
          UpperCamelCase__      =							max_position_embeddings

          UpperCamelCase__      =							hidden_size
          UpperCamelCase__      =							num_hidden_layers
          UpperCamelCase__      =							num_attention_heads
          UpperCamelCase__      =							intermediate_size
          UpperCamelCase__      =							hidden_act
          UpperCamelCase__      =							hidden_dropout_prob
          UpperCamelCase__      =							attention_probs_dropout_prob
          UpperCamelCase__      =							initializer_range
          UpperCamelCase__      =							layer_norm_eps

          UpperCamelCase__      =							image_size
          UpperCamelCase__      =							patch_size
          UpperCamelCase__      =							num_channels
          UpperCamelCase__      =							qkv_bias
          UpperCamelCase__      =							max_image_length
          UpperCamelCase__      =							num_images









'''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()





