2012-04-28 10 views
13

C99 załącznik F (IEEE zmiennoprzecinkowa wsparcie) mówi to:Dlaczego jest pow (-infinity, positive non-integer) + infinity?

pow(−∞, y) powraca + ∞ dla y> 0 i nie nieparzystej liczby całkowitej.

Ale, powiedzmy, (-∞) 0,5 rzeczywiście posiada urojone wartości ± ∞i nie + ∞. Własna jednostka C99 pod nr sqrt(−∞) zwraca wartość NaN i generuje błąd domeny zgodnie z oczekiwaniami. Dlaczego więc wymagany jest pow, aby powrócić + ∞?

(Większość innych językach użyć biblioteki C bezpośrednio lub, jak Python w tym przypadku kopiowania ich zachowanie świadczy o tym przez normy, więc w praktyce dotyczy to więcej niż tylko C99.)

+1

Nie jestem pewien, co masz na myśli przez "-∞ 0.5 jest w rzeczywistości liczbą urojoną ∞i"; skąd pochodzą liczby urojone? –

+2

@OliCharlesworth standardowa matematyka - podjęcie sqrt liczby ujemnej daje liczbę urojoną. – Alnitak

+2

@Alnitak: Nie jestem pewien, czy pojęcia takie jak "∞i" są szczególnie znaczące ... –

Odpowiedz

13

Dla nieparzystej liczby całkowitej y, ma sens zdefiniowanie

pow(±0, y) = ±0 

Po tym wszystkim, podnosząc do potęgi nieparzystej zawsze zachowuje znak. Jeśli zachowamy znak zero, równie dobrze możemy to zrobić. Dla pozytywnej non -integer y, powinniśmy zdefiniować

pow(±0, y) = +0. 

Znak jest niezdefiniowany. Ale nie ustawiamy tego na NaN dla -0 z tego samego powodu, dla którego nie ustawiamy sqrt(-0) równej NaN: to po prostu nie ma sensu. (FWIW, jest również, jak jest to określone w części 9.2.1 standardu IEEE 754-2008).

od 1/± 0 = ± ∞ i matematycznie

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

następnie ustawienie x=±∞ w powyższym, prowadzi do:

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

dla y dodatniej liczby niecałkowitej.

+0

Co jeśli rozważasz (± 1)/0 = ± ∞, biorąc pod uwagę, że "-0" jest identyczną liczbą rzeczywistą "0"? –

+0

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

+2

To się rusza pytanie do "Dlaczego w ogóle -0?" Jednym z powodów jest to, że '-0' reprezentuje niedomiar z dołu. Innym jest, że przecięcia gałęzi na płaszczyźnie złożonej, jak są tradycyjnie zdefiniowane, działają zgodnie z oczekiwaniami dla '-0'. –