?

Log in

No account? Create an account

Если программист на раввина налезет, кто кого сборет? - Общество дровосеков Бердичева по изучению Мишны

Dec. 12th, 2014

10:16 am - Если программист на раввина налезет, кто кого сборет?

Previous Entry Share Next Entry

Ребе, что должна возвращать функция min(NaN, -Infinity)?

Сравнение этих двух значений с помощью сишной функции fmin дает разные результаты в зависимости от использования -ffast-math при компиляции. Библиотечная функция возвращает -Infinity (хорошо хоть, что независимо от порядка аргументов, как могло бы быть при наивном способе), а команда процессора minsd возвращает NaN.
Upd: Всё еще забавнее: библиотечные функции fmin и fmax рассматривают NaN как "пусто", т.е. если один из аргументов - NaN, то возвращается другой.

Comments:

[User Picture]
From:dvv
Date:December 12th, 2014 06:24 pm (UTC)
(Link)
В wg по языку есть раввин?
(Reply) (Thread)
[User Picture]
From:spamsink
Date:December 12th, 2014 06:43 pm (UTC)
(Link)
Не знаю; трюк в том, что можно придумать аргументы за оба ответа.
(Reply) (Parent) (Thread) (Expand)
[User Picture]
From:archaicos
Date:December 12th, 2014 06:26 pm (UTC)
(Link)
Смотря где. Для начала нужно определиться с семантикой.
(Reply) (Thread)
[User Picture]
From:spamsink
Date:December 12th, 2014 06:44 pm (UTC)
(Link)
В IEEE-754, например.
(Reply) (Parent) (Thread) (Expand)
From:qehgt
Date:December 12th, 2014 06:26 pm (UTC)
(Link)
Что min, что max - обе должны NaN возвращать. Это ж NaN.
(Reply) (Thread)
[User Picture]
From:yatur
Date:December 12th, 2014 06:39 pm (UTC)
(Link)
+1
Амен
(Reply) (Parent) (Thread) (Expand)
[User Picture]
From:ticklish_frog
Date:December 12th, 2014 06:48 pm (UTC)
(Link)
Любая арифметическая с NaN должна выдавать NaN, по идее.
(Reply) (Thread)
[User Picture]
From:juan_gandhi
Date:December 12th, 2014 07:26 pm (UTC)
(Link)
Как посмотреть. Тут выше описывают траверсал апликативного функтора вообще-то.
(Reply) (Parent) (Thread) (Expand)
[User Picture]
From:raydac
Date:December 12th, 2014 06:51 pm (UTC)
(Link)
больше интересно кто у них родится
(Reply) (Thread)
[User Picture]
From:archaicos
Date:December 12th, 2014 07:02 pm (UTC)
(Link)
SIGавтобус. :)
(Reply) (Parent) (Thread) (Expand)
[User Picture]
From:dluciv
Date:December 12th, 2014 07:05 pm (UTC)
(Link)
На мой взгляд, NaN, как и любая другая бинарная операция.
(Reply) (Thread)
[User Picture]
From:spamsink
Date:December 12th, 2014 07:31 pm (UTC)
(Link)
Авторы библиотеки думают иначе, см. update.
(Reply) (Parent) (Thread) (Expand)
[User Picture]
From:juan_gandhi
Date:December 12th, 2014 07:25 pm (UTC)
(Link)
А какова область определения этой функции?

Я как погляжу, у вас в библиотеках сидят монады, а.
(Reply) (Thread)
[User Picture]
From:spamsink
Date:December 12th, 2014 07:30 pm (UTC)
(Link)
Из мана следует, исходя из отсутствия раздела ERRORS, что тотальная.

А что я? Я сама обалдела. Про это в мане ни слова.

В более официальном описании библиотеки написано "If one of the arguments in a NaN, the other is returned."

Edited at 2014-12-12 08:55 pm (UTC)
(Reply) (Parent) (Thread) (Expand)
[User Picture]
From:ygam
Date:December 12th, 2014 08:58 pm (UTC)
(Link)
На двери офиса Кахана в Бёркли еще не такое висит.
(Reply) (Thread)
[User Picture]
From:wizzard0
Date:December 13th, 2014 12:33 am (UTC)
(Link)
Спросил у человека, который работает с fp-вычислениями много и долго. Он сходу выдал 5 вариантов (не считая implementation-defined), а потом подумал и выдал еще 6й :)

Update: теперь я знаю 8 вариантов.

Edited at 2014-12-13 01:08 am (UTC)
(Reply) (Thread)
[User Picture]
From:spamsink
Date:December 13th, 2014 01:12 am (UTC)
(Link)
Огласите весь список, пожалуйста!
(Reply) (Parent) (Thread) (Expand)
[User Picture]
From:wizzard0
Date:December 13th, 2014 01:08 am (UTC)
(Link)
> команда процессора minsd возвращает NaN.

Hint: допущение, что соотв команды коммутативны - неверно :)
(Reply) (Thread)
[User Picture]
From:spamsink
Date:December 13th, 2014 01:13 am (UTC)
(Link)
Я, конечно же, проверил оба варианта.
(Reply) (Parent) (Thread)
[User Picture]
From:niobium0
Date:December 13th, 2014 01:10 am (UTC)
(Link)
Конечно, NaN. Наверняка ж негативный ординал.
(Reply) (Thread)