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

Re: Requiring the EDP in 754 (or 1788.1 for that matter)



Dear Ulrich,

   I believe that by answering to Oliver's questions you would help
to clarify things for people like myself, who have not played
much with interval arithmetic in the past but who are interested
in understanding all its nuances now.

  On the other hand, by not answering to his reasonable questions
you would give the impression that you are only willing to
convince people about your points of view, but are not willing to
consider different opinions, or to argue about them.

                walter.

On Sun, Jan 31, 2016 at 2:12 PM, Oliver Heimlich <oheim@xxxxxxxxx> wrote:
On 31.01.2016 00:03, Ulrich Kulisch wrote:
> An exact dot product can easily be provided by a function call or by
> operator
> overloading in languages which provide this.
> If x and y are vectors why shouldn't it be possible to call the EDP by
> x×y.
>
> *But the real point is this:*  A correctly rounded dot product is slower
> by at least one magnitude
> than a possibly wrong computation of the dot product in conventional
> floating-pooint arithmetic.
> An exact dot product would be 6 times faster than the latter. So
> *the EDP is at least 60 times faster than a possibly wrong correctly
> rounded dot product.**
> **Speed and accuracy are essential for acceptance and success of
> interval arithmetic.**
>
> *Ignoring these facts is a terrible service to the standard.*

How can a floating-point EDP be used in interval arithmetic? I am not
aware of how to do it. Is it described in your book “Computer Arithmetic
and Validity”?

The IEEE Std 1788-2015 mentions a reduction operation called “dot”.  As
defined in the standard document this operation is meant for real
numbers (Level 1) or floating-point numbers (Level 2).

I have implemented an *interval* dot product, which can be used for
multiplication of interval matrices for example. It is not possible to
rely on the floating-point EDP (at least, I don't know how). In the
interval dot operation we have to consider (for each pair of intervals)
 - [Empty],
 - [Entire],
 - multiplication with [0, 0],
 - and intervals containing zero as an inner point (where interval
multiplication becomes difficult).

The interval dot operation can be implemented with two accumulators (one
for each boundary) and produce exact/tightest results.

Computing the interval dot product with midpoint and radius could
utilize a floating-point EDP, but the resulting interval would not be
exact anymore unless further operations guard against overestimation. [1]

So, AFAIK, 754 would require a different EDP operation than 1788. And it
would not be possible to use a hardware EDP for floating-point numbers
to compute the matrix multiplication for interval matrices with tightest
accuracy.

Please tell me if I missed something, thanks.

Best
Oliver

[1] S.M. Rump. Fast and parallel interval arithmetic. BIT Numerical
Mathematics, 39(3):539–560, 1999.