Существуют математические операции, которые дают действительные числа из +/- бесконечности. Например exp(-infinity) = 0
. Существует ли стандарт математических функций в стандартной библиотеке C
, которые принимают бесконечности IEEE-754 (без выбрасывания или возврата NaN). Я работаю в системе Linux, и мне был бы интересен такой список для glibc
. Я не мог найти такой список в их онлайн-руководстве. Например, в их документации по exp
не упоминается, как она обрабатывает случай -infinity
. Любая помощь будет высоко ценится.
В бесконечность и обратно
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
@srean: Ничего страшного, для себя полезно :)
- person srean; 06.12.2011
Если вы хотите, чтобы все это было в одном аккуратном месте, крайние случаи posix (почти) все унаследованы из Приложения F стандарта C.
- person Sebastian Mach; 06.12.2011
@Stephen: Круто, я этого не знал. Однако лениво преобразовывать их в Markdown мне уже не по силам.
- person Stephen Canon; 06.12.2011
acos(), acosh(), asin(), atan(), atan2(), cbrt(), ceil(), cos(), cosh( ), erf(), exp(), expm1(), fabs(), floor() , fmod(), frexp(), hypot(), ilogb(), isnan(), j0(), ldexp(), l gamma(), log(), log10(), log1p(), logb(), modf(), nextafter(), pow(), remainder(), rint(), scalb(), sin(), sin() , sqrt(), tan(), tanh(), y0(),
- person Sebastian Mach; 06.12.2011
Приложение F является нормативным и:
F.9.3.1 The exp functions
-- exp(±0) returns 1.
-- exp(-∞) returns +0.
-- exp(+∞) returns +∞.
Реализация, которая определяет __STDC_IEC_559__
, должна соответствовать спецификациям в этом приложении.
Вы пробовали
? Это бросило? Он получил NaN или 0?F.9.3.1 The exp functions -- exp(±0) returns 1. -- exp(-∞) returns +0. -- exp(+∞) returns +∞.
person
ninjalj
schedule
06.12.2011