


"""simple docstring"""







from collections.abc import Callable
from math import pi, sqrt
from random import uniform
from statistics import mean




def        UpperCAmelCase__	(lowerCAmelCase_       ):




					'''simple docstring'''


					def is_in_circle(lowerCAmelCase_  ,						lowerCAmelCase_       ) -> bool:
										__SCREAMING_SNAKE_CASE						       =    sqrt((x**2) + (y**2)       )
										# Our circle has a radius of 1, so a distance
										# greater than 1 would land outside the circle.
										return distance_from_centre <= 1

					# The proportion of guesses that landed in the circle
					__SCREAMING_SNAKE_CASE						       =    mean(
					    int(is_in_circle(uniform(-1.0  ,						1.0       )  ,						uniform(-1.0  ,						1.0       )       )       )
					    for _ in range(lowerCAmelCase_       )       )
					# The ratio of the area for circle to square is pi/4.
					__SCREAMING_SNAKE_CASE						       =    proportion * 4
					print(f"""The estimated value of pi is {pi_estimate}"""       )
					print(f"""The numpy value of pi is {pi}"""       )
					print(f"""The total error is {abs(pi - pi_estimate       )}"""       )




def        UpperCAmelCase__	(lowerCAmelCase_  ,						lowerCAmelCase_  ,						lowerCAmelCase_ = 0.0  ,						lowerCAmelCase_ = 1.0  ,						):




					'''simple docstring'''


					return mean(
					    function_to_integrate(uniform(lowerCAmelCase_  ,						lowerCAmelCase_       )       ) for _ in range(lowerCAmelCase_       )       ) * (max_value - min_value)




def        UpperCAmelCase__	(lowerCAmelCase_  ,						lowerCAmelCase_ = 0.0  ,						lowerCAmelCase_ = 1.0       ):




					'''simple docstring'''


					def identity_function(lowerCAmelCase_       ) -> float:
										return x

					__SCREAMING_SNAKE_CASE						       =    area_under_curve_estimator(
					    lowerCAmelCase_  ,						lowerCAmelCase_  ,						lowerCAmelCase_  ,						lowerCAmelCase_       )
					__SCREAMING_SNAKE_CASE						       =    (max_value * max_value - min_value * min_value) / 2

					print("******************"       )
					print(f"""Estimating area under y=x where x varies from {min_value} to {max_value}"""       )
					print(f"""Estimated value is {estimated_value}"""       )
					print(f"""Expected value is {expected_value}"""       )
					print(f"""Total error is {abs(estimated_value - expected_value       )}"""       )
					print("******************"       )




def        UpperCAmelCase__	(lowerCAmelCase_       ):




					'''simple docstring'''


					def function_to_integrate(lowerCAmelCase_       ) -> float:
										return sqrt(4.0 - x * x       )

					__SCREAMING_SNAKE_CASE						       =    area_under_curve_estimator(
					    lowerCAmelCase_  ,						lowerCAmelCase_  ,						0.0  ,						2.0       )

					print("******************"       )
					print("Estimating pi using area_under_curve_estimator"       )
					print(f"""Estimated value is {estimated_value}"""       )
					print(f"""Expected value is {pi}"""       )
					print(f"""Total error is {abs(estimated_value - pi       )}"""       )
					print("******************"       )


if __name__ == "__main__":
		import doctest

		doctest.testmod()




"""simple docstring"""







from __future__ import annotations




def        UpperCAmelCase__	(lowerCAmelCase_       ):




					'''simple docstring'''


					if not nums:
										return 0
					__SCREAMING_SNAKE_CASE						       =    nums[0]
					__SCREAMING_SNAKE_CASE						       =    0
					for num in nums[1:]:
										__SCREAMING_SNAKE_CASE       ,  __SCREAMING_SNAKE_CASE						       =    (
										    max_excluding + num,
										    max(lowerCAmelCase_  ,						lowerCAmelCase_       ),
										)
					return max(lowerCAmelCase_  ,						lowerCAmelCase_       )


if __name__ == "__main__":
		import doctest

		doctest.testmod()
