[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