[Python-es] Implementación de cmath.sqrt

Ricardo Cárdenes ricardo.cardenes en gmail.com
Jue Mar 14 15:23:16 CET 2013


La representación interna de un complejo son dos números reales: la
magnitud de su parte real y la magnitud de su parte imaginaria. En
principio "r.real = 0.; r.imag = z.imag;" es lo mismo que "r.real = 0.;
r.imag = 0.;", así que no tengo nada claro lo que está pasando ahí.
cmath.sqrt devuelve un complejo siempre (es la idea)


2013/3/14 Daπid <davidmenhur en gmail.com>

> Hola:
>
> Estaba echándole un vistazo superficial a la biblioteca cmath de
> Python [1] cuando encontré esto:
>
> static Py_complex
> 667     c_sqrt(Py_complex z)
> 668     {
> [...]
> 696     Py_complex r;
> [...]
> 702     if (z.real == 0. && z.imag == 0.) {
> 703     r.real = 0.;
> 704     r.imag = z.imag;
> 705     return r;
> 706     }
> ...
>
> El códig en primer lugar comprueba si el número es 0, y si no continúa
> calculando la raíz cuadrada para números generales. Por supuesto, la
> raíz cuadrada de 0+0j es 0+0j, pero lo calcula de forma curiosa: la
> parte real la pone como 0 y la imaginaria como la imaginaria del
> número original (que es 0). ¿Por qué es esto?
>
> Se me ocurrió que podría ser para preservar tipos, pero
>
> >>> cmath.sqrt(0)
> 0j
>
> devuelve un complejo, no un real.
>
>
>
> [1]
> http://svn.python.org/view/python/trunk/Modules/cmathmodule.c?revision=76978&view=markup
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20130314/4f347ddb/attachment.html>


Más información sobre la lista de distribución Python-es