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/

Responder a