MSVC appears to misapply the identity "A + -A == 0" which is not true for non-finite floating point values.