0036デフォルトの名無しさん2020/03/29(日) 10:26:02.28ID:zyhHBMyS NaNとの!=以外の比較演算は常にfalse、!=は常にtrue ってするのが普通みたいだけど 0037デフォルトの名無しさん2020/03/29(日) 10:36:40.12ID:oQB7eLYm そもそも非数に「等しい」なんて場合があるのか? 数学的におかしくね? 0038デフォルトの名無しさん2020/03/29(日) 10:49:11.16ID:+/sFre8I 本来は「非数」なら「等しくない」も議論できない気がするのでなんとも 0/0->NaNなら「不定」と解釈してもおかしくないし、その場合、 NaN!=NaNは「ほとんどの場合に正しい」としか言えない 0039デフォルトの名無しさん2020/03/29(日) 11:12:19.09ID:CNNBvMSR !=は==の否定だから、NaN == NaNはfalseなので NaN != NaN -> !(NaN == NaN) はtrue ほかの等値比較の意味論に合わせてるんだと 0040デフォルトの名無しさん2020/03/29(日) 11:22:58.32ID:sawiSEmu>>35 std::numeric_limits<T>::is_iec559 (IEEE 754) の場合は NaN!=NaN に定まる模様。 https://stackoverflow.com/questions/38798791/nan-comparison-rule-in-c-c > I read the IEEE-754 rules on NaN, which states: >> The comparisons EQ, GT, GE, LT, and LE, when either or both operands is NaN returns FALSE. >> The comparison NE, when either or both operands is NaN returns TRUE.
C++の規定はこう。 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/n4849.pdf [expr.eq] (C++14でも同じ https://timsong-cpp.github.io/cppwp/n4140/expr.eq#5 ) > If two operands compare equal, the result is true for the == operator > and false for the != operator. If two operands compare unequal, > the result is false for the == operator and true for the != operator. > Otherwise, the result of each of the operators is unspecified. これだけなら「equalでもunequalでもない」として結果を不定とする実装もあり得る。
ただしCの規定には以下のものがある。 http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2454.pdf Equality operators > The == (equal to) and != (not equal to) operators are ... > For any pair of operands, exactly one of the relations is true. これによれば NaN==NaN, NaN!=NaN を両方 false とするCの実装は許されない。 わざわざこれに反するようなC++の実装が作られる理由は無さそうだし、受け入れられることも無さそう。 0041デフォルトの名無しさん2020/03/29(日) 13:05:33.90ID:0VKwdtls ieee754の書き方が難しすぎて何処をどう読めばNaN!=NaNになるのか分からん… 0042デフォルトの名無しさん2020/03/29(日) 13:28:15.35ID:oQB7eLYm 現実は>>39なんだろうけど 原理主義的にはNaNの比較は例外を投げるべき 0043デフォルトの名無しさん2020/03/29(日) 13:57:09.44ID:vg0TAzW0 NaNを無限と言い換えて数学的な議論をするしかない 0044デフォルトの名無しさん2020/03/29(日) 15:32:11.50ID:nDbo81n4 みんな大好き超準解析、 0045デフォルトの名無しさん2020/03/29(日) 15:32:36.22ID:CNNBvMSR 実際こんなのもある https://cpprefjp.github.io/reference/compare/strong_order.html0046デフォルトの名無しさん2020/03/29(日) 16:10:11.53ID:p3fh4h77 江添が悪い たぶんx==xが常に真になるとは限らない(xがNaNの場合)って話を間違えて覚えてたんだろ 0047◆QZaw55cn4c 2020/03/29(日) 16:13:08.71ID:GnieE+99>>28 私は江添氏の本を買って読んでおり、個人的に非常に参考になる、どちらかといえば良書の部類だと考えておりますので 「被害者を減らす」という発想はありえないのです 0048はちみつ餃子 ◆8X2XSCHEME 2020/03/29(日) 16:39:47.96ID:tSgWoZoj>>47 総合的な判断がどうあれそこが間違ってるなら間違ってるだろ。 0049デフォルトの名無しさん2020/03/29(日) 17:54:48.32ID:oQB7eLYm 江添氏はブログを立てて不特定多数の一般人からの指摘を待っている 誤りの指摘はそこでやれ、それが「被害者を減らす」ことにつながる