




'''simple docstring'''


import numpy as np
from PIL import Image



def  _SCREAMING_SNAKE_CASE     (      UpperCamelCase__    :					np.ndarray ,    UpperCamelCase__    :					int ,    UpperCamelCase__    :					int				):




     """simple docstring"""


     a_     :							Optional[Any]     						=  np.array(UpperCamelCase__				)
     if arr.shape[0] != arr.shape[1]:
          raise ValueError("""The input array is not a square matrix"""				)
     a_     :							List[Any]     						=  0
     a_     :							List[str]     						=  0
     a_     :							Any     						=  0
     a_     :							Dict     						=  0

     # compute the shape of the output matrix
     a_     :							Union[str, Any]     						=  (arr.shape[0] - size) // stride + 1
     # initialize the output matrix with zeros of shape maxpool_shape
     a_     :							List[str]     						=  np.zeros((maxpool_shape, maxpool_shape)				)

     while i < arr.shape[0]:
          if i + size > arr.shape[0]:
               # if the end of the matrix is reached, break
               break
          while j < arr.shape[1]:
               # if the end of the matrix is reached, break
               if j + size > arr.shape[1]:
                    break
               # compute the maximum of the pooling matrix
               a_     :							Tuple     						=  np.max(arr[i : i + size, j : j + size]				)
               # shift the pooling matrix by stride of column pixels
               j += stride
               mat_j += 1

          # shift the pooling matrix by stride of row pixels
          i += stride
          mat_i += 1

          # reset the column index to 0
          a_     :							Optional[int]     						=  0
          a_     :							List[Any]     						=  0

     return updated_arr



def  _SCREAMING_SNAKE_CASE     (      UpperCamelCase__    :					np.ndarray ,    UpperCamelCase__    :					int ,    UpperCamelCase__    :					int				):




     """simple docstring"""


     a_     :							Any     						=  np.array(UpperCamelCase__				)
     if arr.shape[0] != arr.shape[1]:
          raise ValueError("""The input array is not a square matrix"""				)
     a_     :							Any     						=  0
     a_     :							List[Any]     						=  0
     a_     :							Tuple     						=  0
     a_     :							Optional[Any]     						=  0

     # compute the shape of the output matrix
     a_     :							Any     						=  (arr.shape[0] - size) // stride + 1
     # initialize the output matrix with zeros of shape avgpool_shape
     a_     :							Optional[int]     						=  np.zeros((avgpool_shape, avgpool_shape)				)

     while i < arr.shape[0]:
          # if the end of the matrix is reached, break
          if i + size > arr.shape[0]:
               break
          while j < arr.shape[1]:
               # if the end of the matrix is reached, break
               if j + size > arr.shape[1]:
                    break
               # compute the average of the pooling matrix
               a_     :							List[str]     						=  int(np.average(arr[i : i + size, j : j + size]				)				)
               # shift the pooling matrix by stride of column pixels
               j += stride
               mat_j += 1

          # shift the pooling matrix by stride of row pixels
          i += stride
          mat_i += 1
          # reset the column index to 0
          a_     :							List[str]     						=  0
          a_     :							Optional[Any]     						=  0

     return updated_arr


# Main Function
if __name__ == "__main__":
 from doctest import testmod

 testmod(name='avgpooling', verbose=True)

 # Loading the image
 lowerCAmelCase_      :  Dict				     =  Image.open('path_to_image')

 # Converting the image to numpy array and maxpooling, displaying the result
 # Ensure that the image is a square matrix

 Image.fromarray(maxpooling(np.array(image), size=3, stride=2)).show()

 # Converting the image to numpy array and averagepooling, displaying the result
 # Ensure that the image is a square matrix

 Image.fromarray(avgpooling(np.array(image), size=3, stride=2)).show()






'''simple docstring'''


from __future__ import annotations



def  _SCREAMING_SNAKE_CASE     (      UpperCamelCase__    :					list[float]				):




     """simple docstring"""


     if len(UpperCamelCase__				) < 2:
          raise ValueError("""Monogons and Digons are not polygons in the Euclidean space"""				)
     if any(i <= 0 for i in nums				):
          raise ValueError("""All values must be greater than 0"""				)
     a_     :							int     						=  nums.copy()
     copy_nums.sort()
     return copy_nums[-1] < sum(copy_nums[:-1]				)


if __name__ == "__main__":
 import doctest

 doctest.testmod()
