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.
