Journal Articles

CVu Journal Vol 11, #1 - Nov 1998
Browse in : All > Journals > CVu > 111 (19)

Note: when you create a new publication type, the articles module will automatically use the templates user-display-[publicationtype].xt and user-summary-[publicationtype].xt. If those templates do not exist when you try to preview or display a new article, you'll get this warning :-) Please place your own templates in themes/yourtheme/modules/articles . The templates will get the extension .xt there.

Title: A Personal View

Author: Administrator

Date: 06 November 1998 13:15:28 +00:00 or Fri, 06 November 1998 13:15:28 +00:00

Summary: 

Body: 

I was surfing the WWW the other day when I came across an interesting site - www.cs.ucsb.edu/conferences/java98. Among the conference papers was one on the faults in the current implementation of floating point types in Java. It is titled "How Java's Floating-Point Hurts Everyone Everywhere". It is co-authored by Prof. W Kahan and Joseph D. Darcy. If you are purely interested in Java you should probably balance this paper by reading Dr James Gosling's keynote address of the previous day: "Extensions to Java for Numerical Computation." However what particularly interests me is the general problems with numerical computing that Kahan and Darcy highlight.

If asked to name a language in which you could safely do numerical work the odds strongly favour selecting Fortran. To my surprise I see that Kahan considers that the Fortran implementation of Complex is bugged. Of course regular users of Fortran have got their work-rounds well honed and probably justify the problem as being an inherent problem with computers.

This does not appear to stand up because the formulation of Complex that will be provided by the next release of C9X does not suffer from the specific problem (read the paper if you want to understand the problem).

However before everyone goes rushing off to hype up C9X numerical facilities you should be aware that not all numerical experts are happy about other aspects of the numerical extensions to C that are making it into C9X.

Before the C++ aficionados get a glowing feeling of superiority I should mention that valarray has come under severe criticism as being badly designed and unsuitable for the purpose for which it was designed.

I guess the Smalltalk enthusiasts will claim superiority but they fall at the first post because Smalltalk has no top-level concept of a value. Without that, numerical programming becomes exceptionally difficult to even think about.

I am not even going to comment on COBOL, and rest assured that Pascal also has its problems. I am not sure about APL because I have never had the time to study it.

Do these flaws in the numerical facilities for World's most popular computing languages matter? Actually I think it does. We are increasingly reliant on computers to support numerically intense computations. The results are used in everything from the design of secure escape routes from burning buildings to projecting the behaviour of nuclear reactors. Our entire world is built on a foundation of numerically intense computations. However our computer languages cannot handle the boundary cases correctly.

It is bad enough that we have to trust flaky hardware and buggy software but apparently we have yet to provide a high-level language that does not contain inherent flaws. Of course, if all programmers are aware of the problems and understand the mathematical theory well enough to work round them all might still be safe. But in fact the C++ Standards Committees could not even retain the services of a numerical expert to get valarray sorted out. His employer needed his expertise. Those that understand the problems are working too hard to have time to remove them from the fundamental tools.

In the real world we have a big enough problem with programmers who do not understand such simple things as 'order of evaluation' or who believe that sequence points provide an unambiguous definition of the how side effects work (there are no gradations of sequence points, yet a full specification of behaviour needs some such specification). We learn to stay away from the edges of cliffs but sometimes such potentially lethal boundaries have to be handled.

Consider standing on the edge of a cliff when you loose your balance. The direction in which you loose it is the difference between life and death. So, in numerical terms is the difference between infinitesimally more or less than zero.

Notes: 

More fields may be available via dynamicdata ..