
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