Imagino que si usas math.XXXX, primero habrá una conversión coercitiva al tipo que use math internamente, que será float64, imagino, así que da igual lo que le pases, al final la precisión será la que ofrezca la librería. Como dice J. Sabater, para obtener mayor precisión habrá que usar librerías que la admitan.
2013/3/20 Kiko <[email protected]> > > > El 20 de marzo de 2013 12:37, Jose Caballero > <[email protected]>escribió: > > Imagino, sin haberlo comprobado, que será por la precisión con la que se >> define pi. >> >> > He usado un pi definido por mi con 100 decimales y el módulo decimal y > sale lo mismo (con numpy me da error si uso Decimal con una precisión muy > alta ¿?, si convierto el Decimal a np.float96 me da lo mismo). > > Como pruebas, he usado (sin z/cos z) en lugar de la tangente y da cosas > similares con valores muy diferentes según la precisión del decimal pero a > partir de un valor para la precisión el resultado ya no varía: > > In [113]: decimal.getcontext().prec = 16 > > In [114]: > math.sin(decimal.Decimal(math.pi)/decimal.Decimal(2))/math.cos(decimal.Decimal(math.pi)/decimal.Decimal(2)) > Out[114]: -2611942160735615.5 > > In [115]: decimal.getcontext().prec = 32 > > In [116]: > math.sin(decimal.Decimal(math.pi)/decimal.Decimal(2))/math.cos(decimal.Decimal(math.pi)/decimal.Decimal(2)) > Out[116]: 1.633123935319537e+16 > > In [117]: decimal.getcontext().prec = 64 > > In [118]: > math.sin(decimal.Decimal(math.pi)/decimal.Decimal(2))/math.cos(decimal.Decimal(math.pi)/decimal.Decimal(2)) > Out[118]: 1.633123935319537e+16 > ... > > In [125]: decimal.getcontext().prec = 16 > > In [126]: math.tan(decimal.Decimal(math.pi)/decimal.Decimal(2)) > Out[126]: -2611942160735615.5 > > In [127]: decimal.getcontext().prec = 32 > > In [128]: math.tan(decimal.Decimal(math.pi)/decimal.Decimal(2)) > Out[128]: 1.633123935319537e+16 > > In [129]: decimal.getcontext().prec = 64 > > In [130]: math.tan(decimal.Decimal(math.pi)/decimal.Decimal(2)) > Out[130]: 1.633123935319537e+16 > ... > > > Si hago, np.isinf(np.tan(np.pi/2)) me da, obviamente, False... :-P > > > > _______________________________________________ > Python-es mailing list > [email protected] > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > >
_______________________________________________ Python-es mailing list [email protected] http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
