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

Re: Why (IMO) you should vote Yes to Motion 14.02



Nate, P1788

On 26 Jun 2010, at 17:48, Nate Hayes wrote:
> ...On the other hand, an "internal" format would be some format used internally
> by a vendor to actually implement the interval arithmetic operations. The
> purpose of interchange format is therefore to provide an interface between
> the end-user and the internal implementation provided by a vendor.
> 
> This internal format could be virtually anything, e.g., an inf-sup pair of
> IEEE 754 numbers, some multi-precision or proprietary long accumulator
> format, mid-rad, etc. So long as all conversions to and from the internal
> format preserve inclusion isotonicity, it shouldn't really matter. ...

I agree with almost all you write in this email (& not just because you quote something from me approvingly).

It's one of these cases where one group is saying "How can these guys think there's a problem?" and the other group is saying "How can these guys think there isn't a problem?".

So it must be partly about use of language, and unformulated assumptions. I have always thought that Intlab is conforming, and the code Siegfried quoted (which I vaguely knew, from one of his articles):
>      bthin = isequalwithequalnans(b.inf,b.sup);
>      if bthin                            % R * R with directed rounding
>        setround(-1)
>        c.inf = a*b.inf;
>        setround(1)
>        c.sup = a*b.inf;
>      else
>        setround(1)                       % R * IR
>        bmid = b.inf + 0.5*(b.sup-b.inf);
>        brad = bmid - b.inf;
>        crad = abs(a) * brad;
>        c.inf = 0;                        % preserve order of definition of intval c
>        c.sup = a * bmid + crad;
>        setround(-1)
>        c.inf = a * bmid - crad;

is, to me, a fine piece of conforming code, *provided* the final answer is delivered in inf-sup form.

Maybe one question at issue is "How far does P1788's writ run, when determining what is and isn't conforming?". Consider situation

               P1788
User          inf-sup       mid-rad       Library
Level        interface     interface
                 |             |
   y = A(x)      | --convert-> |
                 |             |         function A
                 | <---------- |
                 |             |
   z = B(y)      | ----------> |
                 |             |         function B
                 | <---------- |
       :                :                    :
       :                :                    :
If you convert from inf-sup to mid-rad before calling each library function, and back again on return, then your library is clearly P1788-conforming at the user level. 

If, for speed, you leave out the conversions --> and <-- whenever you can, thus using purely mid-rad most of the time, I almost certainly still want to call your program conforming, *provided* there are clearly marked start and end places where you do the initial conversion from inf-sup, and the final conversion back.

Is that the sort of thing we should be discussing? If so, how to harden these ideas up?

BTW I have always understood "interchange format" to be intended as a format allowing transfer of binary data files between platforms, or between programs on the same platform (as in 754). Your meaning isn't quite the same, so IMO we need a word different from "interchange" and "internal".

John