def    SCREAMING_SNAKE_CASE_     (						snake_case__   ,  snake_case__							)     ->	Optional[int]:



							if discount_rate < 0:
														raise ValueError('''Discount rate cannot be negative'''							)
							if not cash_flows:
														raise ValueError('''Cash flows list cannot be empty'''							)
							lowerCAmelCase			=		sum(
							    cash_flow / ((1 + discount_rate) ** i) for i, cash_flow in enumerate(snake_case__							)							)
							return round(snake_case__   ,  ndigits=2							)


if __name__ == "__main__":
	import doctest

	doctest.testmod()





'''simple docstring'''




import pytest

import datasets.config
from datasets.utils.info_utils import is_small_dataset







@pytest.mark.parametrize('''dataset_size'''		,				[None, 400 * 2**20, 600 * 2**20]						)
@pytest.mark.parametrize('''input_in_memory_max_size'''		,				['''default''', 0, 100 * 2**20, 900 * 2**20]						)
def 		lowerCAmelCase_				(   snake_case__		,				snake_case__		,				snake_case__						):




    '''simple docstring'''



    if input_in_memory_max_size != "default":
        monkeypatch.setattr(datasets.config		,				'''IN_MEMORY_MAX_SIZE'''		,				snake_case__						)
    A       :   Dict					=						datasets.config.IN_MEMORY_MAX_SIZE
    if input_in_memory_max_size == "default":
        assert in_memory_max_size == 0
    else:
        assert in_memory_max_size == input_in_memory_max_size
    if dataset_size and in_memory_max_size:
        A       :   Dict					=						dataset_size < in_memory_max_size
    else:
        A       :   Tuple					=						False
    A       :   int					=						is_small_dataset(snake_case__						)
    assert result == expected




