Это выглядит только странно, потому что большинство программных сред, которые позволяют NaN, также не позволяют использовать 3-значную логику. Если вы выбросите 3-значную логику в микс, она станет последовательной:
Даже .NET не предоставляет оператора bool? operator==(double v1, double v2)
, так что вы все еще придерживаетесь глупых результатов (NaN == NaN) = false
.