def sheet_cal(width, thickness, l_speed, s_density):
    """
    Calculates the required throughput for sheets given the width, 
    thickness, line speed, and solid polymer density
    
    Parameters
    ----------
    width       : int or float
                  Sheet width [mm]
    thickness   : int or float
                  Sheet thickness [mm]
    l_speed     : int or float
                  Line speed [mpm]
    s_density   : int or float
                  Solid density of polymeric material [kg/m^3]

    Returns
    -------
    throughput : float
                 required exturion throughput [kg/hr]
    Examples
    --------
    >>> sheet_cal(width=1000, thickness=1, l_speed = 1, s_density=1000)
    """
    # Test input type
    if not isinstance(width, int):
        if not isinstance(width, float):
            raise TypeError("'width' should be either integer or float")
    if not isinstance(thickness, int):
        if not isinstance(thickness, float):
            raise TypeError("'thickness' should be either integer or float")
    if not isinstance(l_speed, int):
        if not isinstance(l_speed, float):
            raise TypeError("'l_speed' should be either integer or float")
    if not isinstance(s_density, int):
        if not isinstance(s_density, float):
            raise TypeError("'s_density' should be either integer or float")
    
    # Test input value
    if s_density < 300:
        raise ValueError("This is not solid density for polymers. Too low!!")
    if s_density > 3000:
        raise ValueError("This is not solid density for polymers. Too high!!")

    # Calculate basic variables
    cross_area = width * thickness / 1000000
    req_throughput = l_speed * cross_area * 60 * s_density
    
    return round(req_throughput, 3)