Thread Links Date Links
Thread Prev Thread Next Thread Index Date Prev Date Next Date Index

Re: Motion 52 -- Time to revive the "Expression" subgroup?



Personally, I’d keep the standard as simple as we can and view intervals as a range of values.  We have not much time.

I am OK with offering a brief warning about the excess widening, but the standard is not the place for a course in wise construction of interval algorithms.

My $0.02.

George Corliss


On Nov 3, 2013, at 2:57 PM, Michel Hack <mhack@xxxxxxx> wrote:

> One of the issues that has irked me over the years is whether
> an interval is intended to represent a single uncertain value
> (as in evaluation of sensitivity to initial conditions), or a
> range of values (as in constraint propagation).
> 
> I was reminded of this while examining Clause 6, "Expressions
> and the functions they define", in the current P1788 Draft 8.1,
> and the subject of Motion 52, which just reverted to discussion
> mode for one more week.
> 
> At the end of Clause 6.1 (c) one of the effects of repeated
> subexpressions is mentioned:
> 
>   "If the algebraic expression is evaluated naively, such a
>   subexpression is evaluated more than once, which affects
>   efficiency but not the numerics of what is computed."
> 
> Assuming no side-effects, this may be the only worry for *point*
> evaluation.  To this I wanted to add:
> 
>    Perhaps more significantly, when evaluated in interval mode,
>    multiple instances of the same variable can lead to excessive
>    widening of the final result; see Clause 6.x below.
> 
> I even drafted such a Clause 6.x, to be inserted between current
> 6.3 (The FTIA) and 6.4 (Related Issues):
> 
>  6.x. The dependency issue.  When the same variable occurs multiple times
>  in an expression, and the expression is evaluated in interval mode, there
>  are two possible interpretations: (a) the interval variable denotes a
>  single uncertain value, or (b) the interval denotes a range of values.
>  In case (a) there would be an implied dependency between two instances
>  of the same variable that is not present in case (b).  The most extreme
>  example might be x-x which would be the singleton [0] when viewed as (a),
>  but would be an interval twice as wide as x when viewed as (b).  Since
>  the evaluator (interpreter, compiler) typically does not know the intent,
>  it must assume view (b) in order to guarantee containment and the FTIA.
>  It also means that it must be possible to control compiler optimizations
>  that turn x-x into 0, x+x into 2*x, or x*x into sqr(x) -- and it explains
>  why the standard requires the presence of a Square function sqr().
> 
> 
> I was however concerned about this, which is why I would like
> to open discussion on this point:
> 
> (1)  I'm a bit uncomfortable about having brought up the issue
>     of compiler transformations: is there a SHALL here?  This
>     goes beyond issues of a so-called "reproducible mode".
> 
> (2)  Is the above too closely related to the set-based flavor
>     to appear here?
> 
> I was discussing this with John Pryce, who replied:
> 
> | As for 6.x: the dependence issue needs to be discussed somewhere.
> | But IMO your paragraph says too much for Clause 6 and too little
> | for a proper exposition.  I think
> |
> | - There should be a shorter description of the issue in §6.
> |
> | - It should be tied to an emphasis that an expression, whichever of
> |   the 3 descriptions of it is used, is taken literally operation by
> |   operation: if you replace x-x by 0 you have made a different
> |   expression.
> |
> | - Your 6.x is really a contribution of the Language Issues subgroup,
> |   which needs reviving!  6.x needs to become an informative Annex,
> |   and be expanded -- how much, I'm not competent to say.  Would you
> |   take on that task?  Ask for advice or help from others if you
> |   wish, but a solo effort may get the most done in the least time
> |   at this stage.  Jürgen & Dima are in charge of Level 3 and the
> |   Annexes, so they would advise on just where the text would go.
> 
> I agree, so here we go.
> 
> Michel.
> 
> P.S.  Initially I thought the common subexpression issue was peculiar
>      to the "algebraic expression" view, 6.1 (c), but John reminded
>      me that the issue is present already in the "formal expression"
>      view, which allows the output v of one formal operation to be
>      an input to several others, even though all inputs to a formal
>      operation (the u_i) have to be distinct variables.  So my 6.x
>      is indeed general, and not particular to 6.1 (c).
> ---Sent: 2013-11-03 21:30:14 UTC

Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail