openoffice-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Joe Schaefer <>
Subject Re: Calc behavior: result of 0 ^ 0
Date Thu, 14 Feb 2013 00:55:09 GMT
FWIW I refreshed my memory about how
to compute polynomials numerically by
looking back at my old copy of Numerical
Recipes in C and it's always considered
bad form to evaluate the terms individually,
especially not by using the POWER function to
do it.  Most of the time you want to
compute p = c[0] x^0 + ... + c[n] x^n by doing

p = c[j=n];
while (j > 0)
    p = p*x + c[--j];

which does the right thing and pulls out
c[0] when x=0.  Obviously there are overflow
issues to deal with for large degree polynomials
and large values of x, but you get the idea.

The book also contains methods for dealing
with infinite power series as well, but I
think the key observation is that you want
polynomials with integer coefficients to
evaluate to an exact integer when dealing
with integer values of x.  If POWER(n,m) is
always guaranteed to do that, then I can
see why you'd use that in your spreadsheet
app, even if it isn't what a numerical analyst
would recommend off the top of her head.

IOW what I'm saying is that the choice to
use POWER() in evaluating polynomials and
infinite series in spreadsheets is a CHOICE,
the fact that x^0 = 1 for all values of x
doesn't have to weigh in to your deliberations
about what the right value is for POWER(0,0)
unless you insist in supporting the evaluation
of polynomialexpressions using the POWER

> From: Joe Schaefer <>
>To: "" <> 
>Sent: Wednesday, February 13, 2013 12:43 PM
>Subject: Re: Calc behavior: result of 0 ^ 0
>I think the days of fruitful debate
>about this topic are well past us now.
>What this issue needs at this point
>is a decision one way or the other.
>There are several ways of doing that
>according to the general voting policies
>at Apache: exercising those procedures
>should not be viewed as "blunt instruments"
>but rather time-honored methods of obtaining
>clarity on what amounts to a perfect bikeshed
>issue where the spec provides no clear guidance
>one way or the other.
>> From: Rob Weir <>
>>Sent: Wednesday, February 13, 2013 12:30 PM
>>Subject: Re: Calc behavior: result of 0 ^ 0
>>On Wed, Feb 13, 2013 at 11:56 AM, Joe Schaefer <> wrote:
>>> OTOH I haven't seen anyone issue a technical
>>> veto on this change, which is really what's
>>> required before Pedro actually needs to revert
>>> anything.
>>I was waiting to see if there were any persuasive arguments in favor
>>of breaking backwards compatibility before deciding whether to do
>>that.  I think things are getting a little clearer now with Norbert's
>>contribution to the discussion.  But if (as it seems now) that
>>"mathematical correctness" does not justify the change, then my
>>position would be that we don't break backwards compatibility.
>>Also, a veto would be a blunt instrument and I'd rather avoid it if
>>further discussion leads to a
>>>> From: Joe Schaefer <>
>>>>To: "" <>; Pedro Giffuni
>>>>Sent: Wednesday, February 13, 2013 10:53 AM
>>>>Subject: Re: Calc behavior: result of 0 ^ 0
>>>>Honestly I'd say that if anything is clear,
>>>>it's that changing away from the status quo
>>>>currently enjoys zero consensus.
>>>>As a Ph.D. mathematician who knows about
>>>>all I can say is that line of argument is curious
>>>>here.  There are no authorities other than the spec
>>>>to turn to about how you want POWER(0,0) to behave-
>>>>as a function of 2 variables returning an error is
>>>>probably best mathematically because the POWER
>>>>function isn't remotely continuous at (0,0), but as
>>>>part of an implementation of power series
>>>>representations of sums involving 0^0, returning 1
>>>>is better.
>>>>In any case, the idea for how issues like this should
>>>>be resolved at Apache is always in favor of stability;
>>>>that's why the impetus for consensus away from the current
>>>>behavior is required, not a general discussion about
>>>>which behavior is better given two equal choices
>>>>in the abstract.  A prior decision has already been
>>>>about the code, and those that wish to change it need
>>>>to demonstrate consensus for the change, not the other
>>>>way around.
>>>>> From: RGB ES <>
>>>>>To:; Pedro Giffuni <>
>>>>>Sent: Wednesday, February 13, 2013 10:43 AM
>>>>>Subject: Re: Calc behavior: result of 0 ^ 0
>>>>>Not answering any particular message, so top posting.
>>>>>Two points:
>>>>>a) Of
 course you can always redefine a function to "fill holes" on non
>>>>>defined points: for example, redefining sinc(x) = sin(x)/x to be 1 on
>>>>>makes sense because you obtain a continuous function... but that's on
>>>>>variable: when you go to two variables things become more difficult. In
>>>>>fact, the limit for x^y with x *and* y tending to zero do NOT exists
>>>>>(choose a different path and you'll get a different limit), then there
>>>>>NO way to make that function continuous on (0,0), let alone what happens
>>>>>when x < 0... so the real question is: does it make sense to "fill
>>>>>hole" on x^y? *My* answer (and that leads to the second point) is no
>>>>>because it do not give any added value.
>>>>>b) Considering that we are near to 90 messages on this thread it is quite
>>>>>clear that an agreement is not
 possible. On this situation it is also clear
>>>  choosing an error instead of a fixed value is the best bet.
>>>>>Just my 2¢
>>>>>2013/2/13 Pedro Giffuni <>
>>>>>> Hello;
>>>>>> >
>>>>>> > Da: Norbert Thiebaud
>>>>>> ...
>>>>>> >On Tue, Feb 12, 2013 at 10:09 PM, Rob Weir <>
>>>>>> >> On Feb 12, 2013, at 10:39 PM, Pedro Giffuni <>
>>>>>> >>
 >>> (OK, I guess it's better to re-subscribe to the list).
>>>>>> >>>
>>>>>> >>> In reply to Norbert Thiebaud*:
>>>>>> >>>
>>>>>> >>> In the Power rule, which *is* commonly used for differentiation,
>>>>>> take a series
>>>>>> >>> of
>>>  polinomials where n !=0. n is not only different than zero, most
>>>>>> importantly,
>>>>>> >>> it is a constant.
>>>>>> >
>>>>>> >Power Rule : d/dx x^n = n.x^(n-1)  for n != 0  indeed.
>>>>>> >so for n=1  (which _is_ different of 0 !)
>>>>>> >d/dx X = 1.x^0
>>>>>> >for _all_ x. including x=0. (last I check f(x) = x is differentiable
in 0.
>>>>>> >
>>>>>> >I know math can be challenging... but you don't get to
>>>>>> >restriction on the Power Rule just to fit you argument.
>>>>>> >
>>>>>> I will put it in simple terms. You are saying that you can't calculate
>>>>>> slope of the equation:
>>>>>> y =a*x + b
>>>>>> because in the process you need to calculate the value of x^0.
>>>>>> >>>
>>>>>> >>> In the case of the set theory book, do note that the
author is
>>>>>> constructing
>>>>>> >>> his own
>>>  algebra,
>>>>>> >
>>>>>> >The fact that you call 'Nicola Bourbaki' 'the author', is in
>>>>>> >very telling about your expertise in Math.
>>>>>> >I nicely put a link to the wikipedia page, since
 laymen are indeed
>>>>>> >unlikely to know 'who' Borbaki is.
>>>>>> >
>>>>>> Do I really care if the name of the author is fictitious or real?
>>>>>> >>> that get outside his set: 0^0 and x/0 are such cases.
The text is not
>>>>>> >>> a demonstration, it is simply a statement taken out
of context.
>>>>>> >
>>>>>> >You ask for a practical spreadsheet example, when one is given
>>>>>> >invent new 'rules' to ignore' it.
>>>>>> You haven't provided so far that practical spreadsheet.
>>>>>> >You claim that 'real mathematician' consider 0^0=... NaN ? Error
>>>>>> >And when I gave you the page and line from one of the most rigorous
>>>>>> >mathematical
>>>  body of work of
 the 20th century (yep Bourbaki... look it
>>>>>> >up)
>>>>>> >you and hand-wave, pretending the author did not mean it.. or
>>>>>> >better " if this author(sic) *is* using mathematics correctly."
>>>>>> >
>>>>>> The thing is that you are taking statements out of context. I don't
>>>>>> claim being a mathematithian. I took a few courses from the career
>>>>>> fun.
>>>>>> In the case of set theory you can define, for your own purposes,
a special
>>>>>> algebra where:
>>>>>> - You redefine your own multiplication operator (x).
>>>>>> - You don't define division.
>>>>>> - You make yor algebra system fit into a set of properties that
>>>>>> is useful for your own
>>>>>> Once you define your own multiplication (which is not the same
>>>>>> multiplication supported in a spreadsheet) You work around the
>>>>>> issue in the power operator by defining the undefined
>>>  case.
>>>>>> These are all nice mathematical models that don't apply to a spreadsheet.
>>>>>> >>>
>>>>>> >>> I guess looking hard it may be possible to find an elaborated
>>>>>> where
>>>>>> >>> someone manages to shoot himself in the foot
>>>>>> >
>>>>>> >Sure, Leonard Euler, who introduced 0^0 = 1 circa 1740, was notorious
>>>>>> >for shooting himself in the foot when doing math...
>>>>>> >
>>>>>> >For those interested in the actual Math... in Math words
 have meaning
>>>>>> >and that meaning have often context. let me develop a bit the
>>>>>> >of 'form' mentioned earlier:
>>>>>> >for instance in the expression 'in an indeterminate form', there
>>>>>> >'form' and it matter because in the context of determining extension
>>>>>> >by continuity of a function, there are certain case where you
>>>>>> >transform you equation into another 'form' but
>>>  if these transformation
>>>>>> >lead you to an 'indeterminate form', you have to find another
>>>>>> >transformation to continue...
>>>>>> >hence h = f^g  with f(x)->0 x->inf and g(x)->0 x->inf 
then -- once it
>>>>>> >is establish that h actually converge in the operating set, and
>>>>>> >is another topic altogether -- lim h(x) x->0 =
 (lim f)^(lim g).
>>>>>> >passing 'to the limit' in each term would yield 0^0 with is a
>>>>>> >indeterminable 'form' (not a value, not a number, not claimed
to be
>>>>>> >the result of a calculation of power(0,0), but a 'form' of the
>>>>>> >equation that is indeterminate...) at which point you cannot
>>>>>> >what the limit is. What a mathematician is to do is to 'trans-form'
>>>>>> >the original h in such a way that it lead him to a path to an
>>>>>> >value.
>>>>>> >
>>>>>> >in other words that is a very specific
>>>  meaning for a very specific
>>>>>> >subset of mathematics, that does not conflict with defining power(0,0)
>>>>>> >= 1.
>>>>>> >
>>>>>> >
>>>>>> >wrt to the 'context' of the quote I gave
>>>>>> >
>>>>>> >"Proposition 9: : Let X and Y be two sets, a and b their respective
>>>>>> >cardinals, then the set X{superscript Y} has cardinal a {superscript
>>>>>> >b}. "
>>>>>> >
>>>>>> >( I will use x^y here from now on to note x {superscript y} for
>>>>>> readability )
>>>>>> >
>>>>>> >"Porposition 11: Let a be a cardinal. then a^0 = 1, a^1 = a,
1^a = 1;
>>>>>> >and 0^a = 0 if a != 0
>>>>>> >
>>>>>> >For there exist a unique mapping of 'empty-set' into any given
>>>>>> >(namely, the mapping whose graph is the empty set); the set of
>>>>>> >mappings of a set consisting of a single element into an arbitrary
>>>>>> >X is equipotent to X (Chapter II, pragraph 5.3); there
>>>  exist a
>>>>>> >mapping of an arbitrary set into a set consisting of a single
>>>>>> >and finally there is not mapping of a non-empty set into the
>>>>>> >empty-set;
>>>>>> >* Note in particular that 0^0 = 1
>>>>>> >"
>>>>>> Again, I will stand to what I said: this statement is not a demonstration
>>>>>> and is taken out of context. The definition is given to conform with
>>>>>> "unique mapping" which unfortunately doesn't exist in the real world.
>>>>>> >
>>>>>> >Here is the full context of the quote. And if you think you have
>>>>>> >proof that there is a mathematical error there, by all means,
rush to
>>>>>> >your local university, as surely proving that half-way to the
 >volume, on set theory, of a body of work that is acclaimed for it's
>>>>>> >rigor and aim at grounding the entire field of mathematics soundly
>>>>>> >the rigor of set
>>>  theory, there is an 'error', will surely promptly get
>>>>>> >you a PhD in math... since that has escaped the attentive scrutiny
>>>>>> >peer review of the entire world of mathematicians for decades...
>>>>>> >
>>>>>> I lost contact with my teacher, indeed quite an authority, but for
>>>>>> reason he disliked computer math to the extreme anyways.
>>>>>> Pedro.
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message