




'''simple docstring'''





from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_flax_available,
    is_tf_available,
    is_torch_available,
)


UpperCamelCase_						:      Tuple       =						{
    'configuration_roberta_prelayernorm': [
        'ROBERTA_PRELAYERNORM_PRETRAINED_CONFIG_ARCHIVE_MAP',
        'RobertaPreLayerNormConfig',
        'RobertaPreLayerNormOnnxConfig',
    ],
}

try:
			if not is_torch_available():
						raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
			pass
else:
			UpperCamelCase_						:      Dict       =						[
			    'ROBERTA_PRELAYERNORM_PRETRAINED_MODEL_ARCHIVE_LIST',
			    'RobertaPreLayerNormForCausalLM',
			    'RobertaPreLayerNormForMaskedLM',
			    'RobertaPreLayerNormForMultipleChoice',
			    'RobertaPreLayerNormForQuestionAnswering',
			    'RobertaPreLayerNormForSequenceClassification',
			    'RobertaPreLayerNormForTokenClassification',
			    'RobertaPreLayerNormModel',
			    'RobertaPreLayerNormPreTrainedModel',
			]

try:
			if not is_tf_available():
						raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
			pass
else:
			UpperCamelCase_						:      int       =						[
			    'TF_ROBERTA_PRELAYERNORM_PRETRAINED_MODEL_ARCHIVE_LIST',
			    'TFRobertaPreLayerNormForCausalLM',
			    'TFRobertaPreLayerNormForMaskedLM',
			    'TFRobertaPreLayerNormForMultipleChoice',
			    'TFRobertaPreLayerNormForQuestionAnswering',
			    'TFRobertaPreLayerNormForSequenceClassification',
			    'TFRobertaPreLayerNormForTokenClassification',
			    'TFRobertaPreLayerNormMainLayer',
			    'TFRobertaPreLayerNormModel',
			    'TFRobertaPreLayerNormPreTrainedModel',
			]

try:
			if not is_flax_available():
						raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
			pass
else:
			UpperCamelCase_						:      Tuple       =						[
			    'FlaxRobertaPreLayerNormForCausalLM',
			    'FlaxRobertaPreLayerNormForMaskedLM',
			    'FlaxRobertaPreLayerNormForMultipleChoice',
			    'FlaxRobertaPreLayerNormForQuestionAnswering',
			    'FlaxRobertaPreLayerNormForSequenceClassification',
			    'FlaxRobertaPreLayerNormForTokenClassification',
			    'FlaxRobertaPreLayerNormModel',
			    'FlaxRobertaPreLayerNormPreTrainedModel',
			]


if TYPE_CHECKING:
			from .configuration_roberta_prelayernorm import (
			    ROBERTA_PRELAYERNORM_PRETRAINED_CONFIG_ARCHIVE_MAP,
			    RobertaPreLayerNormConfig,
			    RobertaPreLayerNormOnnxConfig,
			)

			try:
						if not is_torch_available():
									raise OptionalDependencyNotAvailable()
			except OptionalDependencyNotAvailable:
						pass
			else:
						from .modeling_roberta_prelayernorm import (
						    ROBERTA_PRELAYERNORM_PRETRAINED_MODEL_ARCHIVE_LIST,
						    RobertaPreLayerNormForCausalLM,
						    RobertaPreLayerNormForMaskedLM,
						    RobertaPreLayerNormForMultipleChoice,
						    RobertaPreLayerNormForQuestionAnswering,
						    RobertaPreLayerNormForSequenceClassification,
						    RobertaPreLayerNormForTokenClassification,
						    RobertaPreLayerNormModel,
						    RobertaPreLayerNormPreTrainedModel,
						)

			try:
						if not is_tf_available():
									raise OptionalDependencyNotAvailable()
			except OptionalDependencyNotAvailable:
						pass
			else:
						from .modeling_tf_roberta_prelayernorm import (
						    TF_ROBERTA_PRELAYERNORM_PRETRAINED_MODEL_ARCHIVE_LIST,
						    TFRobertaPreLayerNormForCausalLM,
						    TFRobertaPreLayerNormForMaskedLM,
						    TFRobertaPreLayerNormForMultipleChoice,
						    TFRobertaPreLayerNormForQuestionAnswering,
						    TFRobertaPreLayerNormForSequenceClassification,
						    TFRobertaPreLayerNormForTokenClassification,
						    TFRobertaPreLayerNormMainLayer,
						    TFRobertaPreLayerNormModel,
						    TFRobertaPreLayerNormPreTrainedModel,
						)

			try:
						if not is_flax_available():
									raise OptionalDependencyNotAvailable()
			except OptionalDependencyNotAvailable:
						pass
			else:
						from .modeling_flax_roberta_prelayernorm import (
						    FlaxRobertaPreLayerNormForCausalLM,
						    FlaxRobertaPreLayerNormForMaskedLM,
						    FlaxRobertaPreLayerNormForMultipleChoice,
						    FlaxRobertaPreLayerNormForQuestionAnswering,
						    FlaxRobertaPreLayerNormForSequenceClassification,
						    FlaxRobertaPreLayerNormForTokenClassification,
						    FlaxRobertaPreLayerNormModel,
						    FlaxRobertaPreLayerNormPreTrainedModel,
						)

else:
			import sys

			UpperCamelCase_						:      Union[str, Any]       =						_LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)








'''simple docstring'''





from decimal import Decimal, getcontext
from math import ceil, factorial





def      __a     (       _UpperCamelCase:   int   )						->			str:

     """simple docstring"""




     if not isinstance(_UpperCamelCase ,						_UpperCamelCase   ):
          raise TypeError("Undefined for non-integers"   )
     elif precision < 1:
          raise ValueError("Undefined for non-natural numbers"   )

     _snake_case							=				precision
     _snake_case							=				ceil(precision / 14   )
     _snake_case							=				426_880 * Decimal(10_005   ).sqrt()
     _snake_case							=				1
     _snake_case							=				13_591_409
     _snake_case							=				Decimal(_UpperCamelCase   )
     for k in range(1 ,						_UpperCamelCase   ):
          _snake_case							=				factorial(6 * k   ) // (factorial(3 * k   ) * factorial(_UpperCamelCase   ) ** 3)
          linear_term += 545_140_134
          exponential_term *= -262_537_412_640_768_000
          partial_sum += Decimal(multinomial_term * linear_term   ) / exponential_term
     return str(constant_term / partial_sum   )[:-1]


if __name__ == "__main__":
   UpperCamelCase_						:      Any       =						50
   print(F'The first {n} digits of pi is: {pi(n)}')


