2012-04-28 12 views
13

C99 anexo F (Soporte de coma flotante IEEE) dice esto:¿Por qué es pow (-infinity, positive non-integer) + infinito?

pow(−∞, y) retornos + ∞ para y> 0 y no un número entero impar.

Pero, por ejemplo, (-∞) 0,5 realidad tiene los valores imaginarios ± ∞i, no + ∞. El propio sqrt(−∞) de C99 devuelve un NaN y genera un error de dominio como se esperaba. ¿Por qué entonces se requiere pow para devolver + ∞?

(La mayoría de los otros idiomas utilizar la biblioteca de C directamente o, como Python en este caso, copiar el comportamiento de él exige normas, por lo que en la práctica esto no sólo afecta C99.)

+1

No estoy seguro de lo que quiere decir con "-∞ 0.5 es realmente el número imaginario ∞i"; ¿De dónde vienen los números imaginarios? –

+2

@OliCharlesworth matemática estándar: tomar la raíz cuadrada de un número negativo da un número imaginario. – Alnitak

+2

@Alnitak: No estoy seguro de conceptos como "∞i" son particularmente significativos ... –

Respuesta

13

Por entero impar y, tiene sentido definir

pow(±0, y) = ±0 

Después de todo, elevar a una potencia impar siempre conserva el signo. Si podemos preservar el signo de cero, bien podríamos hacerlo. Para positivo no -integer y, debemos definir

pow(±0, y) = +0. 

El signo no está definido. Pero no establecemos esto en NaN para -0 por la misma razón por la que no establecemos sqrt(-0) igual a NaN: simplemente no tendría sentido. (Fwiw, esta es también la forma en que se define en la sección 9.2.1 de la norma IEEE-754-2008.)

Desde 1/± 0 = ∞ ±, y matemáticamente

pow(x,y) = 1/pow(1/x,y) 

continuación, estableciendo x=±∞ en lo anterior, conduce a:

pow(±∞,y) = 1/pow(±0,y) = 1/+0 = +∞ 

para y un no entero positivo.

+0

¿Qué sucede si considera (± 1)/0 = ± ∞, considerando que "-0" es el número real idéntico "0"? –

+0

@HeathHunnicutt '(-inf)^(1/2) = (-1/0)^(1/2) = (-1)^(1/2)/0 = nan/0 = nan' –

+2

Esto se mueve la pregunta a "¿Por qué tiene -0 en absoluto?" Bueno, una razón es que '-0' representa subdesbordamiento desde abajo. Otra es que los cortes de ramas en el plano complejo, como se definen tradicionalmente, funcionan como se esperaba con '-0'. –

Cuestiones relacionadas