
'''simple docstring'''







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

import datasets


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

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

_snake_case				:   int     =  """
Compute IndicGLUE evaluation metric associated to each IndicGLUE dataset.
Args:
    predictions: list of predictions to score (as int64),
        except for 'cvit-mkb-clsr' where each prediction is a vector (of float32).
    references: list of ground truth labels corresponding to the predictions (as int64),
        except for 'cvit-mkb-clsr' where each reference is a vector (of float32).
Returns: depending on the IndicGLUE subset, one or several of:
    \"accuracy\": Accuracy
    \"f1\": F1 score
    \"precision\": Precision@10
Examples:

    >>> 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\"]
    >>> references = [0, 1]
    >>> predictions = [0, 1]
    >>> results = indic_glue_metric.compute(predictions=predictions, references=references)
    >>> print(results)
    {'accuracy': 1.0}

    >>> indic_glue_metric = datasets.load_metric('indic_glue', 'wiki-ner')
    >>> references = [0, 1]
    >>> predictions = [0, 1]
    >>> results = indic_glue_metric.compute(predictions=predictions, references=references)
    >>> print(results)
    {'accuracy': 1.0, 'f1': 1.0}

    >>> indic_glue_metric = datasets.load_metric('indic_glue', 'cvit-mkb-clsr')
    >>> references = [[0.5, 0.5, 0.5], [0.1, 0.2, 0.3]]
    >>> predictions = [[0.5, 0.5, 0.5], [0.1, 0.2, 0.3]]
    >>> results = indic_glue_metric.compute(predictions=predictions, references=references)
    >>> print(results)
    {'precision@10': 1.0}

"""



def 			_a		(	_SCREAMING_SNAKE_CASE		:   List[str]	,			_SCREAMING_SNAKE_CASE		:   Any  ):
						return float((preds == labels).mean()  )



def 			_a		(	_SCREAMING_SNAKE_CASE		:   Optional[Any]	,			_SCREAMING_SNAKE_CASE		:   Optional[Any]  ):
						_SCREAMING_SNAKE_CASE				= simple_accuracy(_SCREAMING_SNAKE_CASE	,			_SCREAMING_SNAKE_CASE  )
						_SCREAMING_SNAKE_CASE				= float(fa_score(y_true=_SCREAMING_SNAKE_CASE	,			y_pred=_SCREAMING_SNAKE_CASE  )  )
						return {
						    "accuracy": acc,
						    "f1": fa,
						}



def 			_a		(	_SCREAMING_SNAKE_CASE		:   Union[str, Any]	,			_SCREAMING_SNAKE_CASE		:   int  ):
						_SCREAMING_SNAKE_CASE				= np.array(_SCREAMING_SNAKE_CASE  )
						_SCREAMING_SNAKE_CASE				= np.array(_SCREAMING_SNAKE_CASE  )
						_SCREAMING_SNAKE_CASE				= en_sentvecs.shape[0]

						# mean centering
						_SCREAMING_SNAKE_CASE				= en_sentvecs - np.mean(_SCREAMING_SNAKE_CASE	,			axis=0  )
						_SCREAMING_SNAKE_CASE				= in_sentvecs - np.mean(_SCREAMING_SNAKE_CASE	,			axis=0  )

						_SCREAMING_SNAKE_CASE				= cdist(_SCREAMING_SNAKE_CASE	,			_SCREAMING_SNAKE_CASE	,			"cosine"  )
						_SCREAMING_SNAKE_CASE				= np.array(range(_SCREAMING_SNAKE_CASE  )  )
						_SCREAMING_SNAKE_CASE				= sim.argsort(axis=1  )[:, :10]
						_SCREAMING_SNAKE_CASE				= np.any(preds == actual[:, None]	,			axis=1  )
						return float(matches.mean()  )




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




		def     lowercase       (				self      ):
								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     lowercase       (				self					,						UpperCamelCase					,						UpperCamelCase      ):
								if self.config_name == "cvit-mkb-clsr":
														return {"precision@10": precision_at_aa(UpperCamelCase					,						UpperCamelCase      )}
								elif self.config_name in ["wiki-ner"]:
														return acc_and_fa(UpperCamelCase					,						UpperCamelCase      )
								elif self.config_name in [
								    "wnli",
								    "copa",
								    "sna",
								    "csqa",
								    "wstp",
								    "inltkh",
								    "bbca",
								    "iitp-mr",
								    "iitp-pr",
								    "actsa-sc",
								    "md",
								]:
														return {"accuracy": simple_accuracy(UpperCamelCase					,						UpperCamelCase      )}
								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'''







def 			_a		(	_SCREAMING_SNAKE_CASE		:   list[int]	,			_SCREAMING_SNAKE_CASE		:   list[int]  ):

						# Check if the input is valid
						if not len(_SCREAMING_SNAKE_CASE  ) == len(_SCREAMING_SNAKE_CASE  ) == 3:
												raise ValueError("Please enter a valid equation."  )
						if equationa[0] == equationa[1] == equationa[0] == equationa[1] == 0:
												raise ValueError("Both a & b of two equations can't be zero."  )

						# Extract the coefficients
						_SCREAMING_SNAKE_CASE,							_SCREAMING_SNAKE_CASE,							_SCREAMING_SNAKE_CASE				= equationa
						_SCREAMING_SNAKE_CASE,							_SCREAMING_SNAKE_CASE,							_SCREAMING_SNAKE_CASE				= equationa

						# Calculate the determinants of the matrices
						_SCREAMING_SNAKE_CASE				= aa * ba - aa * ba
						_SCREAMING_SNAKE_CASE				= ca * ba - ca * ba
						_SCREAMING_SNAKE_CASE				= aa * ca - aa * ca

						# Check if the system of linear equations has a solution (using Cramer's rule)
						if determinant == 0:
												if determinant_x == determinant_y == 0:
																		raise ValueError("Infinite solutions. (Consistent system)"  )
												else:
																		raise ValueError("No solution. (Inconsistent system)"  )
						else:
												if determinant_x == determinant_y == 0:
																		# Trivial solution (Inconsistent system)
																		return (0.0, 0.0)
												else:
																		_SCREAMING_SNAKE_CASE				= determinant_x / determinant
																		_SCREAMING_SNAKE_CASE				= determinant_y / determinant
																		# Non-Trivial Solution (Consistent system)
																		return (x, y)