
import torch
from transformers import PreTrainedModel, XLMRobertaConfig, XLMRobertaModel







class        lowercase	(      SCREAMING_SNAKE_CASE__	):
							lowercase_ : Optional[Any]       ='''M-CLIP'''




							def __init__(       self     ,A__=1_0_2_4     ,A__=7_6_8     ,**A__):
												lowercase					=		transformerDimSize
												lowercase					=		imageDimSize
												super().__init__(**__lowerCAmelCase)







class        lowercase	(      SCREAMING_SNAKE_CASE__	):
							lowercase_ : Optional[Any]       =MCLIPConfig




							def __init__(       self     ,A__     ,*A__     ,**A__):
												super().__init__(__lowerCAmelCase     ,*__lowerCAmelCase     ,**__lowerCAmelCase)
												lowercase					=		XLMRobertaModel(__lowerCAmelCase)
												lowercase					=		torch.nn.Linear(
												    in_features=config.transformerDimensions     ,out_features=config.numDims)





							def 				A__   (       self     ,A__     ,A__):
												lowercase					=		self.transformer(input_ids=__lowerCAmelCase     ,attention_mask=__lowerCAmelCase)[0]
												lowercase					=		(embs * attention_mask.unsqueeze(2)).sum(dim=1) / attention_mask.sum(dim=1)[:, None]
												return self.LinearTransformation(__lowerCAmelCase), embs



from __future__ import annotations

from decimal import Decimal
from math import *  # noqa: F403

from sympy import diff



def  UpperCamelCase					(							lowerCAmelCase__				,    lowerCAmelCase__				,    lowerCAmelCase__ = 10**-10	):
					'''simple docstring'''
					lowercase					=		a
					while True:
										lowercase					=		Decimal(lowerCAmelCase__	) - (
										    Decimal(eval(lowerCAmelCase__	)	) / Decimal(eval(str(diff(lowerCAmelCase__	)	)	)	)  # noqa: S307
										)
										# This number dictates the accuracy of the answer
										if abs(eval(lowerCAmelCase__	)	) < precision:  # noqa: S307
															return float(lowerCAmelCase__	)


# Let's Execute
if __name__ == "__main__":
							# Find root of trigonometric function
							# Find value of pi
							print(F'The root of sin(x) = 0 is {newton_raphson("sin(x)", 2)}')
							# Find root of polynomial
							print(F'The root of x**2 - 5*x + 2 = 0 is {newton_raphson("x**2 - 5*x + 2", 0.4)}')
							# Find Square Root of 5
							print(F'The root of log(x) - 1 = 0 is {newton_raphson("log(x) - 1", 2)}')
							# Exponential Roots
							print(F'The root of exp(x) - 1 = 0 is {newton_raphson("exp(x) - 1", 0)}')




