IMPLEMENTING THE IEEE
P754
STANDARD
1.
The Standard requires that a Normalizing Mode be provided,
in
which any nonnormal operands
to functions are automatically normalized before the function
is
performed. The
NPX
provides a
"Denormal operand" exception for this case, allowing the exception handler the opportunity to
perform the normalization specified by the Standard. The Denormal operand exception handler
provided by EH287.LIB implements the Standard's Normalizing Mode completely for Single- and
Double-precision arguments. Normalizing mode for Double Extended operands
is
implemented
in
EH287.LIB with one non-Standard feature, discussed in the next section.
2.
The Standard specifies that in comparing
two
operands whose relationship
is
"unordered," the
equality test yield an answer of FALSE, with
no
errors or exceptions. The 80287 FCOM and
FTST instructions themselves issue an Invalid Operation exception
in
this case. The error handler
EH287.LIB filters out this Invalid Operation error using the following convention: Whenever an
FCOM or FTST instruction
is
followed by a MOV AX,AX instruction
(8BCO
Hex), and neither
argument
is
a trapping
NaN,
the error handler
will
assume that a Standard equality comparison
was
intended, and return the correct answer with the Invalid Operation exception flag erased.
Note that the Invalid Operation exception must be unmasked for this action to occur.
3.
The Standard requires that
two
kinds of
NaN's
be provided: trapping and nontrapping. Nontrap-
ping
NaNs
will
not cause further Invalid Operation errors when they occur
as
operands to calcu-
lations. The
NPX
hardware directly supports only trapping NaN's; the EH287.LIB software
implements nontrapping
NaNs
by
returning the correct answer with the Invalid Operation excep-
tion flag erased. Note that the Invalid Operation exception must be unmasked for this action
to
occur.
4.
The Standard requires that all functions that convert real numbers to integer formats automati-
cally normalize the inputs if necessary. The integer conversion functions contained
in
CEL287.LIB
fully meet the Standard
in
this respect; the 80287 FIST instruction alone does not perform this
normalization.
5.
The Standard specifies the remainder function which
is
provided
by
mqerRMD
in
CEL287.LIB.
The 80287
FPREM
instruction returns answers within a different range.
ADDITIONAL SOFTWARE
TO
MEET THE STANDARD
There are two cases
in
which additional software
is
required
in
conjunction with the 80287 Support
Library
in
order to meet the standard. The 80287 Support Library does not provide this software
in
the interest of saving space and because the vast majority of applications
will
never encounter these
cases.
1.
When the Invalid Operation exception
is
masked, Nontrapping NaNs are not implemented fully.
Likewise, the Standard's equality test for
"unordered" operands
is
not implemented when the
Invalid Operation exception
is
masked. Programmers can simulate the Standard notion of a masked
Invalid Operation exception
by
unmasking the 80287 Invalid Operation exception, and providing
an Invalid Operation exception handler that supports nontrapping
NaNs
and the equality test, but
otherwise acts just
as
ii
{he
invaiid Opt::raiiull
cA0~pi.l0iJ.
Vv-~lC
li-..a:;kcd.
Th~
802B7
S:;.ppc~t
L!,br~!"y
Reference Manual contains examples for programming this handler
in
both ASM286 and
PL/M-286.
2.
In Normalizing Mode, Denormal operands
in
the TEMP_REAL format are converted to 0
by
EH287.LIB, giving sharp Underflow to
O.
The Standard specifies that the operation be performed
on
the real numbers represented by the denormals, giving gradual underflow.
To
correctly perform
such arithmetic while
in
Normalizing Mode, programmers would have
to
normalize the operands
into a format identical to TEMP_REAL except for
two
extra exponent bits, then perform the
operation
on
those numbers. Thus, software must be written
to
handle the 17-bit exponent explicitly.
C-2