Comment #5 on issue 23563 by
ko...@google.com: double.operator-() is unstable
https://code.google.com/p/dart/issues/detail?id=23563
Scratch all that, there's a newer version of the standard, which goes into
more detail.
http://754r.ucbtest.org/drafts/archive/2006-10-04.pdf
"
7.5.1 Sign operations
7.5.1.0
Implementations shall provide the following homogeneous quiet-computational
sign operations for all
supported non-storage floating-point formats. They might propagate
non-canonical encodings. They are
performed as if on strings of bits, treating floating-point numbers and
NaNs alike, and hence signal no
exception.
...
negate(x) copies a floating-point operand x to a destination in the same
format, reversing the sign.
0–x is not the same as –x or negate(x).
"
Note that very last comment... so I'm still not sure what is
mandated/allowed for "-x" when x is a quiet NaN.