an opportunity to address ICIAM

David G. Hough on validgh dgh
Sun May 19 13:22:18 PDT 1991


ICIAM is the premier international gathering of applied mathematicians, but...
two days ago I missed
my connections for the third consecutive time on a flight from the east coast
to the west, so I'm convinced commitments to be in Washington DC 3:30-5:30 PM
on Tuesday 9 July and in Kona Hawaii at 7 AM on Thursday 11 July are fundamentally
irreconcilable.  Thus I would like to solicit a volunteer to speak on the topic
outlined below on Tuesday 9 July.  If you are interested let me know.
Your opinions needn't coincide with mine as long as you present the main issues.
I can offer some financial assistance with travel expense if that would help.

The session title is Scientific and Numerical Computing in C.  There will be 
six talks of about twenty minutes each; the others are:

An Overview of the C Standardization Work - X3J11 and NCEG - Vouk
Converting Fortran to C - Feldman
Are Vectorizing C compilers helping the scientific C programmer? - Smith
Programming Massively Parallel Systems in C - Frankel
Coping with Arrays and Pointers - Vouk

For more details about this talk, please contact dghavalidgh.com.
For more details about the rest of this session, please contact voukacscadm.ncsu.edu.
For more details about the rest of ICIAM, contact iciamawharton.upenn.edu.

--------------------------------------------------------------------------------

Here's the abstract I submitted:

With the benefit of an ANSI Standard C programming language and an
ANSI/IEEE Standard for Binary Floating-Point Arithmetic, naive users
might expect that programming environments conforming to both standards
would produce identical numerical results.  More experienced
programmers would be able to "prove" that such results are technically
unfeasible, uneconomical, and undesirable.

What's a realistic expectation?  There are genuine mathematical issues
relating to elementary transcendental functions, performance issues
relating to systems that compute anonymous intermediate results in
extended precision, and philosophical issues relating to
standardization: what should be standardized and when, for
standardization suppresses innovation, both good and bad.  These issues
are aggravated if exception handling is also standardized: what was
cheap and convenient on simple computers may be exceptionally costly on
high-performance systems, and the cost may be payable even by programs
which generate no interesting exceptions.
 
The Numerical C Extensions Group faces such questions among many others
as it seeks to extend ANSI Standard C to a language for mathematical
software that is superior to Fortran-77 in every respect.

--------------------------------------------------------------------------------

Here are some slides I produced for a preliminary version of this talk:

           Mathematical Software in Standard C:
                 Why no Standard Results?


             Standard Floating-Point Arithmetic

             IEEE 754
             IBM 370
             DEC VAX
             Cray



                    ANSI-C, ANSI-Fortran

          not much about arithmetic, or exceptions
          except ANSI-C <math.h>



             Why don't we get standard results?

             same numerical results
             same exceptions

             base conversion
             expression evaluation
             transcendental functions



             Base conversion is relatively easy

             to be correct
                Jerome Coonen's thesis
                David Gay's netlib code
             to be fast
             to be small
             but all three is harder

             print *,x

                Expression evaluation issues

          higher precision expression evaluation
          multiple operations - one rounding error
          parallel processing



          Higher precision expression evaluation

         double evaluation in C
         double evaluation on RS/6000
         extended precision registers: x86 and 68k

         Better accuracy
         Better performance
         Inconsistent storage behavior



                         t(i)=expr
                             ...
                     if (t(i).eq.expr)
                              ...

          Multiple operations - one rounding error

          z = x + (y * z)
          complex multiply
          sqrt(x*x + y*y)


                    Parallel processing

                    do i = 1,n
                    s=s + x(i)*y(i)

                    do i1=1,n1
                    s1=s1 + x(i1)*y(i1)
                    do i2=n1+1,n
                    s2=s2 + x(i2)*y(i2)


                  Transcendental Functions

                  Table-maker's dilemma
                  Large tables
                  Error bounds
                  Multiple algorithms

            What benefit from standard results?

         Network computing
         Debugging hardware problems
         Debugging compilers

         Selectively enable/disable:
         Standard base conversion
         Standard expression evaluation
         Standard transcendental functions

         Compile-time, link-time, run-time options


              What cost for standard results?

              Base conversion:
                 large tables
              Expression evaluation:
                 performance
                 accuracy
              Transcendental functions:
                 performance cost very high



More information about the Numeric-interest mailing list