




'''simple docstring'''




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





def      a_							(      __snake_case							:			int   )							->						List[str]:



       """simple docstring"""





       def is_in_circle(__snake_case							:			float   ,       __snake_case							:			float   ) -> bool:
              lowerCamelCase_							=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
       lowerCamelCase_							=mean(
           int(is_in_circle(uniform(-1.0   ,       1.0   )   ,       uniform(-1.0   ,       1.0   )   )   )
           for _ in range(__snake_case   )   )
       # The ratio of the area for circle to square is pi/4.
       lowerCamelCase_							=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      a_							(      __snake_case							:			int   ,       __snake_case							:			Callable[[float], float]   ,       __snake_case							:			float = 0.0   ,       __snake_case							:			float = 1.0   ,       )							->						Optional[int]:



       """simple docstring"""
       return mean(
           function_to_integrate(uniform(__snake_case   ,       __snake_case   )   ) for _ in range(__snake_case   )   ) * (max_value - min_value)





def      a_							(      __snake_case							:			int   ,       __snake_case							:			float = 0.0   ,       __snake_case							:			float = 1.0   )							->						str:



       """simple docstring"""





       def identity_function(__snake_case							:			float   ) -> float:
              return x

       lowerCamelCase_							=area_under_curve_estimator(
           __snake_case   ,       __snake_case   ,       __snake_case   ,       __snake_case   )
       lowerCamelCase_							=(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      a_							(      __snake_case							:			int   )							->						str:



       """simple docstring"""





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

       lowerCamelCase_							=area_under_curve_estimator(
           __snake_case   ,       __snake_case   ,       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"""



def 						_SCREAMING_SNAKE_CASE (    __snake_case			:  int    ):





  '''simple docstring'''





  return sum(i for i in range(1		,					number // 2 + 1    ) if number % i == 0    ) == number


if __name__ == "__main__":
    print('Program to check whether a number is a Perfect number or not...')
    _UpperCamelCase		:  Tuple						=		int(input('Enter number: ').strip())
    print(F'''{number} is {'' if perfect(number) else 'not '}a Perfect Number.''')


