Right. -0 == 0. The existence of a "-0" is a property of the underlying representation. The mathematical properties don't know about the sign bit, per se.
Oh, of course: for non-NaNs, correctly implemented IEEE
arithmetic is "exactly rounded". So addition of non-NaNs
must be commutative for any given rounding rule, ...
Is the compiler calculating that at compile time based on the lexical tokens, or at runtime with native CPU floating point instructions? That absolutely matters.