from __future__ import annotations

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

from sympy import diff





def 				UpperCAmelCase						(    lowercase							,			lowercase							,			lowercase = 10**-10							):







				"""simple docstring"""



				__lowercase 			=							a
				while True:
								__lowercase 			=							Decimal(lowercase							) - (
								    Decimal(eval(lowercase							)							) / Decimal(eval(str(diff(lowercase							)							)							)							)  # noqa: S307
								)
								# This number dictates the accuracy of the answer
								if abs(eval(lowercase							)							) < precision:  # noqa: S307
												return float(lowercase							)


# 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)}''')
import warnings
from functools import wraps
from typing import Callable





def 				UpperCAmelCase						(    lowercase							):







				"""simple docstring"""



				@wraps(lowercase							)
				def _inner_fn(*lowercase							,			**lowercase							):
								warnings.warn(
								    (F"'{fn.__name__}' is experimental and might be subject to breaking changes in the future.")							,			lowercase							,			)
								return fn(*lowercase							,			**lowercase							)

				return _inner_fn