'''simple docstring'''




from math import pi, sqrt






def 				snake_case__							(			_A:					float )    ->	float:

		'''simple docstring'''


		if num <= 0:
				raise ValueError("""math domain error""" )
		if num > 171.5:
				raise OverflowError("""math range error""" )
		elif num - int(_A ) not in (0, 0.5):
				raise NotImplementedError("""num must be an integer or a half-integer""" )
		elif num == 0.5:
				return sqrt(_A )
		else:
				return 1.0 if num == 1 else (num - 1) * gamma(num - 1 )






def 				snake_case__							(			)    ->	None:

		'''simple docstring'''


		assert gamma(0.5 ) == sqrt(_A )
		assert gamma(1 ) == 1.0
		assert gamma(2 ) == 1.0


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

						testmod()
						__lowercase          =  1.0
						while num:
												__lowercase          =  float(input('''Gamma of: '''))
												print(f'gamma({num}) = {gamma(num)}')
												print('''\nEnter 0 to exit...''')





'''simple docstring'''




from __future__ import annotations

from typing import Dict

from ...configuration_utils import PretrainedConfig


__lowercase          =  {
    '''susnato/ernie-m-base_pytorch''': '''https://huggingface.co/susnato/ernie-m-base_pytorch/blob/main/config.json''',
    '''susnato/ernie-m-large_pytorch''': '''https://huggingface.co/susnato/ernie-m-large_pytorch/blob/main/config.json''',
}






class 				a__(					lowerCAmelCase__	):


			'''simple docstring'''






			UpperCAmelCase_			:     List[str]      =       '''ernie_m'''
			UpperCAmelCase_			:     Dict[str, str]      =       {"dropout": "classifier_dropout", "num_classes": "num_labels"}



			def __init__(   self       ,    __lowerCAmelCase = 250002       ,    __lowerCAmelCase = 768       ,    __lowerCAmelCase = 12       ,    __lowerCAmelCase = 12       ,    __lowerCAmelCase = 3072       ,    __lowerCAmelCase = "gelu"       ,    __lowerCAmelCase = 0.1       ,    __lowerCAmelCase = 0.1       ,    __lowerCAmelCase = 514       ,    __lowerCAmelCase = 0.02       ,    __lowerCAmelCase = 1       ,    __lowerCAmelCase = 1E-0_5       ,    __lowerCAmelCase=None       ,    __lowerCAmelCase=False       ,    __lowerCAmelCase=0.0       ,    **__lowerCAmelCase       ,    ):




					"""simple docstring"""


					super().__init__(pad_token_id=__lowerCAmelCase       ,    **__lowerCAmelCase)
					lowerCAmelCase   					=  vocab_size
					lowerCAmelCase   					=  hidden_size
					lowerCAmelCase   					=  num_hidden_layers
					lowerCAmelCase   					=  num_attention_heads
					lowerCAmelCase   					=  intermediate_size
					lowerCAmelCase   					=  hidden_act
					lowerCAmelCase   					=  hidden_dropout_prob
					lowerCAmelCase   					=  attention_probs_dropout_prob
					lowerCAmelCase   					=  max_position_embeddings
					lowerCAmelCase   					=  initializer_range
					lowerCAmelCase   					=  layer_norm_eps
					lowerCAmelCase   					=  classifier_dropout
					lowerCAmelCase   					=  is_decoder
					lowerCAmelCase   					=  act_dropout




