"""simple docstring"""





import importlib
import sys
from argparse import REMAINDER, ArgumentParser
from pathlib import Path

import torch_xla.distributed.xla_multiprocessing as xmp



def      lowerCamelCase_()->    Any:
							_SCREAMING_SNAKE_CASE		:						Any			  =    ArgumentParser(
							    description=(
							        """PyTorch TPU distributed training launch """
							        """helper utility that will spawn up """
							        """multiple distributed processes"""
							    )  )

							# Optional arguments for the launch helper
							parser.add_argument("""--num_cores"""     ,	type=__SCREAMING_SNAKE_CASE     ,	default=1     ,	help="""Number of TPU cores to use (1 or 8)."""  )

							# positional
							parser.add_argument(
							    """training_script"""     ,	type=__SCREAMING_SNAKE_CASE     ,	help=(
							        """The full path to the single TPU training """
							        """program/script to be launched in parallel, """
							        """followed by all the arguments for the """
							        """training script"""
							    )     ,	)

							# rest from the training program
							parser.add_argument("""training_script_args"""     ,	nargs=__SCREAMING_SNAKE_CASE  )

							return parser.parse_args()



def      lowerCamelCase_()->    List[Any]:
							_SCREAMING_SNAKE_CASE		:						Optional[Any]			  =    parse_args()

							# Import training_script as a module.
							_SCREAMING_SNAKE_CASE		:						Optional[Any]			  =    Path(args.training_script  )
							sys.path.append(str(script_fpath.parent.resolve()  )  )
							_SCREAMING_SNAKE_CASE		:						List[str]			  =    script_fpath.stem
							_SCREAMING_SNAKE_CASE		:						Optional[Any]			  =    importlib.import_module(__SCREAMING_SNAKE_CASE  )

							# Patch sys.argv
							_SCREAMING_SNAKE_CASE		:						Optional[Any]			  =    [args.training_script] + args.training_script_args + ["""--tpu_num_cores""", str(args.num_cores  )]
							xmp.spawn(mod._mp_fn     ,	args=()     ,	nprocs=args.num_cores  )


if __name__ == "__main__":
			main()



"""simple docstring"""





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



def      lowerCamelCase_(__SCREAMING_SNAKE_CASE  )->    str:

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

							_SCREAMING_SNAKE_CASE		:						int			  =    precision
							_SCREAMING_SNAKE_CASE		:						Dict			  =    ceil(precision / 14  )
							_SCREAMING_SNAKE_CASE		:						int			  =    426_880 * Decimal(10_005  ).sqrt()
							_SCREAMING_SNAKE_CASE		:						Union[str, Any]			  =    1
							_SCREAMING_SNAKE_CASE		:						str			  =    13_591_409
							_SCREAMING_SNAKE_CASE		:						Tuple			  =    Decimal(__SCREAMING_SNAKE_CASE  )
							for k in range(1     ,	__SCREAMING_SNAKE_CASE  ):
														_SCREAMING_SNAKE_CASE		:						Tuple			  =    factorial(6 * k  ) // (factorial(3 * k  ) * factorial(__SCREAMING_SNAKE_CASE  ) ** 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__":
			lowerCAmelCase_     =	50
			print(F"The first {n} digits of pi is: {pi(n)}")


