[J3] [Fwd: [EXTERNAL] [WG2.5] Fwd: draft of a report on 754-2019]
Van Snyder
Van.Snyder at jpl.nasa.gov
Mon Jun 17 15:47:45 EDT 2019
Might be of interest to some.
-------- Forwarded Message --------
From: Bo Einarsson <bo.g.einarsson at gmail.com>
To: wg25 at lists.cs.univie.ac.at
Subject: [EXTERNAL] [WG2.5] Fwd: draft of a report on 754-2019
Date: Sat, 15 Jun 2019 07:30:35 +0200
Dear WG 2.5 member.
The work on revising IEEE 754 is near completion. Here is a summary of
the work.
Best regards,
Bo
Bo Einarsson
Retired from the Mathematics Department
Linköping University
Home address: Ekholmsvägen 249
SE-589 29 LINKÖPING, SWEDEN
Tel. +46 13 151896
---------- Forwarded message ---------
Från: Jerome Coonen <jcoonen at gmail.com>
Date: fre 14 juni 2019 kl 05:54
Subject: Re: draft of a report on 754-2019
To: David Hough 754R work <754r at ucbtest.org>
Cc: <stds-754 at ieee.org>
David, thanks for this excellent summary, on the heels of all your
chairmanship.
Here are a few small comments, if you work on this further:
* It would be nice to acknowledge Jim Cody as "the late Dr. Jim
Cody".
* In the minicomputer section you might include names like Prime
and Data General in the mix, to name just two, but it was the
PDP-11 family that loomed so large in the early days. The VAX
was coming, but it arrived amidst the deliberations.
* One feature of 2008 you didn't mention is the inclusion of the
recommended 16-bit format, which I understand was promoted by
Nvidia. I've heard it referred to as "the IEEE 16-bit format"
more than once, so it was a significant inclusion.
Great job marshaling all this history. And thanks to everyone who
contributed.
-Jerome Coonen
650.996.4738
jcoonen at gmail.com
On Tue, Jun 11, 2019 at 4:08 PM David Hough 754R work <754r at ucbtest.org>
wrote:
On the assumption that RevCom will sign off on our work
tomorrow, I have
been asked to prepare about 1800 well-chosen words for a future
IEEE Computer
article.
So today I produced 1400, weighted perhaps more heavily toward
history than
is needed. This is a chance for those who helped produce the
final product
to say what they think is of most importance to a general
audience of IEEE
members... and to provide suggested text to that end. They
don't care about
all the bugs we fixed, but they do care about new features and
our deprecated
feature.
There are no references so far. This is not a refereed
research report,
so we don't need a comprehensive list, but feel free to mention
a few
that are essential reading for the intended audience.
==
IEEE Standard for Floating-Point Arithmetic revision due in 2019
IEEE Std 754-2008 for Floating-Point Arithmetic has expired, and
so
a bug-fix-and-minor-enhancements revision activity began in 2015
and
has now been approved [I hope] by the IEEE Standards Association
review
committee, RevCom, for consideration by the IEEE Standards Board
as IEEE
Std 754-2019.
The 754 working group considered 50 drafts over a period of
three and a
half years. That's a lot of work for a bug fix release! To
put that
effort into perspective, let's review the history of 754.
Diversity: The 1960's were the flowering of the mainframe era,
epitomized
by IBM 360 and CDC 6600 and DEC 10, but with many other
contenders as
well. The 1970's saw a corresponding boom in minicomputers,
epitomized
by the DEC VAX 780 and, again, may others. These systems
all had
floating-point arithmetic, usually programmed with Fortran
compilers.
But that was about all one could generalize. Each arithmetic
was different in greater or lesser ways, sometimes even within
the
same instruction-set architecture. Quite an engineering
art
developed in how to write programs that would run equally
correctly when
compiled with these differing compilers targeted at different
hardware.
The "portable" numerical programs that resulted were often much
more
complicated than corresponding programs targeted at just one
system.
Standards: Meanwhile microprocessor development was taking over
the
steepest part of the development curve. Although the
single-chip
processors available around 1976 had no floating-point hardware
and often
not much integer arithmetic hardware beyond addition and
subtraction,
technologists and executives could foresee that powerful
arithmetic
engines would be feasible in a few years. So Intel hired Dr.
John
Palmer to gather customer requirements and coordinate a
specification
for floating-point software for Intel processors, in the
expectation
that hardware would be the next step. Intel also
consulted
Prof. W. Kahan from the University of California, who in the
course of
mathematical error analysis for scientific computing, had
unearthed and
publicized many of the bad choices made in mainframe and
minicomputer
floating-point hardware, system software, and compilers. At
the
same time, Dr. Robert Stewart and others in the IEEE decided it
would
be more efficient and timely to standardize aspects of
microprocessors
in advance, by achieving consensus among individual technical
experts,
rather than trying to standardize the traditional way, after the
fact,
by achieving consensus among commercial organizations. Thus
the IEEE
Microprocessor Standards Committee was commissioned to provide
"timely
development of great technical standards." In 1977 these
diverse
threads converged in the IEEE 754 working group for binary
floating-point
arithmetic. Under Richard Delp and David Stevenson, the
working group
labored to produce IEEE Std 754-1985 for Binary Floating-Point
Arithmetic.
1985: The motivation for 754-1985 was to make it easier to
provide
portable robust mathematical software. It's far more
efficient
to put a little more effort into the hardware and system
software
specification than much more effort into the keeping all the
world's
portable mathematical software working. 754-1985 specifies
formats,
operations, rounding, and exceptions, which affect all levels of
hardware
and software, but in several places it reads mostly like a
hardware
specification, referring to condition codes and traps and global
mode and
status bits. Mathematical software providers would have
preferred
to standardize high-level language facilities, but there was no
chance
of getting language standards interested until there was some
hardware
implementations and some compilers and libraries proving the
concepts.
So the intent was to get some hardware implementations, then
subroutine
libraries to provide access, then compilers to generate the
obvious
mappings of language constructs to hardware, and finally
compilers to
add language features that would allow access to the novel
aspects of
the standard. Typical contentious issues of this effort
included -
why not standardize DEC VAX arithmetic which was closest to the
proposed standard; why not eliminate gradual underflow; why not
do
something really novel like symbols for overflow and underflow
intervals,
or variable-length exponent fields? Over time these issues
were
resolved and the final consensus was not very different from the
early
"CKPPS": proposal drafted by Dr. Jerome Coonen, Kahan, Palmer,
Tom Pittman, and Prof. Harold Stone.
1987: In the midst of 754's work, a parallel effort under Dr.
Jim Cody
tackled decimal floating-point arithmetic and word lengths other
than 32
and 64 bits. Although potentially of greater import to
ordinary
computer users who think in decimal rather than binary, this
process
was not contentious as the main issues had been settled in
754-1985.
IEEE Std 854-1987 for Radix-Independent
Floating-Point Arithmetic was the result, but it had little
industrial
impact compared to 754-1985.
2008: 754-1985 was adopted in whole or part by most
microprocessor
architectures as they began to incorporate hardware
floating-point
instructions. Because 754-1985 couldn't be implemented
entirely
in hardware, however, manufacturers developed subroutine
libraries to
provide access to the novel aspects of the standard – in
particular,
modes and exception flags. The libraries tended to be
different, so
that once again portable mathematical software development was
inhibited.
By now, C had become an important system and application
programming
language, so a subgroup of the C Language standards committee
started
developing proposals for full support of 754-1985 in C. Much
of their
work was incorporated in the 1999 standard for C.
Meanwhile,
754-1985 had expired and been quietly renewed several times,
So in
2001, a new 754 working group convened under Bob Davis and Dr.
Dan Zuras
to produce a comprehensive revision to supersede 754-1985 and
854-1987.
The goal was ambitious - encompassing incorporating insights
from
854-1987, a new decimal encoding proposed by Dr. Mike Cowlishaw
of IBM, specifications for elementary transcendental functions,
and
higher-level language facilities for dealing with modes and
exceptions
and expression evaluation and optimization. Such an ambitious
project
became quite contentious on a number of technical points.
But the
biggest challenge was a commercial dispute that led to
standardizing two
encodings for decimal floating-point arithmetic. No end user
asked
for that, but a compromise was accepted to prevent stalling out
on the
rest of the standard, The most significant change from
754-1985 is
turning from specification close to hardware to specification
close to
higher-level language constructs. This was the ultimate
intent
all along, but seemed premature in 754-1985.
2019: 754-2008 expired in 2018. The draft 754-2019 was
intended as
an upwardly-compatible bug-fix and critical-small-enhancements
release.
We started by simplifying the statement of Scope:
This standard specifies formats and operations for
floating-point
arithmetic in computer systems. Exception conditions are
defined and
handling of these conditions is specified.
The bug fixes are many, and mostly refinements of language
and elimination of accidental inconsistencies; subclause 5.11
was
substantially rewritten to better clarify the original intent.
Some of
the enhancements by subclause:
5.3.2 new quantum operation for decimal formats is recommended
9.2 new tanPi, aSinPi, and aCosPi operations are recommended
9.5 new augmented{Addition,Subtraction,Multiplication} are
recommended
9.6 new {min,max}imum{,Number,Magnitude,MagnitudeNumber}
operations are
recommended; NaN and signed zero handling are changed from
754-2008 5.3.1.
9.7 new {get,set,setsignaling}payload operations are recommended
Of these, the 5.3.2, 9.2, and 9.7 additions were inspired by
existing features of C Language support for 754-2008
arithmetic.
For various reasons, these had been omitted from 754-2008.
The new
Pi operations complete the set defined in 754-2008. The
payload
operations allow applications to read and write payloads of NaNs
in an
implementation-dependent way.
Somehow 754-2008 incorporated a defective definition of the
{min,max}{Num,NumMag} operations, which weren't associative in
the
presence of NaNs. So that definition was removed from
754-2019.
Instead new operations
{min,max}imum{,Number,Magnitude,MagnitudeNumber}
are defined that are associative. Implementations can
conform to
both 754-2008 and 754-2019 by providing all of these operations,
but
the defective ones are deprecated.
The most interesting new feature of 754-2019 is the augmented
arithmetic
operations. They provide the exact result of an addition,
subtraction,
or multiplication in two parts that add up to the exact result.
These operations were added because hardware implementations of
similar
functionality appeared imminent and we hoped to have them work
identically
and to provide the most useful functionality.
Toward that end, a new rounding method - round to nearest, ties
toward
zero - was defined for these
operations. So defined, they are useful for two target
applications -
reproducible vector summation in the presence of varying numbers
of threads, and creating "double-double" software that extends
the highest hardware precision, used in high-precision
mathematical
calculations and some physics simulations such as climate
prediction
and solar system stability.
More extensive discussions of the rationales for the new
operations
and explanations for some confusing parts retained from 754-2008
may be
found here: http://754r.ucbtest.org/background/
________________________________________________________________________
To unsubscribe from the STDS-754 list, click the following link:
https://listserv.ieee.org/cgi-bin/wa?SUBED1=STDS-754&A=1
________________________________________________________________________
To unsubscribe from the STDS-754 list, click the following link:
https://listserv.ieee.org/cgi-bin/wa?SUBED1=STDS-754&A=1
_______________________________________________
wg25 mailing list
wg25 at lists.cs.univie.ac.at
https://lists.cs.univie.ac.at/cgi-bin/mailman/listinfo/wg25
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.j3-fortran.org/pipermail/j3/attachments/20190617/ab373f35/attachment-0001.html>
More information about the J3
mailing list