# simpson
# calcula la integracion numerica de una funcion en forma aproximada
# en un dominio a-b dentro del cual la funcion es continua
# la funcion se ingresa en tiempo de ejecucion mediante un string y la funcion eval()

#inicializacion de variables
from math import *
x=""
a=0.0
b=1.5
divisiones=1
area=0.0
parcial=0.0

formula=str(raw_input("ingrese funcion de una sola variable- la variable debe ser '@' "))
a=input("limite inferior:")
b=input("limite superior:")
divisiones=input("numero de divisiones:")
incremento=(float(b)-a)/divisiones

lim_inf=float(a)
lim_sup=lim_inf+incremento

# definicion de la funcion
def f(texto,x):
    # aqui se define la funcion a evaluar
    # en 'texto' viene la expresion de la funcion introducida por el operador
    # en 'x' viene el valor de la variable independiente que marca el cuerpo principal

    formu=texto.replace('@','x')
   
    f=eval(formu)
    print texto,x,formu,f
    return f

#calculos de cada sub area y su acumulacion   
for i in range(divisiones):
    #print "inf",lim_inf,"sup",lim_sup,"i",i
    parcial=(lim_sup-lim_inf)/6*(f(formula,lim_inf)+4*f(formula,(lim_sup+lim_inf)/2)+f(formula,lim_sup))
    area=area+parcial
    lim_inf=lim_sup
    lim_sup=lim_inf+incremento
print area
    
    
    

