[std-interval] Mathematical relations and default initialization
Frederic.Goualard at univ-nantes.fr
Fri Sep 15 00:06:07 PDT 2006
Guillaume Melquiond wrote:
> Le jeudi 14 septembre 2006 à 10:21 +0200, Frédéric Goualard a écrit :
>> The nth_root_rel() operator does not appear in the standard. Is this
>> omission on purpose? If indeed it is, why is it so?
> The nth_root_rel is purposely out of the proposal because nth_root is
> out too :-). I don't think the omission is on purpose though. If people
> feel it is useful, it can be added.
In my experience, nth_root() may safely be excluded from the standard
because it is seldom used. On the other hand, nth_root_rel() is *very*
important since it is necessary to handle constraints with
exponentiations, such as constraints on polynomials!
For example, to handle the constraint
x^5 = y
with a backward/forward algorithm (see "Revising hull and box
consistency". F. Benhamou, F. Goualard, L. Granvilliers, and J.-F.
Puget, Procs. of ICLP'99, pp. 230-244, MIT Press), we would use:
y <- y \cap pow(x,5)
x <- x \cap nth_root_rel(y,5,x)
Excluding nth_root_rel() from the standard makes the introduction of the
other relational operators basically useless since I believe we have
more often to deal with constraints containing exponentiations than with
constraints involving, say, trigonometric functions.
>> Side notes:
>> - on Page 12, the signatures for the mathematical relations are wrong
>> (compare with page 27).
>> - div_rel() does not appear on page 27 while it is listed on page 12
> Thanks, I will take a look.
>> * Default initialization
>> I see on page 15 that the default constructor creates an empty interval.
>> At some point in the discussion, Sylvain gave 6 possible ways of
>> implementing this constructor:
>> 1- no default constructor at all
>> 2- [0,0]
>> 3- empty
>> 4- whole
>> 5- uninitialized tag
>> 6- see below (something a la "singular iterator")
>> Possibility 4 was brushed away from the start, and the remaining
>> possibilities heavily debated. In my opinion, it makes sense to have the
>> default constructor return "whole" since interval arithmetic is often
>> used in processes that try to gain some information on the possible
>> value of a variable (that is, we start from a wide interval and narrow
>> it down to some reasonably small one).
> I don't remember 4 being brushed right away (proposition 1 was). As a
> matter of fact, propositions 3 and 4 have reached a point in my opinion
> where I consider them to be equally useful. So, at least on my side, it
> is still 4 in the proposal, only because of inertia.
You mean "3" of course :o)
Frédéric Goualard LINA - FRE CNRS 2729
Tel.: +33 2 51 12 58 38 Univ. of Nantes - Ecole des Mines de Nantes
Fax.: +33 2 51 12 58 12 2, rue de la Houssinière - BP 92208
http://goualard.free.fr/ F-44322 NANTES CEDEX 3
More information about the Std-interval