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

Motion 10 Elementary Functions PASSES



P1788,

Motion 10 Elementary Functions PASSES
   Yes - 43; No - 1; Needed for quorum: 36

The motion is listed in the attachment to this message.

George Corliss, P1788 Voting Tabulator


Here are comments received.  I gather them all here for ease of reference,
especially by the Technical Editor, in case these comments can assist
further progress.

------ Forwarded Message
From: Michel Hack <hack@xxxxxxxxxxxxxx>
Date: Wed, 2 Dec 2009 08:30:26 -0600
To: stds-1788 <stds-1788@xxxxxxxxxxxxxxxxx>
Subject: Motion P1788/M0010.22:ElementaryFunctions: YES

I vote YES on Motion 10 version 2.2 -- including the general "pow"
function as amended by Stefan.  (I assume "\exists 0<y \in yy" means
that the exponent yy contains strictly positive points, as "there
exists a 0 less than y \in yy" makes no sense.)



------ Forwarded Message
From: Nate Hayes <nh@xxxxxxxxxxxxxxxxx>
Reply-To: Nate Hayes <nh@xxxxxxxxxxxxxxxxx>
Date: Sat, 5 Dec 2009 12:10:54 -0600
To: stds-1788 <stds-1788@xxxxxxxxxxxxxxxxx>
Subject: Motion P1788/M0010.22: ElementaryFunctions: NO

NO

The value of a general power function for floating-point seems clear to me,
but I am a little skeptical of its value for interval computing. Mostly, the
idea it returns bounds not of a single function but of a family of functions
is a hard pill for me to swallow. If someone could provide practical
examples of why it is required, I would change my vote to YES. Otherwise I
think it should be removed and pow(x,y) given its traditional definition
exp(y*ln(x)); then I would change my vote to YES. I would also vote YES if
rootn(x,n) and powr(x,m,n) were required to complement pown(x,n).

On a separate topic, if there was enough interest in P1788 to require sign,
ceil, floor, nint, and trunc in a separate follow-up motion, I would vote
YES for that, too.

Sincerely,

Nate Hayes



------ Forwarded Message
From: Michel Hack <hack@xxxxxxxxxxxxxx>
Date: Sat, 5 Dec 2009 12:34:31 -0600
To: stds-1788 <stds-1788@xxxxxxxxxxxxxxxxx>
Subject: General pow(xx,yy) function in Motion 10

Nate Hayes voted NO because of the inclusion of that function:
> The value of a general power function for floating-point seems clear
> to me, but I am a little skeptical of its value for interval computing.
> Mostly, the idea it returns bounds not of a single function but of a
> family of functions is a hard pill for me to swallow.

The general pow() function as proposed by Dan Zuras is not a conflation
of the family of rational-exponent functions -- though I agree that it
can be looked at this way, being defined by extending the concept of
completion-by-continuity to a set of values (in this case, two points
of equal magnitude but opposite signs).  The real-positive function
with arbitrary-real exponent traditional pow() function then follows
naturally.

> If someone could provide practical examples of why it is required,
> I would change my vote to YES.

If the argument xx of pow(xx,yy) extends slightly into negative territory
due to earlier outward rounding, the result would also simply extend
slightly into negative territory, instead of having to raise an Undefined
decoration.

I do see an issue however in the case where yy is a singleton, because
that is now an exponent with an even denominator (in both decimal and
binary) if it has a non-zero fractional part.  Dan's reasoning does not
apply to this case, and it would be necessary to raise "Undefined" if xx
contains negative points.

Whether that issue is a problem is a matter of perception.

Michel.

P.S.  Perhaps we should push for a floating-point format with an odd base;
      that would also eliminate all those annoying tie-break situations...



------ Forwarded Message
From: "Hossam A. H. Fahmy" <hfahmy@xxxxxxxxxxxxxxxxxxxxxxx>
Date: Sat, 5 Dec 2009 14:26:26 -0600
To: Michel Hack <hack@xxxxxxxxxxxxxx>
Cc: stds-1788 <stds-1788@xxxxxxxxxxxxxxxxx>
Subject: Re: General pow(xx,yy) function in Motion 10

While explaining the uses of the general pow(xx, yy) Michel Hack said:

> I do see an issue however in the case where yy is a singleton, because
> that is now an exponent with an even denominator (in both decimal and
> binary) if it has a non-zero fractional part.  Dan's reasoning does not
> apply to this case, and it would be necessary to raise "Undefined" if xx
> contains negative points.

Decimal is not similar to binary in this respect. For decimal, if yy is a
singleton of the value 0.12 for example then it has indeed an odd
denominator since 0.12=12/100 = 3/25. The result in this case may be easily
defined for xx with negative points.

Since ten is a composite number, there are many cases where the fraction
given by a decimal significand reduces to one with an odd denominator. The
condition for that is that the numerator has enough powers of two to
eliminate the powers of two in the denominator.

--
Hossam A. H. Fahmy
Assistant Professor
Electronics and Communications Department
Cairo University
Egypt



------ Forwarded Message
From: Michel Hack <hack@xxxxxxxxxxxxxx>
Date: Sat, 5 Dec 2009 15:36:16 -0600
To: stds-1788 <stds-1788@xxxxxxxxxxxxxxxxx>
Subject: Re: General pow(xx,yy) function in Motion 10

Hossam Fahmy caught my blunder:
> > I do see an issue however in the case where yy is a singleton, because
> > that is now an exponent with an even denominator (in both decimal and
> > binary) if it has a non-zero fractional part.
>
> Decimal is not similar to binary in this respect.

Right; I just didn't think straight.  Sorry.

Michel.



------ Forwarded Message
From: Dan Zuras Intervals <intervals08@xxxxxxxxxxxxxx>
Date: Sat, 5 Dec 2009 16:12:08 -0600
To: Michel Hack <hack@xxxxxxxxxxxxxx>
Subject: Re: General pow(xx,yy) function in Motion 10

> Date: Sat, 05 Dec 2009 16:36:16 -0500
> To: stds-1788                           <stds-1788@xxxxxxxxxxxxxxxxx>
> From: Michel Hack                                 <hack@xxxxxxxxxxxxxx>
> Subject: Re: General pow(xx,yy) function in Motion 10
>
> Hossam Fahmy caught my blunder:
> > > I do see an issue however in the case where yy is a singleton, because
> > > that is now an exponent with an even denominator (in both decimal and
> > > binary) if it has a non-zero fractional part.
> >
> > Decimal is not similar to binary in this respect.
>
> Right; I just didn't think straight.  Sorry.
>
> Michel.
> ---Sent: 2009-12-05 21:40:12 UTC

    And, of course, this applies even to binary when yy is a
    singleton integer for the denominator is 1 in that case. :-)

    It is the odd integers that produce the negative results
    in case of xx < 0, the even integers produce positive
    results, & both cases will probably be sent to one of
    the other pow's in any practical implementation.

    But things like this & many others are kind of the idea
    behind a generalized pow, no?

    The pow that covers all cases & contains all solutions.


                Dan


------ Forwarded Message
From: Michel Hack <hack@xxxxxxxxxxxxxx>
Date: Sat, 5 Dec 2009 16:29:52 -0600
To: Dan Zuras <intervals08@xxxxxxxxxxxxxx>
Subject: Re: General pow(xx,yy) function in Motion 10

> > Hossam Fahmy caught my blunder:
>  And, of course, this applies even to binary when yy is a
>  singleton integer for the denominator is 1 in that case. :-)

Dan, my blunder wasn't THAT gross -- I did say "non-zero fractional part"!

Michel.



------ Forwarded Message
From: Nate Hayes <nh@xxxxxxxxxxxxxxxxx>
Date: Sat, 5 Dec 2009 16:59:23 -0600
Subject: Re: General pow(xx,yy) function in Motion 10

Dan Zuras Intervals wrote:
>
> And, of course, this applies even to binary when yy is a
> singleton integer for the denominator is 1 in that case. :-)
>
> It is the odd integers that produce the negative results
> in case of xx < 0, the even integers produce positive
> results, & both cases will probably be sent to one of
> the other pow's in any practical implementation.
>
> But things like this & many others are kind of the idea
> behind a generalized pow, no?
>
> The pow that covers all cases & contains all solutions.
>

In principle, I follow that reasoning.

In practice, a particular scenario I have concern about is this:

If I understand correctly, in a branch-and-bound algorithm when xx is
negative the interval range will not contract even as the domain is
bisected... at least until the domain is bisected to a singleton value
(where it might be undefined). In either case, it is possible this could
lead to stack overflow and system crash.

With careful exception handling, I agree it should be possible to avoid such
an outcome. However, this also requires foresight and planning on behalf of
the unwary interval user. So is it really an improvement over requiring the
user to choose ahead of time between exp(y*ln(x)) vs. powr(x,m,n), etc.?

All else being equal, I suspect many interval users would choose general pow
because they see it as being easy to use. But then be surprised that their
branch-and-bound program crashed.

Nate



------ Forwarded Message
From: Dan Zuras Intervals <intervals08@xxxxxxxxxxxxxx>
Date: Sat, 5 Dec 2009 17:36:17 -0600
To: Nate Hayes <nh@xxxxxxxxxxxxxxxxx>
Subject: Re: General pow(xx,yy) function in Motion 10

> From: "Nate Hayes" <nh@xxxxxxxxxxxxxxxxx>
> To: "stds-1788" <stds-1788@xxxxxxxxxxxxxxxxx>
> Subject: Re: General pow(xx,yy) function in Motion 10
> Date: Sat, 5 Dec 2009 16:59:23 -0600
>
> In principle, I follow that reasoning.
>
> In practice, a particular scenario I have concern about is this:
>
> If I understand correctly, in a branch-and-bound algorithm when xx is
> negative the interval range will not contract even as the domain is
> bisected... at least until the domain is bisected to a singleton value
> (where it might be undefined). In either case, it is possible this could
> lead to stack overflow and system crash.
>
> With careful exception handling, I agree it should be possible to avoid such
> an outcome. However, this also requires foresight and planning on behalf of
> the unwary interval user. So is it really an improvement over requiring the
> user to choose ahead of time between exp(y*ln(x)) vs. powr(x,m,n), etc.?
>
> All else being equal, I suspect many interval users would choose general pow
> because they see it as being easy to use. But then be suprised that their
> branch-and-bound program crashed.
>
> Nate

    On the contrary, the interval returned for pow(xx,yy)
    WILL CONTRACT for each contraction of xx & yy.

    And no crash will occur on a correctly written program.

    It is just that it will not snap to any particular
    manifold (positive or negative) until yy becomes a
    singleton.

    Then there are two possibilities: Either the solution
    you seek is contained within the remaining manifold
    when the exponent becomes a singleton or it does not.

    If it does you will be able to identify it quite
    narrowly in xx as well.  If it does not then the
    singleton is outside the desired solution space.

    But your point is well taken.

    If you know in advance that you seek a solution on a
    particular manifold, then it should be possible to
    track it down by an algorithm that contracts on that
    manifold alone.

    This is why I suggested two auxiliary functions should
    be added to the library.  One for each manifold.
    Such functions would be able to narrowly contract on
    a solution on the desired manifold if it is known
    which manifold you seek.

    As it is too late to amend this motion to include
    those functions, perhaps you can propose them at
    a later date.

    Or I will propose them for you if you like.

    But they do not form a issue as to the merits of this
    motion except in so far as they would make things
    easier to do.


                Dan

    P.S. - BTW, if you CANNOT identify which manifold
    contains the solution you seek than the only pow
    that is guaranteed to contain the desired solution
    is the generalized pow.  In this case, it is a lack
    of information in the problem statement that limits
    your knowledge of the solution, not a lack of skill
    in your technique for finding it.



------ Forwarded Message
From: Nate Hayes <nh@xxxxxxxxxxxxxxxxx>
Reply-To: Nate Hayes <nh@xxxxxxxxxxxxxxxxx>
Date: Sun, 6 Dec 2009 09:18:37 -0600
To: stds-1788 <stds-1788@xxxxxxxxxxxxxxxxx>
Subject: Re: General pow(xx,yy) function in Motion 10

Dan Zuras Intervals wrote:
> On the contrary, the interval returned for pow(xx,yy)
> WILL CONTRACT for each contraction of xx & yy.
>
> And no crash will occur on a correctly written program.
>
> It is just that it will not snap to any particular
> manifold (positive or negative) until yy becomes a
> singleton.
>
> Then there are two possibilities: Either the solution
> you seek is contained within the remaining manifold
> when the exponent becomes a singleton or it does not.
>
> If it does you will be able to identify it quite
> narrowly in xx as well.  If it does not then the
> singleton is outside the desired solution space.
>

Dan, Michel,

Thanks for the clarifications.

Theoretically, I agree an infinite number of bisections in the domain will
contract the range to a point. However, the best that can be done in a
machine is to bisect the domain to a tiny interval with the width of exactly
one ULP. If the endpoints of this tiny interval are large negative numbers,
then the interval range will still be very, very large. In this case, the
branch-and-bound algorithm will request the interval domain should be
further bisected in order to contract the interval range. But this is no
longer possible. So how does the user (or the machine) know which manifold
the solution belongs to?

Nate



------ Forwarded Message
From: Dan Zuras Intervals <intervals08@xxxxxxxxxxxxxx>
Date: Sun, 6 Dec 2009 14:50:03 -0600
To: Nate Hayes <nh@xxxxxxxxxxxxxxxxx>
Subject: Re: General pow(xx,yy) function in Motion 10

> From: "Nate Hayes" <nh@xxxxxxxxxxxxxxxxx>
> To: "stds-1788" <stds-1788@xxxxxxxxxxxxxxxxx>
> Subject: Re: General pow(xx,yy) function in Motion 10
> Date: Sun, 6 Dec 2009 09:18:37 -0600
>
> Dan Zuras Intervals wrote:
> > On the contrary, the interval returned for pow(xx,yy)
> > WILL CONTRACT for each contraction of xx & yy.
> >
> > And no crash will occur on a correctly written program.
> >
> > It is just that it will not snap to any particular
> > manifold (positive or negative) until yy becomes a
> > singleton.
> >
> > Then there are two possibilities: Either the solution
> > you seek is contained within the remaining manifold
> > when the exponent becomes a singleton or it does not.
> >
> > If it does you will be able to identify it quite
> > narrowly in xx as well.  If it does not then the
> > singleton is outside the desired solution space.
> >
>
> Dan, Michel,
>
> Thanks for the clarifications.
>
> Theoretically, I agree an infinite number of bisections in the domain will
> contract the range to a point. However, the best that can be done in a
> machine is to bisect the domain to a tiny interval with the width of exactly
> one ULP. If the endpoints of this tiny interval are large negative numbers,
> then the interval range will still be very, very large. In this case, the
> branch-and-bound algorithm will request the interval domain should be
> further bisected in order to contract the interval range. But this is no
> longer possible. So how does the user (or the machine) know which manifold
> the solution belongs to?
>
> Nate

    Folks,

    To answer Nate's question I will have to drift well
    out of the topic of voting the merits of motion 10.

    I apologise in advance & invite you to ignore my
    remarks.


    Nate,

    Infinitely many bisections are not called for.

    Indeed, you quote me but then edit out that portion
    which contains the answer you seek.

    Let me quote it back to you.

>
>     But your point is well taken.
>
>     If you know in advance that you seek a solution on a
>     particular manifold, then it should be possible to
>     track it down by an algorithm that contracts on that
>     manifold alone.
>
>     This is why I suggested two auxiliary functions should
>     be added to the library.  One for each manifold.
>     Such functions would be able to narrowly contract on
>     a solution on the desired manifold if it is known
>     which manifold you seek.
>
>     As it is too late to amend this motion to include
>     those functions, perhaps you can propose them at
>     a later date.
>
>     Or I will propose them for you if you like.
>
>     But they do not form a issue as to the merits of this
>     motion except in so far as they would make things
>     easier to do.
>
>
>                 Dan
>
>
>     P.S. - BTW, if you CANNOT identify which manifold
>     contains the solution you seek than the only pow
>     that is guaranteed to contain the desired solution
>     is the generalized pow.  In this case, it is a lack
>     of information in the problem statement that limits
>     your knowledge of the solution, not a lack of skill
>     in your technique for finding it.


    There is a third alternative that might work for you.

    Even if you don't know on which manifold the solution
    lies, as soon as you know that negative xx is involved
    you can bifurcate the search along the manifolds rather
    than xx or yy.

    Thus you will be able to find a narrow solution on the
    positive manifold (if it exists) separately from a
    distinct narrow solution on the negative manifold (if
    it exists).  The final solution will be the union of
    the two.

    I suggest that combined solution will be as wide as the
    solution you would have found had you searched through
    the combined space.

    But neither of these things is the problem, really.

    The problem is you are describing a search method that
    seems to rely on roughly bifurcating the range space
    when you bifurcate the domain space.  Further, that
    bifurcation is the preferred method of narrowing the
    search space.

    Neither are always true so a correctly written search
    must not rely on them.

    Indeed, a search method that relies on them will fail
    under far more benign circumstances than those that
    concern us here.

    Take the simplest possible search conditions:  I am
    searching for a solution to f(xx) = cc.  The width of
    cc is rather narrow (or a singleton).  In the relevant
    domain of xx = [a,b], I know that f' is large, positive,
    & fairly constant.

    I think you will agree that these are remarkably benign
    conditions.

    Now, suppose I split xx into two disjoint pieces, xx1,
    & xx2, such that xx = xx1 \union xx2 & xx1 \intersect
    xx2 = [empty].

    Even under these circumstances, I cannot count on f(xx1)
    \intersect f(xx2) = [empty] being true.

    And if cc \intersect f(xx1) \intersect f(xx2) is also
    not empty, I cannot bisect xx in this manner as both
    pieces contain part of the solution space.

    And that's under benign conditions.

    Now imagine things are subtly less benign.  Suppose
    eps is the smallest positive number you can represent.
    Let c = eps^(1/3) (a relative large number).  Suppose
    f(x) = cubeRoot(x).  And that we with to solve the
    problem f(xx) = [-c/2,-c/3].

    The problem statement is no where near any of the
    boundaries of our numerical system.  It is continuous.
    It is monotonic.  Indeed, in the neighborhood of our
    desired solution f' is VERY large & positive.  But it
    is not constant.

    Still, 754 arithmetic is such that, for a correctly
    written cubeRoot, even for a large initial xx = [-1,1],
    you will be able to narrow the domain right down to the
    narrowest possible interval which is [-eps,0].  (This
    is much larger than the actual solution but as narrow
    a solution as can be represented.)

    But in anything more complicated to evaluate than our
    cubeRoot, you can't count on that being true.  Given
    that f' is nearly unbounded in this region, roundoff
    error alone will expand the range of an interval such
    that the boundaries of adjacent intervals will greatly
    overlap when passed through such an f(xx).

    In such a case, bifurcation will fail to narrow the
    solution space as much as is expected & perhaps not
    at all.  Indeed, it might be true that one part of the
    bifurcated interval will map to the same interval as
    the whole, say f(xx2) = f(xx).  Clearly, one cannot
    bifurcate in this case.

    A contractive map might still work well in this case, if
    one exists.  Indeed, it should be able to narrow the width
    of a solution as much as possible (which might not be
    very much).  But it might take much more time, depending
    on the nature of the contractive map.

    In any event, this is a long winded way of saying that:
    (1) the two auxiliary functions I suggested should also
    be part of our library, (2) the problem you are
    describing is shared by many much more benign functions
    & is a problem of the solution method not the library
    function, & (3) neither of them go to the merits of
    motion 10.

    Well, point (1) touches on it but that is easily repaired
    at a later date.

    Is all this reasonable?

    Yours,

                   Dan


------ Forwarded Message
From: George Corliss <George.Corliss@xxxxxxxxxxxxx>
Date: Sun, 6 Dec 2009 20:05:13 -0600
To: Dan Zuras Intervals <intervals08@xxxxxxxxxxxxxx>, Nate Hayes
<nh@xxxxxxxxxxxxxxxxx>
Subject: Re: General pow(xx,yy) function in Motion 10

Dan, Nate, and all,

Do I understand the issue is, "If xx includes negative values, what is the
correct answer?"  If yy is rational with an odd denominator, the answer is
fundamentally different from yy rational with an even denominator?

If I miss the point, please get me back on track.

If that is essentially the issue, I wonder whether it is a question worth
answering at all?  Whenever my engineering colleagues want to irritate me,
they observe that, outside of pure mathematics (implying irrelevance), NO
number is accurate to single precision.  In most applications, we are lucky
to know 3 digits.  By implication, all intervals are thick.

If we accept their "all intervals are thick" assertion, all yy include both
odd and even denominators.  What does that imply about the proper
interpretation?  Of have you told me, but I did not get it?

Dr. George F. Corliss
Electrical & Computer Engineering
Haggerty Engineering #296
Marquette University



------ Forwarded Message
From: Dan Zuras Intervals <intervals08@xxxxxxxxxxxxxx>
Date: Sun, 6 Dec 2009 21:05:06 -0600
To: George Corliss <George.Corliss@xxxxxxxxxxxxx>
Subject: Re: General pow(xx,yy) function in Motion 10

> From: "Corliss, George" <george.corliss@xxxxxxxxxxxxx>
> Subject: Re: General pow(xx,yy) function in Motion 10
>
> Dan, Nate, and all,
>
> Do I understand the issue is, "If xx includes negative values, what is the
> correct answer?"  If yy is rational with an odd denominator, the answer is
> fundamentally different from yy rational with an even denominator?
>
> If I miss the point, please get me back on track.
>
> If that is essentially the issue, I wonder whether it is a question worth
> answering at all?  Whenever my engineering colleagues want to irritate me,
> they observe that, outside of pure mathematics (implying irrelevance), NO
> number is accurate to single precision.  In most applications, we are lucky
> to know 3 digits.  By implication, all intervals are thick.
>
> If we accept their "all intervals are thick" assertion, all yy include both
> odd and even denominators.  What does that imply about the proper
> interpretation?  Of have you told me, but I did not get it?
>
> Dr. George F. Corliss

    No, I believe that Nate's concern is more serious than that.

    You see, when xx is negative & both xx & yy are singletons,
    there are really two 'correct' answers, +/-e^(yy*ln(|xx|)).
    The pow function returns the interval with those endpoints
    in that case.  But the interior contains no answers, just
    the endpoints.

    Now, if either xx or yy is of finite width, the set of
    valid solutions extends inwards from the endpoints
    towards the center of the interval.  Probably still two
    disjoint sets but they eventually do meet up.

    Nate's concern is that any branch & bound method that
    bifurcates one operand will leave one half with a smaller
    interval (that part of the interior) & the other half
    with the entire original interval or very nearly so.

    He is correct, this IS a danger.

    But the danger is in the search method rather than any
    fault of the library function.

    Back when I first proposed this sort of pow I said that
    there should be auxiliary functions, say powPos & posNeg,
    that map to one manifold of the full power function &
    not the other.  In the course of the discussion leading
    up to this motion, those functions were lost.

    Nate is exposing the need for them.

    It is easily fixed with some later motion so I haven't
    given it much thought for now.

    I guess that was a mistake. :-)

    So, a search method that decides to bifurcate along the
    two manifolds of the pow function when it becomes
    necessary is an easy fix.

    There is a more serious problem in such search methods,
    however.  I briefly outlined that problem in my previous
    posting.

    But as it has nothing to do with the merits of motion 10,
    I wanted to limit my discussion of it.

    I see I have failed in that as well. :-)

    Let me just say that, IMHO, none of this has anything to
    do with the merits of motion 10 or pow as the only interval
    function that assures containment.  We should add the
    single manifold functions at some later date but it need
    not form part of our discussion today.

    Well, no more than it has already, that is. :-)

    Again, sorry for the digression, folks.


                Dan


------ Forwarded Message
From: Nate Hayes <nh@xxxxxxxxxxxxxxxxx>
Date: Sun, 6 Dec 2009 21:18:32 -0600
Subject: Re: General pow(xx,yy) function in Motion 10

Corliss, George wrote:
> Dan, Nate, and all,
>
> Do I understand the issue is, "If xx includes negative values, what
> is the correct answer?"  If yy is rational with an odd denominator,
> the answer is fundamentally different from yy rational with an even
> denominator?
>
> If I miss the point, please get me back on track.
>
> If that is essentially the issue, I wonder whether it is a question
> worth answering at all?  Whenever my engineering colleagues want to
> irritate me, they observe that, outside of pure mathematics (implying
> irrelevance), NO number is accurate to single precision.  In most
> applications, we are lucky to know 3 digits.  By implication, all
> intervals are thick.
>
> If we accept their "all intervals are thick" assertion, all yy
> include both odd and even denominators.  What does that imply about
> the proper interpretation?  Of have you told me, but I did not get it?

I don't think its an issue of proper interpretation, e.g., I would also
agree with the idea that "all intervals are thick" for the reasons you
mention.

I also have been and continue to be impressed with Dan's mathematical
prowess on this topic!  :-)

My concern is purely practical.

Interval branch-and-bound algorithms depend on the idea that any bisection
in the domain (xx,yy) of a function pow(xx,yy)=zz will cause the interval
range zz to become more narrow. Theoretically, if xx and yy are bisected
down to a point, then pow(xx,yy)=zz is also a point (nested intervals
theorem) or, perhaps undefined.

Strictly speaking, the general interval power function satisfies this
property (which is a good thing). So please don't confuse that I am
concerned about or criticizing that.

The trouble is that even as the width of xx and yy decreases, the range zz
will not decrease nearly as fast. This is because general power function
must contain both the positive and negative manifolds when xx is negative;
and for large negative values of x the distance between the two manifolds is
quite big. So the width of zz will always be at least this distance.

So very little progress is made narrowing zz for extraordinary amounts of
effort bisecting xx and yy. As Dan mentions, it will not be until yy is
bisected to a singleton value that any significant progress narrowing zz can
occur, since only after yy becomes a singleton do we know which manifold
does the solution belong to. Hence, the width of zz will suddenly shrink by
many, many, many orders of magnitude because it no longer must contain false
solution values from the other manifold.

BUT THE PROBLEM is that in finite precision, it will never be possible to
bisect yy into a singleton. At the very best, BOTH xx and yy will always be
an interval of at least 1 ULP (assuming the user input non-singleton
values). This means the width of zz will still be many, many, many orders of
magnitude larger than 1 ULP because it must contain possible solutions on
both manifolds.

Compare this to the other required library routines in motion 10 when the
input intervals are only 1 ULP wide: the interval range will usually be only
a few ULPS, too.

Now, it is usually not the case that an interval branch-and-bound algorithm
should ever need to bisect the input domain down to 1 ULP intervals. This is
because, as George mentions, "intervals are thick." In other words, users
typically only need to contain a few decimal digits in the tolerance of
their answers.

With all the library functions in motion 10 *except* general power, a
plain-vanilla branch-and-bound algorithm (the kind I suspect a student would
write in an introductory interval course) will easily terminate long before
bisecting the interval domains down to 1 ULP.

With the general power function, however, the width of the interval range zz
will always be at least the distance between the two manifolds for any
negative xx. This distance is quite large and will most likely be much
larger than the user's tolerance criteria for the branch and bound
algorithm. If there is no exception handling, the branch-and-bound algorithm
will get stuck in an infinite loop and crash. If exception handling is used
to prevent the stack-overflow, there still is no way for the user (or
machine) to know what the solution is.

So this is what I'm trying to understand about the general interval power
function: if no finite amount of bisection effort in the input domain will
identify which manifold the solution belongs to, what use is it?

I hope I am adding clarity to the discussion, not confusion.

Sincerely,

Nate


------ Forwarded Message
From: Arnold Neumaier <Arnold.Neumaier@xxxxxxxxxxxx>
Date: Mon, 7 Dec 2009 07:49:00 -0600
Subject: Re: General pow(xx,yy) function in Motion 10

Arnold Neumaier wrote:
> Michel Hack wrote:
>> George Corliss wrote:
>>> In most applications, we are lucky to know 3 digits.
>>> By implication, all intervals are thick.
>>
>> ALL non-degenerate intervals are "thick" as far as pow(xx,yy)
>> is concerned, REGARDLESS of precision.  Only singletons can
>> be rational (and, indeed, are).  That is because (per Motion 3)
>> intervals are *real* intervals and are presumed to contain all
>> reals between the bounds, not just floating-point numbers.
>> Even a 1-ulp interval is "thick".
>>
>> That's why there really are only two choices for a pow(xx,yy)
>> with two interval arguments:  exclude negative values from xx,
>> or compute the proper interval hull.  What Dan observed was that
>> this hull can be defined unambiguously, because it is the union
>> of only two arbitrarily-narrow intervals for any narrow source
>> intervals where xx contains negative points.
>>
>> The other way around this quandary uses families of single-argument
>> pow_r(xx) interval functions, parameterized by a rational exponent 'r'
>> that is exact -- whether a floating-point number or, more transparently,
>> a pair of integers.  For convenience we might also have pow_n() and
>> root_n() families, where the rational parameter has either a
>> denominator of 1 or a numerator of 1 (and 'n' is an integer).
>>
>> We may of course have both, giving the programmer a choice of approach.
>> Motion 10 makes pow(xx,yy) mandatory and recommends the parametrized
>> families.
>
> I think that efficiency in the applications requires both the integral
> powers and the nonnegative real powers, whereas the most general power
> (with exponent intervals allowed for negative arguments) will have
> very little use. The reason is that the user usually knows whether the
> exponent is an exact integer (or rational) or can range in some region,
> and the latter case usually makes sense only if the argument is
> nonnegative.
>
> The only exception is in nonlinear integer programming, where it is
> conceivable that one has intervals for integers acting as exponents.
>
>
> Thus I recommend making integral powers and nonnegative real powers
> mandatory, and the most general power and the rational power optional.
>
>
> Arnold Neumaier



------ Forwarded Message
From: Arnold Neumaier <Arnold.Neumaier@xxxxxxxxxxxx>
Date: Mon, 7 Dec 2009 07:50:41 -0600
To: Michel Hack <hack@xxxxxxxxxxxxxx>, 1788 <stds-1788@xxxxxxxxxxxxxxxxx>
Subject: Re: General pow(xx,yy) function in Motion 10

Michel Hack wrote:
>> The only exception is in nonlinear integer programming, where it is
>> conceivable that one has intervals for integers acting as exponents.
>
> Yes -- but such an exponent range is not an interval, because it is
> strictly a set of integers and does not include the real numbers in
> between.  So using intervals to represent it during an exploratory
> part of an algorithm requires to programmer to keep this in mind, and
> correct for the consequences, as the usual Interval Theorems don't
> apply anymore.

This is always done in mixed integer nonlinear programming using branch
and bound techniques. One accounts for integrality by splitting at half
an integer and rounding the two new bounds to the next integer.
This is enough to make everything work correctly, as far as pruning
regions is concerned. Of course, existence statements beyond that (such
as Brouwer's fixed-point theorem) needed only for computer-assisted
proofs) need to fix integers when integrality constraints are present,
before they apply.


> Suppose for some reason the function 1/cospi(x) is involved over a
> range that only includes integers.  It's "interval" hull would then
> be [-1,+1] (but would in fact only contain the endpoints), when the
> true interval hull would be Entire.
>
> This is why I'm also wary of interval functions like sign, ceil etc.,
> because their range is by definition a set of isolated integral points.

Lots of application optimization problems written by inexperienced
users into excel sheets have discontinuities.

Thus one really needs interval extensions of discontinuous functions.
Of course, we need them together with the exception information in
case a discontinuity is possibly inside the interval (to avoid
claiming existence when only covering information is valid).

This is one of the reason why the decoration for continuity is important.



------ Forwarded Message
From: Ralph Baker Kearfott <rbk@xxxxxxxxxxxx>
Reply-To: "rbk@xxxxxxxxxxxxx" <rbk@xxxxxxxxxxxxx>
Date: Mon, 7 Dec 2009 08:58:22 -0600
To: George Corliss <George.Corliss@xxxxxxxxxxxxx>
Cc: Dan Zuras Intervals <intervals08@xxxxxxxxxxxxxx>, Nate Hayes
<nh@xxxxxxxxxxxxxxxxx>, "stds-1788@xxxxxxxxxxxxxxxxx"
<stds-1788@xxxxxxxxxxxxxxxxx>
Subject: Re: General pow(xx,yy) function in Motion 10

I had been wondering the same thing.  That is, under what
circumstances will someone actually want to compute a rational
power of a negative number?

Baker



------ Forwarded Message
From: Nate Hayes <nh@xxxxxxxxxxxxxxxxx>
Date: Mon, 7 Dec 2009 09:22:52 -0600
Subject: Re: General pow(xx,yy) function in Motion 10

Michel Hack wrote:
> Nate Hayes wrote:
>> With the general power function, however, the width of the interval
>> range
>> zz will always be at least the distance between the two manifolds
>> for any negative xx.  This distance is quite large and will most
>> likely be much larger than the user's tolerance criteria for the
>> branch and bound algorithm.
>
> What would be the meaning of an interval xx that includes relatively
> large negative values, when raised to an uncertain real exponent?

I don't really think it makes sense, either. It's another reason that I'm
skeptical of the general power function; and why I was hoping someone could
provide an example of why it is required.

Since it was listed as required in Motion 10, I was assuming some of our
experts in the forum saw this as being important. I was just looking at the
consequences of what happens when you put it into a branch-and-bound
algorithm. That's all.

Personally, I like Arnold's suggestions:

> Thus I recommend making integral powers and nonnegative real powers
> mandatory, and the most general power and the rational power optional.

Nate



------ Forwarded Message
From: George Corliss <George.Corliss@xxxxxxxxxxxxx>
Date: Mon, 7 Dec 2009 09:48:36 -0600
To: stds-1788 <stds-1788@xxxxxxxxxxxxxxxxx>
Subject: Motion P1788/M0010.22: ElementaryFunctions: YES

I vote YES on Motion 10.

Listening to the on-going discussion about pow(xx,yy), it is
clear that it (and related possibilities) need more detailed
Consideration.  However, rather than voting NO, I choose to
vote YES and assume that the pow(xx,yy) questions will be
refined later.

Dr. George F. Corliss



------ Forwarded Message
From: Michel Hack <hack@xxxxxxxxxxxxxx>
Date: Mon, 7 Dec 2009 10:38:24 -0600
To: stds-1788 <stds-1788@xxxxxxxxxxxxxxxxx>
Subject: Re: General pow(xx,yy) function in Motion 10

George Corliss wrote:
> In most applications, we are lucky to know 3 digits.
> By implication, all intervals are thick.

ALL non-degenerate intervals are "thick" as far as pow(xx,yy)
is concerned, REGARDLESS of precision.  Only singletons can
be rational (and, indeed, are).  That is because (per Motion 3)
intervals are *real* intervals and are presumed to contain all
reals between the bounds, not just floating-point numbers.
Even a 1-ulp interval is "thick".

That's why there really are only two choices for a pow(xx,yy)
with two interval arguments:  exclude negative values from xx,
or compute the proper interval hull.  What Dan observed was that
this hull can be defined unambiguously, because it is the union
of only two arbitrarily-narrow intervals for any narrow source
intervals where xx contains negative points.

The other way around this quandary uses families of single-argument
pow_r(xx) interval functions, parameterized by a rational exponent 'r'
that is exact -- whether a floating-point number or, more transparently,
a pair of integers.  For convenience we might also have pow_n() and
root_n() families, where the rational parameter has either a
denominator of 1 or a numerator of 1 (and 'n' is an integer).

We may of course have both, giving the programmer a choice of approach.
Motion 10 makes pow(xx,yy) mandatory and recommends the parametrized
families.

Michel.



------ Forwarded Message
From: Michel Hack <hack@xxxxxxxxxxxxxx>
Date: Mon, 7 Dec 2009 12:02:20 -0600
Subject: Re: General pow(xx,yy) function in Motion 10

Nate Hayes wrote:
> With the general power function, however, the width of the interval range
> zz will always be at least the distance between the two manifolds for any
> negative xx.  This distance is quite large and will most likely be much
> larger than the user's tolerance criteria for the branch and bound algorithm.

What would be the meaning of an interval xx that includes relatively
large negative values, when raised to an uncertain real exponent?

It seems to me that the only sensible cases are those where xx is
essentially
positive, but may include *small* (close to zero) negative values because of
earlier outward rounding, and we want to be able to continue computing with
this.  Dan's pow(xx,yy) is the right tool for those cases.

(By "small" I mean that abs(xx.lo) is of the order of a few ulps of xx.hi)

Michel.



------ Forwarded Message
From: Ralph Baker Kearfott <rbk@xxxxxxxxxxxx>
Date: Mon, 7 Dec 2009 15:42:10 -0600
Subject: Motion P1788/M0010.22: Elementary Functions: YES

My vote is also "yes," with the same reasoning as George.
If I strongly dislike the power function as it appears
in the draft standard, I can vote against that paragraph
when it comes up for a final vote.

Baker



------ Forwarded Message
From: John Pryce <j.d.pryce@xxxxxxxxxxxx>
Date: Tue, 8 Dec 2009 08:53:08 -0600
To: stds-1788 <stds-1788@xxxxxxxxxxxxxxxxx>
Subject: Motion P1788/M0010.22: Elementary Functions: YES

P1788

I vote YES on this for the same reasons and with similar reservations as
George and Baker. That is, don't rock the boat now, but rock it later.

I agree with everything in Motion 10.22 except the general pow(xx,yy).

- I find Nate's criticisms of pow() pretty convincing.

- Also, I am wondering what is the use of a pow(xx,yy) that, as far as
singleton yy = [y,y] is concerned, understands only those rational y that
can be expressed exactly in either base 2 or base 10? This puzzled me some
weeks back when Prof Fahmy was arguning in favour of this function.

- But I have a more serious criticism of pow(), as it is presented by
Juergen. He says in the rationale "it is not an extension of any point
function" or similar words. But it has to (in standardese, "shall") be. The
reason is that P1788 believes in the Fundamental Theorem of Interval
Arithmetic (FTIA) at least we voted for it in Motion 6.

The FTIA relates the result of evaluating the interval version of an
expression E, to the range of the point function f defined by E. If any of
the interval library functions used in the interval version fails to be "an
extension of any point function", then f does not exist!

Actually, Juergen's assertion is false. Any interval mapping whatever is an
interval extension of a point function, namely the function that is
everywhere undefined, i.e. has empty domain. Of course that is useless
because if that occurs anywhere in the (point version of) E, then the
resulting f is also everywhere undefined.

So the question is whether interval_pow() as Juergen defines it is an
interval extension of some "useful" point_pow(). I haven't checked, but
suspect that it is an extension of
 f(x,y) = {usual x^y for x>0, any y
          {0         for x=0, y>0 (unique limiting value)
          {0         for x=y=0 (arbitrary choice)
          {rational power x^(p/q)
          {          for those rational y = p/q for which this makes sense
          {undefined otherwise, including for x=0, y<0.

Could someone check?

There is always a "maximal" (not necessarily unique) point function g of
which a given interval mapping gg is an extension, _provided_ gg is
isotonic. Namely, let
  g(z) := ( an arbitrary point in gg([z,z]) ) whenever gg([z,z]) is
nonempty;
          undefined                           elsewhere.
So I am guessing that for Juergen's pow(), this construction yields the
unique f I described above.

In any case, for the sake of the FTIA, ALL our elementary functions should
start from the definition of the point function, and then the interval
version, at least theoretically, should be the _sharp_ interval extension of
that. IMO.

That's my boat-rocking £0.02.

John



------ Forwarded Message
From: Van Snyder <Van.Snyder@xxxxxxxxxxxx>
Reply-To: "Van.Snyder@xxxxxxxxxxxx" <Van.Snyder@xxxxxxxxxxxx>
Date: Thu, 17 Dec 2009 14:41:54 -0600
To: George Corliss <George.Corliss@xxxxxxxxxxxxx>
Subject: Re: Motion P1788/M0010.20:ElementaryFunctions: PLEASE VOTE

George:

Register a "yes" ballot for me with the additional comment:

"The function exp(x^2) erfc(x) should be amongst the optional functions.
It appears frequently in statistical calculations.  In single-precision
IEEE 754 arithmetic, erfc(x) underflows for x > ~9, while exp(x)
overflows at about the same value.  exp(x^2) erfc(x) is asymptotic to
1/(x \sqrt\pi) so it doesn't overflow, and it doesn't underflow until x
> huge(x)/\sqrt\pi."

Van Snyder



------ Forwarded Message
From: Guillaume Melquiond <guillaume.melquiond@xxxxxxxx>
Date: Mon, 21 Dec 2009 08:36:15 -0600
To: "stds-1788@xxxxxxxx" <stds-1788@xxxxxxxx>
Subject: Motion P1788/M0010.22: ElementaryFunctions: YES

I vote YES for Motion 10.

Note: I'm unconvinced by the definitions of pow and atan2 though, but
this is better left for later.

Best regards,

Guillaume



Begin forwarded message:

From: Vincent Lefevre <vincent@xxxxxxxxxx>
Date: December 23, 2009 8:02:55 PM CST
To: "stds-1788@xxxxxxxx" <stds-1788@xxxxxxxx>
Subject: Motion P1788/M0010.22: ElementaryFunctions: YES

Motion P1788/M0010.22: ElementaryFunctions:  My vote is YES

I haven't had the time to read the discussion yet, but here are
a few comments:

* General Power Function:

It is said: "If p is odd the result is negative otherwise positive."
but in the interval version, both the negative value and the positive
value are included. This is really strange (a simplification?), at
least in the case of a point interval, and I think that there should
be some comment about it.

2 missing closing parentheses in the case x < 0.

The non-standard notation "\exists 0 < y \in \mathbf{y}" is difficult
to parse and should be rewritten: \exists y \in \mathbf{y},\ y > 0

* Page 3, atanh

The rough domain is (-1,1), not [-1,1]. And II[-1,1] needs to be
changed into II(-1,1).

* Page 4, atanPi and atan2Pi

The range is incorrect. It should be (-1/2,1/2) for atanPi, and
AFAIK, (-1,1] for atan2Pi.

* Page 4, gamma and lgamma

The domain should exclude the non-positive integers.

--
Vincent Lefèvre <vincent@xxxxxxxxxx> - Web: <http://www.vinc17.net/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.net/blog/>
Work: CR INRIA - computer arithmetic / Arénaire project (LIP, ENS-Lyon)



Begin forwarded message:

From: Dan Zuras Intervals <intervals08@xxxxxxxxxxxxxx>
Date: December 23, 2009 10:55:38 PM CST
Subject: Re: Motion P1788/M0010.22: ElementaryFunctions: YES

Date: Thu, 24 Dec 2009 03:02:55 +0100
From: Vincent Lefevre <vincent@xxxxxxxxxx>
Subject: Motion P1788/M0010.22: ElementaryFunctions: YES

Motion P1788/M0010.22: ElementaryFunctions:  My vote is YES

I haven't had the time to read the discussion yet, but here are
a few comments:

. . .

* Page 4, gamma and lgamma

The domain should exclude the non-positive integers.

--
Vincent Lefèvre <vincent@xxxxxxxxxx> - Web: <http://www.vinc17.net/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.net/blog/>
Work: CR INRIA - computer arithmetic / Arénaire project (LIP, ENS-Lyon)

    I believe Vincent only means to exclude
    those integers from the domain of lgamma,
    not gamma (where they are zero).  - Dan

Attachment: motion10-functionsv22.pdf
Description: motion10-functionsv22.pdf