**Document:** WG14 N1465

**Submitter:** Fred J. Tydeman (USA)

**Submission Date:** 2010-05-10

**Related documents:** N1430

**Subject:** negate

Background: IEC 60559-1989 [IEEE-754-1985] has the following:

Some functions, such as the copy operation y := x without change of format, may at the implementor's option be treated as nonarithmetic operations which do not signal the invalid operation exception for signaling NaNs; the functions in question are (1), (2), (6), and (7).2. -x is x copied with its sign reversed, not 0 - x; the distinction is germane when x is +/-0 or NaN. Consequently, it is a mistake to use the sign bit to distinguish signaling NaNs from quiet NaNs.

Since Annex F of C99 is a binding between C language and IEC 60559, the requirements of IEC 60559 apply. But, C99 did not do a good job of specifying some of those requirements.

To make matters clearer:

Change existing F.3

-- The unary minus (-) operator provides the minus (-) operation recommended in the Appendix to IEC 60559.

to

-- The unary minus (-) operator provides the negate (-) operation recommended in the Appendix to IEC 60559. It only affects the sign bit. It reverses the sign bit, including for zeros and NaNs.

Add to Raionale:

In IEC 60559, negate is considered a bit operation that affects only the sign bit.