2012-04-28 2 views
13

С99 Приложение F (IEEE поддержки с плавающей точкой) говорит, что это:Почему pow (-инфекция, положительный нецелый) + бесконечность?

pow(−∞, y) возвращается + ∞, при у> 0 и не является нечетным числом.

Но, скажем, (-∞) 0,5 фактически имеет мнимые значения ± ∞i, а не + ∞. C99 собственный sqrt(−∞) возвращает NaN и генерирует ошибку домена, как ожидалось. Почему тогда pow требуется для возврата + ∞?

(Большинство других языков используют библиотеку C непосредственно или, как Python в этом случае, копируют поведение требует от него стандартов, поэтому на практике это влияет больше, чем просто C99.)

+1

Я не уверен, что вы подразумеваете под «-∞ 0,5 на самом деле является мнимым числом ∞i"; откуда берутся мнимые числа? –

+2

@OliCharlesworth стандартная математика - взятие sqrt отрицательного числа дает мнимое число. – Alnitak

+2

@Alnitak: Я не уверен, что такие понятия, как «∞i», особенно значимы ... –

ответ

13

Для нечетного y, имеет смысл определить

pow(±0, y) = ±0 

В конце концов, повышение до нечетной мощности всегда сохраняет знак. Если мы сможем сохранить знак нуля, мы могли бы это сделать. Для положительного не целочисленного y, мы должны определить

pow(±0, y) = +0. 

Знак не определен. Но мы не устанавливаем это на NaN по -0 по той же причине, что и мы не устанавливаем sqrt(-0), равный NaN: это просто не имеет смысла. (FWIW, это также, как это определено в разделе 9.2.1 стандарта IEEE-754-2008.)

С 1/± 0 = ± ∞, и математически

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

затем установить x=±∞ в приведенном выше, приводит к:

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

для y положительным нецелых.

+0

Что делать, если вы считаете (± 1)/0 = ± ∞, учитывая, что «-0» - это то же реальное число «0»? –

+0

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

+2

Это перемещается вопрос «Зачем вообще -0?» Одна из причин заключается в том, что '-0' представляет нижний поток снизу. Другим является то, что ветвь разрезает сложную плоскость, как они традиционно определены, просто работает как ожидается с '-0'. –

Смежные вопросы