




import math
from timeit import timeit

def 	lowerCAmelCase_	(     lowerCamelCase:				int  )    ->	int:


      '''simple docstring'''




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

def 	lowerCAmelCase_	(     lowerCamelCase:				int  )    ->	int:


      '''simple docstring'''




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

def 	lowerCAmelCase_	(     lowerCamelCase:				int  )    ->	int:


      '''simple docstring'''




      return len(str(abs(lowerCamelCase  )  )  )

def 	lowerCAmelCase_	(     )    ->	None:


      '''simple docstring'''




      from collections.abc import Callable

      def benchmark_a_function(lowerCamelCase:				Callable   , lowerCamelCase:				int  ) -> None:
            lowerCamelCase__					     = f"""{func.__name__}({value})"""
            lowerCamelCase__					     = timeit(f"""__main__.{call}"""   , setup='import __main__'  )
            print(f"""{call}: {func(lowerCamelCase  )} -- {timing} seconds"""  )

      for value in (26_21_44, 11_25_89_99_06_84_26_24, 1_26_76_50_60_02_28_22_94_01_49_67_03_20_53_76):
            for func in (num_digits, num_digits_fast, num_digits_faster):
                  benchmark_a_function(lowerCamelCase   , lowerCamelCase  )
            print()


if __name__ == "__main__":
      import doctest

      doctest.testmod()
      benchmark()





import unittest

import numpy as np

from transformers import is_tf_available
from transformers.testing_utils import require_tf


if is_tf_available():
				import tensorflow as tf

				from transformers.activations_tf import get_tf_activation





@require_tf
class 		A__				(   unittest.TestCase ):






	def  lowercase      (	self						)      ->   Dict:




						"""simple docstring"""






						__magic_name__					:							int		   =							tf.constant([-100, -1.0, -0.1, 0, 0.1, 1.0, 1_0_0.0]						)
						__magic_name__					:							List[str]		   =							get_tf_activation('''gelu'''						)
						__magic_name__					:							str		   =							get_tf_activation('''gelu_10'''						)

						__magic_name__					:							List[str]		   =							gelu(lowerCamelCase						)
						__magic_name__					:							Optional[Any]		   =							geluaa(lowerCamelCase						)

						__magic_name__					:							Optional[int]		   =							tf.where(y_gelu_aa < 1_0.0				,     1.0				,     0.0						)

						self.assertEqual(tf.math.reduce_max(lowerCamelCase						).numpy().item()				,     1_0.0						)
						self.assertTrue(np.allclose(y_gelu * clipped_mask				,     y_gelu_aa * clipped_mask						)						)






	def  lowercase      (	self						)      ->   Dict:




						"""simple docstring"""






						get_tf_activation('''gelu'''						)
						get_tf_activation('''gelu_10'''						)
						get_tf_activation('''gelu_fast'''						)
						get_tf_activation('''gelu_new'''						)
						get_tf_activation('''glu'''						)
						get_tf_activation('''mish'''						)
						get_tf_activation('''quick_gelu'''						)
						get_tf_activation('''relu'''						)
						get_tf_activation('''sigmoid'''						)
						get_tf_activation('''silu'''						)
						get_tf_activation('''swish'''						)
						get_tf_activation('''tanh'''						)
						with self.assertRaises(lowerCamelCase						):
											get_tf_activation('''bogus'''						)
						with self.assertRaises(lowerCamelCase						):
											get_tf_activation(lowerCamelCase						)



