Thread Links Date Links
Thread Prev Thread Next Thread Index Date Prev Date Next Date Index

Re: motion 24.03



Dear Prof. Kulisch, P1788,


I have the following questions and comments on Motion 24.03.

Q1) Does the motion text

"Every IEEE 1788 compliant system shall provide the four basic
arithmetic operations addition, subtraction, multiplication, and
division with rounding downwards and upwards."

mean that the exact result r (in R) of each operations is rounded to

    max( {x in F | x <= r} )    for rounding downward       (d1)
    min( {x in F | x >= r} )    for rounding upward         (u1)

or does it mean that r is rounded to an arbitrary number

    x in F    with  x <= r      for rounding downward        (d2)
    x in F    with  x >= r      for rounding upward          (u2)

?



Am 20.07.2011 09:55, schrieb Ulrich Kulisch:
Dear P1788 members,

  the motion 24.03 text is now very short. So let me list a few
arguments in favour of the motion:

-Safe bounds for arithmetic expressions frequently can be obtained more
easily, cheaper and faster with the operations with directed roundings
than by interval arithmetic (applications can be found in my book or in
the Intlab package and in many other places).

-The operations are requested on the system level. So on processors that
provide IEEE 754 arithmetic it is trivial providing these operations
(although perhaps not most efficiently).

Q2) What does system level mean?  Hardware only? Is the Java VM a system?


-On processors that provide interval arithmetic these operations are
naturally available. The lower and the upper bound of the result of an
interval operation performed for two reals give the requested operations.

-The motion stresses the basic meaning of the requested operations for
verified computing.

-Last but not least motion 24.03 requests necessary conversions between
different data formats.

Please vote on motion 24.03 if you not yet have done so.

With best regards
Ulrich

--
Karlsruher Institut für Technologie (KIT)
Institut für Angewandte und Numerische Mathematik (IANM2)
D-76128 Karlsruhe, Germany
Prof. Ulrich Kulisch

Telefon: +49 721 608-42680
Fax: +49 721 608-46679
E-Mail:ulrich.kulisch@xxxxxxx
www.kit.edu
www.math.kit.edu/ianm2/~kulisch/

KIT - Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft




If your answer for Q1 is (d1) and (u1) than we exclude implementations in programming languages without support for directed rounding, e.g. all Java VM based languages (Java, Scala, Groovy, Clojure ...) or pure (standard) and platform independent C++ (to my knowledge the still current C++03 standard did not define support for switching the rounding mode. Commonly the switching of the rounding mode is done in C++ using the C99 header fenv.h if supported, or with inline assembler.)

The problem with (d1) and (u1) is the accuracy of one ulp, which is hard to achieve in many programming languages / systems.

Best regards

Marco

--
     o           Marco Nehmeier, Lehrstuhl fuer Informatik II
    / \          Universitaet Wuerzburg, Am Hubland, D-97074 Wuerzburg
InfoII o         Tel.: +49 931 / 31 88684
  / \  Uni       E-Mail: nehmeier@xxxxxxxxxxxxxxxxxxxxxxxxxxx
 o   o Wuerzburg