J3/04-419r1
Date: 9th November 2004
To: J3
From: Malcolm Cohen
Subject: Interpretation request on coexistence of kinds
NUMBER:
TITLE: Coexistence of IEEE and non-IEEE kinds
KEYWORDS: IEEE, kind
DEFECT TYPE:
STATUS: Submitted
QUESTION:
Is it allowed for a processor to have one or more real kinds for which
there is no IEEE support, while also having real kinds for which there
is IEEE support?
Much of the IEEE material appears to assume that a processor could
simultaneously support both IEEE and non-IEEE kinds. I thought this
was the intent. However, the first sentence of the second paragraph
in section 14 says that if IEEE_EXCEPTIONS or IEEE_ARITHMETIC is
accessible in a scoping unit, then IEEE_OVERFLOW and
IEEE_DIVIDE_BY_ZERO are supported in the scoping unit for *ALL*
[emphasis mine] kinds of real and complex data. This says to me
that if there is any kind of real for which the processor cannot
support IEEE_OVERFLOW or IEEE_DIVIDE_BY_ZERO, then pretty much none
of the IEEE stuff can be used on that processor at all; there
isn't much of the IEEE stuff that can be used without IEEE_ARITHMETIC
or IEEE_EXCEPTIONS. This seems draconian and unintended.
I speculate that this condition is intended to apply to all IEEE
real kinds rather than to all real kinds.
ANSWER:
Yes, this is allowed.
The requirement that IEEE_OVERFLOW and IEEE_DIVIDE_BY_ZERO be
supported for all kinds of real and complex data within that
scoping unit was intentional.
Support of these two flags means that the exceptions can be detected,
either by a subsequent use of IEEE_GET_FLAG or by program termination
(this is not under program control unless IEEE_SUPPORT_HALTING is true
for those flags).
Whether the flags are supported outside of a routine which uses
IEEE_EXCEPTIONS or IEEE_ARITHMETIC is processor dependent.
EDITS:
None.
SUBMITTED BY: Richard Maine
HISTORY: J3/04-419 m170 submitted
J3/04-419r1 m170 Revised