Re: Table 4 proposal version 0.1...
> Date: Wed, 29 Feb 2012 15:47:49 +0100
> From: Arnold Neumaier <Arnold.Neumaier@xxxxxxxxxxxx>
> To: 1788 <stds-1788@xxxxxxxxxxxxxxxxx>
> Subject: Re: Table 4 proposal version 0.1...
>
> On 02/29/2012 03:23 PM, Vincent Lefevre wrote:
> > On 2012-02-21 17:20:47 -0800, Dan Zuras Intervals wrote:
> >> I still have no good answer for midpoint(Empty) so that
> >> is still not part of this proposal.
> >
As I keep saying, mid(Empty) is not part of this proposal.
We can continue this debate until someone HAS a proposal
that makes sense. I do not have one yet.
>
> . . .
>
> On the other hand, a function split(X) [if provided by the standard]
> should return a sensible splitting point if one exist, and NaN
> otherwise, i.e., if X contains at most two machine numbers. What is
> most sensible would have to be discussed. I thought for some time that
> returning the median of the machine numbers is good but this would
> split the interval [0,1] at an extremely tiny number, which is not
> warranted. It seems that there is no ''natural'' such function, thus
> the standard should not provide one.
>
> Instead, I propose to provide a function flmedian(X) that provided the
> median, so that users can make their own split routine based on mid,
> flmedian, and scaling considerations.
I have not written it down yet, but I have an algorithm in
mind for split(X) that would work at level 1 with only one
new piece of information: namely the radix (2 or 10) within
which your arithmetic is done.
This split(X) would return a Real number that is nearest to
the median of representable numbers in any system of any
precision with that radix. When converted to a level 2 F
of that radix, the intervals [inf(X),split(X)] &
[split(X),sup(X)] would have the same number of representable
elements +/- 1.
But there is a fly in the ointment: Unless I know the range
of the exponent, I do not know how to properly split either
semi-infinite intervals or intervals containing zero. Where
"properly" is defined as +/-1 on each side. The reason for
this is that numbers "bunch up" around zero in much the same
way as they bunch up near infinity. And how much they bunch
up is a function of the exponent range & whether or not your
arithmetic supports subnormals.
There are 2 general ways to go: (1) make Emax ALSO a parameter
to the split, & (2) split off the infinities & zero BEFORE you
start "proper" splitting.
The former has the bad side effect of making split(X) live
more properly at level 2 than at level 1.
But the latter means you have some narrow (perhaps even
singleton [0,0]) intervals early on in your split.
I'm not sure the correct direction but I'm willing to listen
to arguments either way.
I'm leaning towards (2) at the moment.
Please let me know what you think.
Dan