






'''simple docstring'''
import numpy as np
from scipy.spatial.distance import cdist
from sklearn.metrics import fa_score

import datasets


a_					=	"\\n    @inproceedings{kakwani2020indicnlpsuite,\n    title={{IndicNLPSuite: Monolingual Corpora, Evaluation Benchmarks and Pre-trained Multilingual Language Models for Indian Languages}},\n    author={Divyanshu Kakwani and Anoop Kunchukuttan and Satish Golla and Gokul N.C. and Avik Bhattacharyya and Mitesh M. Khapra and Pratyush Kumar},\n    year={2020},\n    booktitle={Findings of EMNLP},\n}\n"

a_					=	"\\n    IndicGLUE is a natural language understanding benchmark for Indian languages. It contains a wide\n    variety of tasks and covers 11 major Indian languages - as, bn, gu, hi, kn, ml, mr, or, pa, ta, te.\n"

a_					=	"\nCompute IndicGLUE evaluation metric associated to each IndicGLUE dataset.\nArgs:\n    predictions: list of predictions to score (as int64),\n        except for 'cvit-mkb-clsr' where each prediction is a vector (of float32).\n    references: list of ground truth labels corresponding to the predictions (as int64),\n        except for 'cvit-mkb-clsr' where each reference is a vector (of float32).\nReturns: depending on the IndicGLUE subset, one or several of:\n    \"accuracy\": Accuracy\n    \"f1\": F1 score\n    \"precision\": Precision@10\nExamples:\n\n    >>> indic_glue_metric = datasets.load_metric('indic_glue', 'wnli')  # 'wnli' or any of [\"copa\", \"sna\", \"csqa\", \"wstp\", \"inltkh\", \"bbca\", \"iitp-mr\", \"iitp-pr\", \"actsa-sc\", \"md\"]\n    >>> references = [0, 1]\n    >>> predictions = [0, 1]\n    >>> results = indic_glue_metric.compute(predictions=predictions, references=references)\n    >>> print(results)\n    {'accuracy': 1.0}\n\n    >>> indic_glue_metric = datasets.load_metric('indic_glue', 'wiki-ner')\n    >>> references = [0, 1]\n    >>> predictions = [0, 1]\n    >>> results = indic_glue_metric.compute(predictions=predictions, references=references)\n    >>> print(results)\n    {'accuracy': 1.0, 'f1': 1.0}\n\n    >>> indic_glue_metric = datasets.load_metric('indic_glue', 'cvit-mkb-clsr')\n    >>> references = [[0.5, 0.5, 0.5], [0.1, 0.2, 0.3]]\n    >>> predictions = [[0.5, 0.5, 0.5], [0.1, 0.2, 0.3]]\n    >>> results = indic_glue_metric.compute(predictions=predictions, references=references)\n    >>> print(results)\n    {'precision@10': 1.0}\n\n"





def 	_a(					UpperCamelCase__			:  Dict,		UpperCamelCase__			:  int							):




      '''simple docstring'''






      return float((preds == labels).mean()							)





def 	_a(					UpperCamelCase__			:  str,		UpperCamelCase__			:  Dict							):




      '''simple docstring'''






      SCREAMING_SNAKE_CASE__       :			str													=simple_accuracy(lowerCamelCase__,		lowerCamelCase__							)
      SCREAMING_SNAKE_CASE__       :			Optional[int]													=float(fa_score(y_true=lowerCamelCase__,		y_pred=lowerCamelCase__							)							)
      return {
          "accuracy": acc,
          "f1": fa,
      }





def 	_a(					UpperCamelCase__			:  Optional[int],		UpperCamelCase__			:  int							):




      '''simple docstring'''






      SCREAMING_SNAKE_CASE__       :			Dict													=np.array(lowerCamelCase__							)
      SCREAMING_SNAKE_CASE__       :			int													=np.array(lowerCamelCase__							)
      SCREAMING_SNAKE_CASE__       :			str													=en_sentvecs.shape[0]

      # mean centering
      SCREAMING_SNAKE_CASE__       :			Optional[int]													=en_sentvecs - np.mean(lowerCamelCase__,		axis=0							)
      SCREAMING_SNAKE_CASE__       :			str													=in_sentvecs - np.mean(lowerCamelCase__,		axis=0							)

      SCREAMING_SNAKE_CASE__       :			Tuple													=cdist(lowerCamelCase__,		lowerCamelCase__,		'''cosine'''							)
      SCREAMING_SNAKE_CASE__       :			Optional[Any]													=np.array(range(lowerCamelCase__							)							)
      SCREAMING_SNAKE_CASE__       :			Any													=sim.argsort(axis=1							)[:, :1_0]
      SCREAMING_SNAKE_CASE__       :			List[str]													=np.any(preds == actual[:, None],		axis=1							)
      return float(matches.mean()							)







@datasets.utils.file_utils.add_start_docstrings(_DESCRIPTION		,			_KWARGS_DESCRIPTION			)
class        __SCREAMING_SNAKE_CASE (     datasets.Metric			):




 def        __magic_name__		( self		:							Union[str, Any] )		->  List[Any]:







       if self.config_name not in [
           "wnli",
           "copa",
           "sna",
           "csqa",
           "wstp",
           "inltkh",
           "bbca",
           "cvit-mkb-clsr",
           "iitp-mr",
           "iitp-pr",
           "actsa-sc",
           "md",
           "wiki-ner",
       ]:
             raise KeyError(
                 '''You should supply a configuration name selected in '''
                 '''[\"wnli\", \"copa\", \"sna\", \"csqa\", \"wstp\", \"inltkh\", \"bbca\", '''
                 '''\"cvit-mkb-clsr\", \"iitp-mr\", \"iitp-pr\", \"actsa-sc\", \"md\", '''
                 '''\"wiki-ner\"]''' )
       return datasets.MetricInfo(
           description=_DESCRIPTION   , citation=_CITATION   , inputs_description=_KWARGS_DESCRIPTION   , features=datasets.Features(
               {
                   '''predictions''': datasets.Value('''int64''' )
                   if self.config_name != '''cvit-mkb-clsr'''
                   else datasets.Sequence(datasets.Value('''float32''' ) ),
                   '''references''': datasets.Value('''int64''' )
                   if self.config_name != '''cvit-mkb-clsr'''
                   else datasets.Sequence(datasets.Value('''float32''' ) ),
               } )   , codebase_urls=[]   , reference_urls=[]   , format='''numpy''' if self.config_name != '''cvit-mkb-clsr''' else None   , )




 def        __magic_name__		( self		:							Optional[int]   , __lowercase		:							Optional[Any]   , __lowercase		:							Optional[int] )		->  Union[str, Any]:







       if self.config_name == "cvit-mkb-clsr":
             return {"precision@10": precision_at_aa(__lowercase   , __lowercase )}
       elif self.config_name in ["wiki-ner"]:
             return acc_and_fa(__lowercase   , __lowercase )
       elif self.config_name in [
           "wnli",
           "copa",
           "sna",
           "csqa",
           "wstp",
           "inltkh",
           "bbca",
           "iitp-mr",
           "iitp-pr",
           "actsa-sc",
           "md",
       ]:
             return {"accuracy": simple_accuracy(__lowercase   , __lowercase )}
       else:
             raise KeyError(
                 '''You should supply a configuration name selected in '''
                 '''[\"wnli\", \"copa\", \"sna\", \"csqa\", \"wstp\", \"inltkh\", \"bbca\", '''
                 '''\"cvit-mkb-clsr\", \"iitp-mr\", \"iitp-pr\", \"actsa-sc\", \"md\", '''
                 '''\"wiki-ner\"]''' )








'''simple docstring'''
from decimal import Decimal, getcontext
from math import ceil, factorial





def 	_a(					UpperCamelCase__			:  int							):




      '''simple docstring'''






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

      SCREAMING_SNAKE_CASE__       :			Optional[Any]													=precision
      SCREAMING_SNAKE_CASE__       :			int													=ceil(precision / 1_4							)
      SCREAMING_SNAKE_CASE__       :			int													=4_2_6_8_8_0 * Decimal(1_0_0_0_5							).sqrt()
      SCREAMING_SNAKE_CASE__       :			Tuple													=1
      SCREAMING_SNAKE_CASE__       :			Any													=1_3_5_9_1_4_0_9
      SCREAMING_SNAKE_CASE__       :			List[Any]													=Decimal(UpperCamelCase__							)
      for k in range(1,		UpperCamelCase__							):
            SCREAMING_SNAKE_CASE__       :			str													=factorial(6 * k							) // (factorial(3 * k							) * factorial(UpperCamelCase__							) ** 3)
            linear_term += 5_4_5_1_4_0_1_3_4
            exponential_term *= -2_6_2_5_3_7_4_1_2_6_4_0_7_6_8_0_0_0
            partial_sum += Decimal(multinomial_term * linear_term							) / exponential_term
      return str(constant_term / partial_sum							)[:-1]


if __name__ == "__main__":
  a_					=	5_0
  print(F'''The first {n} digits of pi is: {pi(n)}''')