


from sympy import diff, lambdify, symbols
from sympy.functions import *  # noqa: F403





def   _UpperCAmelCase       (     UpperCAmelCase      :			str						,	UpperCAmelCase      :			complex						,	UpperCAmelCase      :			str = "x"						,	UpperCAmelCase      :			float = 10**-10						,	UpperCAmelCase      :			int = 1						,	):
      """simple docstring"""




      __lowerCamelCase     :      Optional[Any]       						=						symbols(UpperCAmelCase      )
      __lowerCamelCase     :      str       						=						lambdify(UpperCAmelCase						,	UpperCAmelCase      )
      __lowerCamelCase     :      Tuple       						=						lambdify(UpperCAmelCase						,	diff(UpperCAmelCase						,	UpperCAmelCase      )      )

      __lowerCamelCase     :      List[str]       						=						starting_point

      while True:
            if diff_function(UpperCAmelCase      ) != 0:
                  __lowerCamelCase     :      Tuple       						=						prev_guess - multiplicity * func(UpperCAmelCase      ) / diff_function(
                      UpperCAmelCase      )
            else:
                  raise ZeroDivisionError("""Could not find root"""      ) from None

            # Precision is checked by comparing the difference of consecutive guesses
            if abs(next_guess - prev_guess      ) < precision:
                  return next_guess

            __lowerCamelCase     :      Tuple       						=						next_guess


# 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
    # Find fourth Root of 5
    print(F'''The root of x**4 - 5 = 0 is {newton_raphson('x**4 -5', 0.4 +5J)}''')

    # Find value of e
    print(
        'The root of log(y) - 1 = 0 is ',
        F'''{newton_raphson('log(y) - 1', 2, variable='y')}''',
    )

    # Exponential Roots
    print(
        'The root of exp(x) - 1 = 0 is',
        F'''{newton_raphson('exp(x) - 1', 10, precision=0.005)}''',
    )

    # Find root of cos(x)
    print(F'''The root of cos(x) = 0 is {newton_raphson('cos(x)', 0)}''')







from typing import Any





def   _UpperCAmelCase       (     UpperCAmelCase      :			list      ):
      """simple docstring"""




      if not input_list:
            return []
      __lowerCamelCase     :      int       						=						[input_list.count(UpperCAmelCase      ) for value in input_list]
      __lowerCamelCase     :      Tuple       						=						max(UpperCAmelCase      )  # Gets the maximum count in the input list.
      # Gets values of modes
      return sorted({input_list[i] for i, value in enumerate(UpperCAmelCase      ) if value == y}      )


if __name__ == "__main__":
    import doctest

    doctest.testmod()



