"""simple docstring"""







from __future__ import annotations

from typing import Any






class     _SCREAMING_SNAKE_CASE       :



   '''simple docstring'''



   def __init__(  self   ,							_SCREAMING_SNAKE_CASE   ,							_SCREAMING_SNAKE_CASE  ):  # noqa: A002


      '''simple docstring'''

      __lowerCamelCase								=				item
      __lowerCamelCase								=				next






class     _SCREAMING_SNAKE_CASE       :



   '''simple docstring'''



   def __init__(  self  ):


      '''simple docstring'''

      __lowerCamelCase								=				None
      __lowerCamelCase								=				0







   def       _A							(  self   ,							_SCREAMING_SNAKE_CASE  ):


      '''simple docstring'''

      __lowerCamelCase								=				Node(_SCREAMING_SNAKE_CASE   ,							self.head  )
      self.size += 1







   def       _A							(  self  ):


      '''simple docstring'''

      if self.head is None:
         return None
      else:
         __lowerCamelCase								=				self.head.item
         __lowerCamelCase								=				self.head.next
         self.size -= 1
         return item







   def       _A							(  self  ):


      '''simple docstring'''

      return self.head is None







   def __str__(  self  ):


      '''simple docstring'''

      if self.is_empty():
         return ""
      else:
         __lowerCamelCase								=				self.head
         __lowerCamelCase								=				''
         __lowerCamelCase								=				[]
         while iterate:
            item_list.append(str(iterate.item  )  )
            __lowerCamelCase								=				iterate.next

         __lowerCamelCase								=				' --> '.join(_SCREAMING_SNAKE_CASE  )

         return item_str







   def __len__(  self  ):


      '''simple docstring'''

      return self.size







"""simple docstring"""







from __future__ import annotations

from collections.abc import Callable



def 			A__						(  lowercase_    :  Callable[[int | float], int | float]			,   lowercase_    :  int | float			,   lowercase_    :  int | float			,   lowercase_    :  int = 100			,   )     ->       float:
   __lowerCamelCase								=				x_start
   __lowerCamelCase								=				fnc(lowercase_	)
   __lowerCamelCase								=				0.0

   for _ in range(lowercase_	):
      # Approximates small segments of curve as linear and solve
      # for trapezoidal area
      __lowerCamelCase								=				(x_end - x_start) / steps + xa
      __lowerCamelCase								=				fnc(lowercase_	)
      area += abs(fxa + fxa	) * (xa - xa) / 2

      # Increment step
      __lowerCamelCase								=				xa
      __lowerCamelCase								=				fxa
   return area


if __name__ == "__main__":



     def 			A__						(  lowercase_    :  Union[str, Any]	)     ->       int:
        return x**3

     print('''f(x) = x^3''')
     print('''The area between the curve, x = -10, x = 10 and the x axis is:''')
     _SCREAMING_SNAKE_CASE  :		Any        =      1_0
     while i <= 1_0_0_0_0_0:
          _SCREAMING_SNAKE_CASE  :		List[str]        =      trapezoidal_area(f, -5, 5, i)
          print(F"with {i} steps: {area}")
          i *= 1_0






