# -*- coding: utf-8 -*-
"""
Created on Wed Mar 09 18:15:43 2022

@author: Roupoil
"""

def rectangles(f,a,b,n):
    s=0
    h=(b-a)/float(n)
    for i in range(n):
        s+=f(a+i*h)
    return h*s
    
def trapezes(f,a,b,n):
    s=(f(a)+f(b))/2.0
    h=(b-a)/float(n)
    for i in range(1,n):
        s+=f(a+i*h)
    return h*s
    
def simpson(f,a,b,n):
    t=0
    s=(f(a)+f(b))/2.0
    h=(b-a)/float(n)
    for i in range(n):
        t+=f(a+(2*i+1)*h/2)
    for i in range(1,n):
        s+=f(a+i*h)
    return h*(s+2*t)/3
    
def f(x):
    return x**5

from time import time
a=time()
print(simpson(f,0,3,500))
print(time()-a)