
Dear Sirs, we understand your problem to preserve the Brouwer Fixed Point Theorem but we want explain to you our requirements. Our aim is to use your libraries about real and complex intervals also for our needs. Our applications are based on idea of sound approximation. Suppose we have two partially known real values a and b and we want to approximate their ratio. If a is approximated by the intervals I(a) and b by the interval I(b), we want to approximate the ratio I(a)/I(b). The semantic of ratio's operation in which we are interested is:
if b is not zero then a/b is approximated by I(a)/I(b)
(we specify that into our applications the condition 'if b is not zero' it is always guaranteed by others tools). If we have understood correctly the ratio's operation among intervals defined in your libraries, it throws an exception when I(b) contains zero.
Emphasizing the fact that we would not like to develop another library for the manipulation of real and complex intervals, we would like to know how we can obtain what we are interested in from the behavior given by filib and CoStLy.
In the case of the ratio, that is one of the simpler cases, we could split the interval I(b) in two parts: [inf I(b), 0) and (0, sup I(b)], but this would be possible only if filib and CoStLy support both closed and open intervals: this seems not to be possible with your libraries.
We would like your advice: how would you suggest to achieve our goal? Do you think that we could easily obtain what we need from filib and CoStLy, or do you suggest to use another library? We are novices to the field of
intervals and we need your expert opinion.
Thank you very much in advance,
Roberto Bagnara Alessandro Zaccagnini Tatiana Zolo

Dear Tatiana,
Suppose we have two partially known real values a and b and we want to approximate their ratio. If a is approximated by the intervals I(a) and b by the interval I(b), we want to approximate the ratio I(a)/I(b).
If we have understood correctly the ratio's operation among intervals defined in your libraries, it throws an exception when I(b) contains zero.
Yes, this is done in the current version of CoStLy.
we could split the interval I(b) in two parts: [inf I(b), 0) and (0, sup I(b)],
Yes, for real intervals this is possible.
but this would be possible only if filib and CoStLy support both closed and open intervals: this seems not to be possible with your libraries.
You don't necessarily need open intervals, but unbounded intervals (which are not implemented in CoStLy either). The real division I(a)/I(b) when I(b) contains zero can be performed in so-called extended arithmetic. You have to consider several special cases (e.g. you have to distinguish if 0 \in I(a) or if 0 lies in the interior of I(b) or at its boundary, etc.), but each case leads to a simple formula. However, the result of the division is either the full real line, an unbounded real interval, or the union of two unbounded real intervals.
We would like your advice: how would you suggest to achieve our goal? Do you think that we could easily obtain what we need from filib and CoStLy,
That depends on what other operations (besides the real division) are required in your problem. If you only need the basic arithmetic operations +,-,*,/ then it should not be too difficult to build an extended complex arithmetic from filib. However, the situation is much more complicated (I would even say: impossible) for multi-valued complex standard functions like log or square root. E.g., I don't know how one could find a practical representation for the set of *all* values of sqrt( ln (Z) ) for a given complex interval Z.
The basic problem with the complex logarithm (and other multi-valued functions) is that you either have to define it uniquely (and then you get regions where it is not defined or you lose continuity), or you have to consider the set of all (i.e. infinitely many) solutions.
To preserve analyticity, CoStLy uses principal values for all complex functions. Thus, the program terminates with an exception when the logarithm of a negative real number occurs, and you only get one function value for the square root or for other roots.
I am well aware that this restriction may be too prohibitive for many applications. In fact, while the general case of arbitrary compositions of multi-valued complex functions appears hopeless, it may still be possible to compute practical interval enclosures for *some* complex expressions (e.g. for sqrt(Z) + ln(Z)).
Could you send some of the expressions that you want to evaluate? Perhaps we can find a solution for your special problems without having to consider all possible exceptional cases.
Best regards,
Markus Neher
participants (2)
-
Markus Neher
-
Tatiana Zolo