m *= 2

        # skratenie intervalu na polovicu
        h /= 2

        for i in range(m):
            J += f(((a + (h * i)) + (a + h * (i + 1))) / 2)

        I.append(h * J)

        logger.info('m = {0}, h = {1}, Abs(I[k] - I[k + 1]) = {2}'.format(
            m, h, Abs(I[k] - I[k + 1])))

        # skonci pri dosiahnuti presnosti
        if Abs(I[k] - I[k + 1]) <= e:
            return I[k + 1]

        k += 1


if __name__ == '__main__':
    a = float_input('Zadajte cislo a')
    b = float_input('Zadajte cislo b')
    m = int_input('Zadajte pocet delenia intervalu m')
    fn = expr_input('Zadajte funkciu fn')
    e = float_input('Zadajte presnost e', default=0.01)

    r = rectangle(a, b, m, fn, e)

    print('Aproximacia je: {0}'.format(r))
    """
    S vyuzitim Babylonskej metody vypocita odmocninu cisla n.
    """

    assert n > 0, 'Cislo n musi byt vacsie ako nula'
    assert x0 > 0, 'Pociatocna hodnota x0 musi byt vacsia ako nula'
    assert e > 0, 'Presnost e musi byt vacsia ako nula'

    while True:
        # nova aproximacia je priemerom hodnot x0 a n / x0
        x = 0.5 * (x0 + n / x0)

        logger.info(
            'x = {0}, x0 = {1}, Abs(x - x0) = {2}'.format(x, x0, Abs(x - x0)))

        # skonci ak je dosiahnuta pozadovana presnost
        if Abs(x - x0) < e:
            return x

        x0 = x


if __name__ == '__main__':
    n = int_input('Zadajte cislo n')
    x0 = float_input('Zadajte pociatocnu hodnotu x0')
    e = float_input('Zadajte presnost e', default=0.01)

    r = babylon(n, x0, e)

    print('Odmocnina je: {0}'.format(r))