

"""simple docstring"""


import math_equivalence  # From: git+https://github.com/hendrycks/math.git

import datasets


UpperCAmelCase													="\\n@article{hendrycksmath2021,\n  title={Measuring Mathematical Problem Solving With the MATH Dataset},\n  author={Dan Hendrycks\n    and Collin Burns\n    and Saurav Kadavath\n    and Akul Arora\n    and Steven Basart\n    and Eric Tang\n    and Dawn Song\n    and Jacob Steinhardt},\n  journal={arXiv preprint arXiv:2103.03874},\n  year={2021}\n}\n"


UpperCAmelCase													="\\nThis metric is used to assess performance on the Mathematics Aptitude Test of Heuristics (MATH) dataset.\nIt first canonicalizes the inputs (e.g., converting \"1/2\" to \"\\frac{1}{2}\") and then computes accuracy.\n"


UpperCAmelCase													=R"\nCalculates accuracy after canonicalizing inputs.\n\nArgs:\n    predictions: list of predictions to score. Each prediction\n        is a string that contains natural language and LaTex.\n    references: list of reference for each prediction. Each\n        reference is a string that contains natural language\n        and LaTex.\nReturns:\n    accuracy: accuracy after canonicalizing inputs\n        (e.g., converting \"1/2\" to \"\\frac{1}{2}\")\n\nExamples:\n    >>> metric = datasets.load_metric(\"competition_math\")\n    >>> results = metric.compute(references=[\"\\frac{1}{2}\"], predictions=[\"1/2\"])\n    >>> print(results)\n    {'accuracy': 1.0}\n"





@datasets.utils.file_utils.add_end_docstrings(_DESCRIPTION     ,   _KWARGS_DESCRIPTION    )
class lowerCamelCase__   (				datasets.Metric    ):



    '''simple docstring'''




    def UpperCamelCase__		( self    )    ->      Union[str, Any]:
          return datasets.MetricInfo(
              description=_DESCRIPTION ,citation=_CITATION ,inputs_description=_KWARGS_DESCRIPTION ,features=datasets.Features(
                  {
                      """predictions""": datasets.Value("""string"""    ),
                      """references""": datasets.Value("""string"""    ),
                  }    ) ,homepage="""https://github.com/hendrycks/math""" ,codebase_urls=["""https://github.com/hendrycks/math"""] ,)




    def UpperCamelCase__		( self ,lowerCamelCase_ ,lowerCamelCase_    )    ->      Union[str, Any]:
          A				  =		0.0
          for i, j in zip(lowerCamelCase_ ,lowerCamelCase_    ):
                n_correct += 1.0 if math_equivalence.is_equiv(lowerCamelCase_ ,lowerCamelCase_    ) else 0.0
          A				  =		n_correct / len(lowerCamelCase_    )
          return {
              "accuracy": accuracy,
          }







"""simple docstring"""


from math import pow, sqrt



def   _A					(	*_a	:						float				):



      """simple docstring"""






      A				  =		len(_a				) > 0 and all(value > 0.0 for value in values				)
      return result



def   _A					(	_a	:						float     ,   _a	:						float				):



      """simple docstring"""






      return (
          round(sqrt(molar_mass_a / molar_mass_a				)     ,   6				)
          if validate(_a     ,   _a				)
          else ValueError("""Input Error: Molar mass values must greater than 0."""				)
      )



def   _A					(	_a	:						float     ,   _a	:						float     ,   _a	:						float				):



      """simple docstring"""






      return (
          round(effusion_rate * sqrt(molar_mass_a / molar_mass_a				)     ,   6				)
          if validate(_a     ,   _a     ,   _a				)
          else ValueError(
              """Input Error: Molar mass and effusion rate values must greater than 0."""				)
      )



def   _A					(	_a	:						float     ,   _a	:						float     ,   _a	:						float				):



      """simple docstring"""






      return (
          round(effusion_rate / sqrt(molar_mass_a / molar_mass_a				)     ,   6				)
          if validate(_a     ,   _a     ,   _a				)
          else ValueError(
              """Input Error: Molar mass and effusion rate values must greater than 0."""				)
      )



def   _A					(	_a	:						float     ,   _a	:						float     ,   _a	:						float				):



      """simple docstring"""






      return (
          round(molar_mass / pow(effusion_rate_a / effusion_rate_a     ,   2				)     ,   6				)
          if validate(_a     ,   _a     ,   _a				)
          else ValueError(
              """Input Error: Molar mass and effusion rate values must greater than 0."""				)
      )





def   _A					(	_a	:						float     ,   _a	:						float     ,   _a	:						float				):



      """simple docstring"""






      return (
          round(pow(effusion_rate_a / effusion_rate_a     ,   2				) / molar_mass     ,   6				)
          if validate(_a     ,   _a     ,   _a				)
          else ValueError(
              """Input Error: Molar mass and effusion rate values must greater than 0."""				)
      )




