Re: formatOfMidpoint()
> If can be interesting to introduce a notion of a number format F
> "compatible" with an interval type T. The conditions could be:
> * For each x in F, [x,x] is an element of T.
I think it should be "For each finite x in F".
> * Each non-empty interval of T must contain an element of F
> (or, equivalently, a point interval of T).
>
> In particular, for such a number format, it is possible to define
> a midpoint operation such that the Level-2 result (element of F)
> is in the interval. Not sure whether it should be required that
> such a number format necessarily exists, specially if you want to
> allow:
>
> > This might also be the case for some of the off-center implicit-format
> > examples, where the issue is not range but precision: if the Level 1
> > interval is entirely between two representable target-format values,
> > then there is no representable midpoint, and the result should be NaN.
Consider interval type T. Let's look when a format F "compatible" with T exists.
It can be formulated without mention of F.
(Singletons) "Each non-empty interal of T must contain a point interval [x,x] of T"
If this condition true, then F is unique. It must consists of nubmers x related
to all point intervals [x,x] (and also infinites).
The condition may fail for some artifical interval types.
Consider midrad_F-like type without point intervals.
T={[m-r,m+r] | m \in F, r \in F, m and r finite, r > 0} \union {Empty,Entire}
It seems that useful interval types satisfy the (Singletons) property.
Perhaps, this property could be a part of definition of interval type.
However, the resulting unique number format may be unusual.
The tripple (fromer midradrad) format <x,i,s>=[x+i,x+s] , x \in F, i \in F, s \in F
satisfies (Singleton) property. The set of point intervals is double-F numbers
{ x + y | x \in F, y \in F }.
But these numbers can be easily represented by point T-intervals.
I look through some usages of numeric operations to see if they can be replaced by
nonarithmetic interval opearations.
=== center: T->T
Let us see how (mid: T->F) operation is used in central form.
We have an expression f(x) and an interval X.
We take c = mid(X) and compute f(c).
We use interval computation though the c is a point.
V = f([c,c]).
Then we compute interval enclosure of f'(x) on X
G = f'(X)
and make the form
V + G * (X - [c,c]) .
We use c as a point interval [c,c]. We don't use c as a number.
So for purpose of central form mid(x) can be replaced by nonarithmetic interval operation center(x)
center: T->T
Level1 center for bounded intervals is center([u,v])=[(u+v)/2,(u+v)/2].
Level2 center returns point interval from T that is nearest to Level1 center.
==== convertS2T: S->T
Sometimes we need to obtain F-approximations of T-interval [u,v] .
We may be interested in F-opproximations of its bounds, midpoint and radius.
Level1 functions inf(x), sup(x), mid(x), rad(x) were designed for this purpose.
Defintion of relative Level2 operations meet some difficulties for arbitary F and T.
The another usage of (mid_F: T->F) function
All of them can be obtained in two steps using operation (convertS2T: S->T).
Its definition is nothing more than convertS2T(x) = hull_T(x) .
Let us take S-interval [u,v]
If we take T=infsup_F, its Level2 inf(.) and sup(.) are exact.
We obtain T-interval [u',v']=convertS2T([u,v]). u' and v' are F-approximations of bounds of [u,v]
If we take T=midrad_F, its Level2 mid(.) and rad(.) are exact for bounded intervals.
We obtain T-interval <m',r'>=[m'-r',m'+r']=convertS2T([u,v]). m' and r' are F-approximations of bounds of [u,v].
===== split: T->(T x T)
For infsup-F formats the split operation can be formed using midpoint operation from the "Midpoint paper".
split([u,v])=([u,midpoint([u,v])], [midpoint([u,v]),v])
This works also for triple formats
split(<x,i,s>)=(<x,i,midpoint(i,s)>,<x,midpoint(i,s),s>)
However, split operation can fail some intervals of midrad_F type.
========
So my proposals in this post are:
inf(x) and sup(x) at Level2 are defined for infsup_F types only.
mid(x) and rad(x) at Level2 are defined for midrad_F types only.
There are addition nonarithmetic interval operations defined for every type T.
center: T->T
convertS2T: S->T
split: T->(T x T)