Why 0 ** 0 equals 1 in python

Wikipedia has interesting coverage of the history and the differing points of view on the value of 0 ** 0:

The debate has been going on at least since the early 19th century. At that time, most mathematicians agreed that 0 ** 0 = 1, until in 1821 Cauchy listed 0 ** 0 along with expressions like 0⁄0 in a table of undefined forms. In the 1830s Libri published an unconvincing argument for 0 ** 0 = 1, and Möbius sided with him...

As applied to computers, IEEE 754 recommends several functions for computing a power. It defines pow(0, 0) and pown(0, 0) as returning 1, and powr(0, 0) as returning NaN.

Most programming languages follow the convention that 0 ** 0 == 1. Python is no exception, both for integer and floating-point arguments.


consider x^x:

Using limits we can easily get to our solution and rearranging x^x we get :

x^x= exp(log(x^x))

Now , we have from:

lim x->0 exp(log(x^x))= exp(lim x->0 xlog(x)) = exp(lim x->0 log(x)/(x^-1))

Applying L'Hôpital rule , we get :

exp(lim x^-1/(-x^-2)) = exp(lim x->0 -x) = exp(0) = 1=x^x

But according to Wolfram Alpha 0**0 is indeterminate and following explanations were obtained by them :

0^0 itself is undefined. The lack of a well-defined meaning for this quantity follows from the mutually contradictory facts that a^0 is always 1, so 0^0 should equal 1, but 0^a is always 0 (for a>0), so 0^0 should equal 0. It could be argued that 0^0=1 is a natural definition since lim_(n->0)n^n=lim_(n->0^+)n^n=lim_(n->0^-)n^n=1. However, the limit does not exist for general complex values of n. Therefore, the choice of definition for 0^0 is usually defined to be indeterminate."

Tags:

Python

Math