quick quiz

Nov. 16th, 2009 12:51 am
wizzard: (Default)
[personal profile] wizzard

внимание, вопрос!

в каком случае сравнение if(value!=value) { throw new Exception("..."); } имеет смысл, и что скорее всего написано в том эксепшене? )

(случай реализации кастомного типа, который неправильно сравнивается - здесь не рассматривается)


Комменты скринятся.


UPD: [livejournal.com profile] aruslan подумал абсолютно правильно, как человек, который видел такое в каком-то рендере (i suppose), [livejournal.com profile] kodt_rsdn отжог с 5 случаями, из которых я при написании поста знал только 4 (# как-то в голову не пришло). кстати, на второй случай я натыкался, даже без модификатора. Подожду еще несколько комментаторов и расскриню.


Ну и еще: kodt_rsdn> проведи конкурс на самый банальный и небанальный вариант.


UPD2: в общем, я думаю, что все кто хотел - уже ответили, посему расскриниваю. Самым банальным вариантом остается, как я и думал, фрагмент IEEE754 про сравнение NaN != NaN, a самым неожиданным (для меня) - #define value rand() (надо меньше доверять людям, что ли? :))
И еще, мне все так же остается загадкой, что подразумевал [livejournal.com profile] aruslan под "тривиальным bool и может быть enum".


Спасибо всем за ответы! :) // mr_aleph, твой коммент расскринивать?

Date: 2009-11-16 02:26 pm (UTC)
From: [identity profile] aruslan.livejournal.com
NaN-то почему пиздец?

Date: 2009-11-16 02:28 pm (UTC)
From: [identity profile] zabivator.livejournal.com
Гм. Тогда уж это в функции isNaN должно быть как документированный хак... А не где попало в коде.

Date: 2009-11-16 02:39 pm (UTC)
From: [identity profile] aruslan.livejournal.com
Да брось.
Если это floating point, какая разница, v!=v, или v!=w?
Это вопрос намордника, не NaNов.

Date: 2009-11-16 02:41 pm (UTC)
From: [identity profile] lionet.livejournal.com
Мифы о несравнимости floating point чисел не распространяй, плиз.

Date: 2009-11-16 02:49 pm (UTC)
From: [identity profile] lionet.livejournal.com
Это не значит, что операция != или == автоматом табу для fp, под одну гребёнку.

Вон можно на 0 проверить, для того чтобы не делить лишний раз на него: foo == 0. И ничё, никаких эпсилонов не надо придумывать.

Date: 2009-11-16 02:45 pm (UTC)
From: [identity profile] aruslan.livejournal.com
Сравнимость чисел - вопрос терминологический и контекста.
Сравнимость выражений - вопрос намордника и оптимизатора.
Странно слышать, что это - миф.

Date: 2009-11-16 02:50 pm (UTC)
From: [identity profile] lionet.livejournal.com
Я подразумеваю школьные мифы типа: сравнивать напрямую нельзя, только через неравенство и эпсилон.

Date: 2009-11-16 03:10 pm (UTC)
From: [identity profile] aruslan.livejournal.com
А, ну это от контекста зависит, очевидно.
Могу себе представить неустойчивые методы, где проблему замазывают эпсилонами, видимо k-порядка.
Я про прозаический спиллинг и прочие не вполне эффективно выразимые в типах проблемы.

Profile

wizzard: (Default)
wizzard

January 2019

S M T W T F S
  12 345
6789101112
1314 1516171819
202122 23242526
2728293031  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 25th, 2026 06:28 am
Powered by Dreamwidth Studios