В бесконечность и обратно

Существуют математические операции, которые дают действительные числа из +/- бесконечности. Например exp(-infinity) = 0. Существует ли стандарт математических функций в стандартной библиотеке C, которые принимают бесконечности IEEE-754 (без выбрасывания или возврата NaN). Я работаю в системе Linux, и мне был бы интересен такой список для glibc. Я не мог найти такой список в их онлайн-руководстве. Например, в их документации по exp не упоминается, как она обрабатывает случай -infinity. Любая помощь будет высоко ценится.


person srean    schedule 06.12.2011    source источник
comment
+1 даже только за название :-)   -  person Anders Abel    schedule 06.12.2011
comment
В стандарте языка ничего не сказано о том, является ли бесконечность представимым значением, так что, конечно, это зависит от реализации.   -  person Matteo Italia    schedule 06.12.2011
comment
@ Андерс, этот пример сработал, но я хочу знать, насколько он будет портативным. Я был бы счастлив, если бы POSIX сказал   -  person Kerrek SB    schedule 06.12.2011
comment
@srean: POSIX _1_ гарантирует +0 для -Inf.   -  person srean    schedule 06.12.2011
comment
@ Мэт, о, спасибо. Мне понадобится несколько других функций, не могли бы вы указать мне список. И если вы можете добавить это как ответ, чтобы мы могли проголосовать за него   -  person Mat    schedule 06.12.2011
comment
¤ В IEEE 754 есть два аспекта: двоичное представление и семантика. Если _1_ дает _2_, то предполагаемое значение состоит в том, что вы можете принять как представление, так и семантику. Но на практике вы можете только предположить представление (например, рассмотреть вариант g++ _3_, IIRC). Итак, как отмечает @KerrekSB, вам придется проверить документацию по реализации. Или просто попробовать вещи. Ура и чт.,   -  person srean    schedule 06.12.2011
comment
@srean: я не знаю списка - у вас довольно странный запрос. Просто просмотрите документы либо для POSIX, либо для вашей реализации (в любом случае вам нужно будет проверить каждую платформу, на которую вы ориентируетесь)   -  person Cheers and hth. - Alf    schedule 06.12.2011
comment
@Mat Я не понял, что ты уже указал мне ссылку. В руководстве GCC по texinfo не было этих подробностей, поэтому он просил место, где их можно найти. Теперь он у меня есть. Спасибо   -  person Mat    schedule 06.12.2011
comment
О чувак ! Я думаю, я должен был сказать сейчас, что у меня есть URL-адрес, мне не нужен список. Я могу посмотреть функции, которыми пользуюсь. Но большое спасибо, мне жаль, что я заставил тебя искать все это.   -  person srean    schedule 06.12.2011


Ответы (2)


Раздел См. также определения POSIX math.h ссылки на определения допустимых доменов POSIX.

Например. fabs():

If x is ±0, +0 shall be returned.
If x is ±Inf, +Inf shall be returned.

Я преобразовал упомянутый раздел См. также в StackOverflow-Markdown:

Я внес свой вклад в поиск/замену/regex-fu. Теперь нам просто нужен кто-то с cURL-fu.

В C99 это находится в Приложении F:

person Sebastian Mach    schedule 06.12.2011
comment
@srean: Ничего страшного, для себя полезно :) - person srean; 06.12.2011
comment
Если вы хотите, чтобы все это было в одном аккуратном месте, крайние случаи posix (почти) все унаследованы из Приложения F стандарта C. - person Sebastian Mach; 06.12.2011
comment
@Stephen: Круто, я этого не знал. Однако лениво преобразовывать их в Markdown мне уже не по силам. - person Stephen Canon; 06.12.2011

Приложение F является нормативным и:

F.9.3.1 The exp functions
-- exp(±0) returns 1.
-- exp(-∞) returns +0.
-- exp(+∞) returns +∞.

Реализация, которая определяет __STDC_IEC_559__, должна соответствовать спецификациям в этом приложении.

Вы пробовали

F.9.3.1 The exp functions
-- exp(±0) returns 1.
-- exp(-∞) returns +0.
-- exp(+∞) returns +∞.
? Это бросило? Он получил NaN или 0?

person ninjalj    schedule 06.12.2011