def obter_integral(a, b, funcao, erro = 10 ** -16):
  max = parametros_gaussianos.obter_m_maximo()
  m = 2; int = 0.0
  inta = gauss.obter_integral(a, b, funcao, m)
  
  while(m < max):
    m += 1
    int = gauss.obter_integral(a, b, funcao, m)
    
    erro_tmp = calcular_erro(int, inta)
    if(erro_tmp <= erro):
      return int
    
    inta = int
    
  return int
import funcoes
from integracao.gaussianos import gauss
from integracao.gaussianos import gauss_tentativas
from integracao.gaussianos import gauss_composto
from integracao.gaussianos import gauss_tchebyshev
from integracao.gaussianos import gauss_improprias
import math

print 'Testando integrador usando metodo de gauss com a funcao raiz de lnx no intervalo 1-2'
print 'Com m = 2'
res = gauss.obter_integral(1.0, 2.0, funcoes.raiz_lnx, 2)
print 'Integral: ', res; print ''

print 'Com m = 3'
res = gauss.obter_integral(1.0, 2.0, funcoes.raiz_lnx, 3)
print 'Integral: ', res; print ''

print 'Com m = 4'
res = gauss.obter_integral(1.0, 2.0, funcoes.raiz_lnx, 4)
print 'Integral: ', res; print ''



print 'Testando integrador usando metodo de gauss com a funcao lnx no intervalo 0-1'
print 'Com m = 2'
res = gauss.obter_integral(0.0, 1.0, funcoes.lnx, 2)
print 'Integral: ', res; print ''

print 'Com m = 3'
res = gauss.obter_integral(0.0, 1.0, funcoes.lnx, 3)
print 'Integral: ', res; print ''