>     On the one hand, as said above, there is no way of defining 0^0
>     using continuity, but on the other hand, many important properties
>     remain satisfied if we choose 0^0 = 1 (which is frequently
>     adopted, as a convention, by mathematicians). Kahan suggests to
>     choose 0^0 = 1. [...]

The problem is x^0.0 (real exponent), not x^0 (integer exponent).
0^0 (integer exponent) *can* be defined by continuity, the value is 1.
The fact that it is defined by continuity is exactly the reason 0^0=1
is useful in contexts where the exponent is an integer (polynomials
etc): the special case 0^0 acts the same as the general case x^0,
since it is the limiting value of it.  In my experience, defining 0^0.0
(real exponent) to be 1.0 is much less useful.  Now in practice I can
imagine that a language confuses x^integer and x^real by mapping them
to the same function, or only provides a function for doing x^real.
Perhaps this is the case with C?  If so, then having 0^0.0 return 1.0
is a convenient hack to work around that mistake.  On the other hand,
ignoring such things as language standards and the weight of history,
if there are separate functions for x^integer and x^real, then in my
opinion the most sensible thing would be for 0^0 to return 1, and
0^0.0 to return NaN.  This might confuse programmers though.

All the best,

Duncan.

Reply via email to