Re: Alternate floating-point results under directed rounding
Siegfried and P1788 members
On 7 Nov 2008, at 11:39, Siegfried M. Rump wrote:
> Arnold Neumaier wrote:
>>To have one conversion only would require that the compiler
recognizes the 1e400 inside intval(1e400) as something different
from a floating-point number.
>You mingle fl-pt interpretation of inf and interval interpretation.
My proposal is to interpret inf in the interval arena as larger than
representable, but not infinite.
Then naturally 0*[1,inf] = [0,0], no special interpretation is necessary.
This is consistent since inf is not a member of intervals. It is
the best we can do when intval(1e400) is specified.
Much as intval(0.1) does the best possible.
I also am struggling to understand what you mean. If I grasp aright:
1. You want the internal value representing +inf in a given IEEE format to carry the above special meaning when it is
input to a one-argument constructor,
INTERVAL intval(REAL x)
in C-like notation. Thus all of the following lines would have the same meaning as regards xx (assuming rounding is
"to nearest" or "up" in the second one):
xx = intval(inf);
xx = intval(maxreal+maxreal);
xx = intval(1.0/0.0);
x = inf; xx = intval(x);
Namely xx becomes [maxreal,inf] in the usual sense, in each case.
2. Thus the change you want is in how the constructor works, not in the value of the argument delivered to the
constructor. So no language change needed.
Is that correct?
Email sent from www.virginmedia.com/email
Virus-checked using McAfee(R) Software and scanned for spam