from math import sin, cos


# integra

def f(x):
    return 2*(x**2) + sin(x) + 4

def x(a, i, d):
    return a + i*d

def integra(a, b, n):
    delta = (b - a)/n
    suma = 0.0
    for i in range(n):
        xi = x(a, i, delta)
        xi1 = x(a, i+1, delta)
        mig = (xi + xi1)/2
        suma = suma + f(mig)*delta
    return suma


# quants_trossos

def primitiva(x):
    return 2*(x**3)/3 - cos(x) + 4*x

def quants_trossos(a, b, eps):
    integral = primitiva(b) - primitiva(a)
    n = 1
    while abs(integra(a, b, n) - integral) >= eps:
        n = n + 1
    return n
