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 <davidmen...@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@python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ >
_______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/