https://issues.apache.org/ooo/show_bug.cgi?id=114430

--- Comment #30 from orcmid <[email protected]> ---
(In reply to comment #27)
[ ... ]
> - A proposed formulation for a sentence to put in the Release Notes for 4.0

Rob has created a breaking changes topic on the AOO 4.0 Release Notes at
https://cwiki.apache.org/confluence/display/OOOUSERS/AOO+4.0+Release+Notes

I have added the proposed POWER(0,0) = #VALUE! change under that topic (far
down the page).

Here is the mathematical explanation.  It is different than the Computer
Scientist explanation.

 1. Having a defined value.  There are those who argue that POWER(0,0) should
have a defined value because computer algorithms need those [although this is
no longer true for common floating-point arithmetic, where there are defined
undefined values such as NaN, +Infinity, -Infinity, etc].  The
quasi-mathematical argument for 1 involves reasoning about limits of ratios
(although there is no way for POWER(a,b) to determine that there are ratios and
any convergent series involved.  There is another argument based on the
binomial theorem (one that Donald Knuth has told me he finds persuasive)
although it is clear that Newton simply didn't consider the (a+b)^n case for
a+b = 0 and n=0, it probably not being of any practical concern.  But having
x^0 always be one does simplify certain inductive/recursive definitions.  I
find the damage done to the axioms of arithmetic too perplexing.

 2. Having an undefined value (i.e., making it an error, such as #VALUE!. 
There is no question that 0^0 is not defined in the standard model for real
arithmetic.  That is because division by 0 is already undefined in the standard
model of arithmetic.  These days computer arithmetics often have a distinct
error value for divisions by 0, such as +infinity, but there is no pretense
that this is an actual numeric result -- doing so requires a serious
non-standard arithmetic.  Some also recognize that 0/0 is different (since it
is difficult to argue that the result is best expressed as an infinity), and
the result NaN (Not a Number) is appropriate for this case.

Why is that?  Well, if one is going to give 0^0 a definite value, then it is
expected that one preserves the law of exponents.  If that is the case, it will
follow that 0^0 = 0^(n-n) where n is not 0.  But 0^(n-n) = 0^n/0^n = 0/0 and
there we are.

As I mentioned in an earlier comment, I once (Febuary 1986) published a
PowerN(a,i) algorithm in Dr. Dobbs where I finessed this case by actually
returning PowerN(0.0,0) as 0.0/0.0.  I left it to the implementation of
computer arithmetic to sort it out.  (This was earlier than there are digital
archives of Dr.Dobbs articles.  I must scan this in someday.  Fortunately, I
retained the copyright.)

-- 
You are receiving this mail because:
You are on the CC list for the bug.

Reply via email to