Why 0 ** 0 equals 1 in python

Posted on

Question :

Why 0 ** 0 equals 1 in python

Why does 0 ** 0 equal 1 in Python? Shouldn’t it throw an exception, like 0 / 0 does?

Answer #1:

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.

Answered By: NPE

Answer #2:

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.”

Answered By: Pj_

Answer #3:

2^2 = (1+1)*(1+1) = 4 (two objects occured two times)

2^1 = (1+1)*1 = 2 (two objects occured one time)

2^0 = (1+1)*0 = 0 (two objects did not occur)

1^2 = 1 *(1+1) = 2 (one object occured two times)

1^1 = 1 *1 = 1 (one object occured one time)

1^0 = 1 *0 = 0 (one object did not occur)

0^2 = 0 *(1+1) = 0 (zero objects occured twice)

0^1 = 0 *1 = 0 (zero objects occured once)

0^0 = 0 *0 = 0 (zero objects did not occur)

Therefore you cannot make something from nothing!

Answered By: itsbasiclogic

Leave a Reply

Your email address will not be published.