Re: Payload length and interpretation in IEEE Std 754-2008
6.2.1 NaN encodings in binary formats:
"If the first bit of the trailing significand field is 0, some other bit of the
trailing significand field must be non-zero to distinguish the NaN from
On Apr 29, 2011, at 10:37 AM, Charles Stevens wrote:
Forgot which way the "signaling-vs.-quiet" thing went.
For binary formats, in all three cases under consideration, the exponent
field is all-bits-on.
Infinity has all zeroes in the trailing significand field.
Quiet NaN has a 1 in the leading bit of the trailing significand field; the
remainder of that field is the payload defined by the implementor.
Signaling NaN has a 0 in the leading bit of the trailing significand field;
the remainder of that field is the payload defined by the implementor.
What's the distinction, then, between a canonic infinity in that
representation and a *signaling* NaN with a payload of zero?
Is there a specification somewhere that says that the payload may not be
Subject: Re: Payload length and interpretation in IEEE Std 754-2008
Date: Fri, 29 Apr 2011 10:12:27 -0700
CC: forieee@xxxxxxxxxxxxxx; stds-754@xxxxxxxxxxxxxxxxx;
On Apr 29, 2011, at 10:01 AM, Charles Stevens wrote:
The way the COBOL rules are stated now, the result of this action is a
positive quiet NaN with a payload of ZERO. The payload might or might not
be modified later.
What I have since realized is that the bit-pattern that results, in a
BINARY interchange format (but not a DECIMAL format), is exactly the same
as that of a positive infinity. We have "class tests" for the two
infinities and for a NaN, and COBOL doesn't "do" infinity arithmetic, so
all three are considered non-numeric in COBOL rules.
If you're following the IEEE-754 recommended practice, the resulting bit
pattern is *not* a positive infinity. In particular, you say "the result of
this action is a positive *quiet* NaN with a payload of ZERO". Clause 6.2.1
"A quiet NaN bit string should be encoded with the first bit (d1) of the
trailing significand field T being 1."
So, if you follow the recommended practice, your "quiet NaN with a payload
of ZERO" looks like this:
and does not have the same encoding as positive infinity. To be fair, this
is recommended, not required, and COBOL does not need to follow this
convention. But it would be wise to do so.