i will change the subject but this one is interessenting. i have this test code
import funcoes import bissecao import falsa_posicao import falsa_posicaom import newton_simples import math INTERVALO = [0,1] ERRO_DET = math.pow(10, -16) ITER = funcoes.calcular_num_iteracoes(INTERVALO[0], INTERVALO[1], ERRO_DET) print 'Por bissecao: ' print 'Numero de iteracoes necessarios = ', ITER resultado, erro = bissecao.obter_alpha(INTERVALO, funcoes.convergente_simples, ERRO_DET, ITER) print 'Alpha = ', resultado print 'Erro = ', erro print '' and i have this function on bissecao import math import funcoes def obter_alpha(intervalo, funcao, erro_passado = 0.0, limite = 20): a = intervalo[0] b = intervalo[1] fa = funcao(a) fb = funcao(b) erro = erro_passado * 10.0 contador = 0 xm = 0.0 if( (fa * fb) < 0 ): while(contador < limite): contador += 1 xm = (a + b) / 2.0 fm = funcao(xm) if(fm == 0): return xm, 0.0 if( (fm * fa) < 0.0): b = xm else: a = xm erro = funcoes.calcular_erro(a, b) if(erro < erro_passado): return xm, erro print 'Iteracao ', contador, ' alpha = ', xm print 'Erro ', contador, ' = ', erro return xm, erro else: print 'Funcao nao eh continua' my problem is, INSIDE the funcion...the variable erro is correct, but when i return it to the test...and the test prints it....comes out 0.0. Its disturbing...i didnt found a way of solving this. the out of the test is like this Erro 50 = 1.50914019446e-15 Iteracao 51 alpha = 0.588532743982 Erro 51 = 7.54570097231e-16 Alpha = 0.588532743982 Erro = 0.0 it would print more things but it is desnecessary, inside the function erro has a value like 7.54570097231e-16, but when it is returned it goes out like 0.0. What can i do to prevent this from happening? the whole thing is at https://svn.inf.ufsc.br/katcipis/python/trunk/Funcoes/src/ just log as user "guest" without a password ALAN GAULD escreveu: > On Mon, Apr 21, 2008 at 12:07 AM, Alan Gauld > <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>> wrote: > > > >>> pow(-20, 0.3333333) > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > ValueError: negative number cannot be raised to a fractional power > >>> -20**0.3333333 > -2.7144173455393048 > >>> > > I think you're confusing the order of operations. > > math.pow(-20, (1.0/3.0)) and -20**(1.0/3.0) are not equivalent > > Whereas, as john mentioned, -20**(1.0/3.0) is actually > -(20**(1.0/3.0)), math.pow(-20, (1.0/3.0)) is (-20)**(1.0/3.0) > > Yes, quite correct, I posted my reply before the others had > posted theirs although it showed up afterwards(at least on gmane) > > > exponentiation has higher precedence over positive, negative. > > Yep, I hadn't realized that, although it does make sense when you > think about it :-) > > /> Note that math.pow is unrelated to the builtin power operator / > /> and the result of math.pow(0.0, -2.0) will vary by platform. / > > /This is interesting, I had assumed that pow simply called **./ > Does anyone know why they made it different? > > Alan G. > ------------------------------------------------------------------------ > > _______________________________________________ > Tutor maillist - Tutor@python.org > http://mail.python.org/mailman/listinfo/tutor > _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor