




from __future__ import annotations

from collections.abc import Generator




def        __SCREAMING_SNAKE_CASE (	lowercase_   )							->						Generator[int, None, None]:

    """simple docstring"""


    if not isinstance(lowercase_       ,  lowercase_   ) or n < 1:
        raise Exception('''Sequence only defined for positive integers'''   )

    yield n
    while n != 1:
        if n % 2 == 0:
            n //= 2
        else:
            __UpperCamelCase			=    3 * n + 1
        yield n




def        __SCREAMING_SNAKE_CASE (	)							->						Any:

    """simple docstring"""


    __UpperCamelCase			=    43
    __UpperCamelCase			=    tuple(collatz_sequence(lowercase_   )   )
    print(lowercase_   )
    print(F"Collatz sequence from {n} took {len(lowercase_   )} steps."   )


if __name__ == "__main__":
 main()







"""simple docstring"""




from collections.abc import Callable

UpperCAmelCase       :    Optional[int]									=			Callable[[float], float]  # type alias for a real -> real function



def 				__a       (			_lowercase							, _lowercase							, _lowercase							, ):







					"""simple docstring"""





					lowerCamelCase__		:   Tuple  				=					float(_lowercase						)
					while True:
										try:
															lowerCamelCase__		:   str  				=					prev_guess - function(_lowercase						) / derivative(_lowercase						)
										except ZeroDivisionError:
															raise ZeroDivisionError('''Could not find root'''						) from None
										if abs(prev_guess - next_guess						) < 10**-5:
															return next_guess
										lowerCamelCase__		:   List[str]  				=					next_guess



def 				__a       (			_lowercase						):







					"""simple docstring"""





					return (x**3) - (2 * x) - 5



def 				__a       (			_lowercase						):







					"""simple docstring"""





					return 3 * (x**2) - 2


if __name__ == "__main__":
					print(newton(f, fa, 3))






