


'''simple docstring'''

from __future__ import annotations

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

from sympy import diff





def lowerCamelCase      (      lowerCAmelCase    :     str		,		lowerCAmelCase    :     float | Decimal		,		lowerCAmelCase    :     float = 10**-10		):





	"""simple docstring"""







	__magic_name__	:   Tuple					     =					a
	while True:
		__magic_name__	:   Optional[Any]					     =					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)}')



'''simple docstring'''

def lowerCamelCase      (      lowerCAmelCase    :     int		):





	"""simple docstring"""







	if not isinstance(lowerCAmelCase		,		lowerCAmelCase		):
		__magic_name__	:   int					     =					f'Input value of [number={number}] must be an integer'
		raise TypeError(lowerCAmelCase		)
	if number < 0:
		return False
	__magic_name__	:   Tuple					     =					number * number
	while number > 0:
		if number % 10 != number_square % 10:
			return False
		number //= 10
		number_square //= 10
	return True


if __name__ == "__main__":
							import doctest

							doctest.testmod()