Zero to the power of zero
Template:Short description Template:Use dmy datesZero to the power of zero, denoted as Template:Math, is a mathematical expression with different interpretations depending on the context. In certain areas of mathematics, such as combinatorics and algebra, Template:Math is conventionally defined as 1 because this assignment simplifies many formulas and ensures consistency in operations involving exponents. For instance, in combinatorics, defining Template:Math aligns with the interpretation of choosing 0 elements from a set and simplifies polynomial and binomial expansions.
However, in other contexts, particularly in mathematical analysis, Template:Math is often considered an indeterminate form. This is because the value of Template:Math as both Template:Math and Template:Math approach zero can lead to different results based on the limiting process. The expression arises in limit problems and may result in a range of values or diverge to infinity, making it difficult to assign a single consistent value in these cases.
The treatment of Template:Math also varies across different computer programming languages and software. While many follow the convention of assigning Template:Math for practical reasons, others leave it undefined or return errors depending on the context of use, reflecting the ambiguity of the expression in mathematical analysis.
Discrete exponents
Many widely used formulas involving natural-number exponents require Template:Math to be defined as Template:Math. For example, the following three interpretations of Template:Math make just as much sense for Template:Math as they do for positive integers Template:Mvar:
- The interpretation of Template:Math as an empty product assigns it the value Template:Math.
- The combinatorial interpretation of Template:Math is the number of 0-tuples of elements from a Template:Math-element set; there is exactly one 0-tuple.
- The set-theoretic interpretation of Template:Math is the number of functions from the empty set to a Template:Math-element set; there is exactly one such function, namely, the empty function.[1]
All three of these specialize to give Template:Math.
Polynomials and power series
When evaluating polynomials, it is convenient to define Template:Math as Template:Math. A (real) polynomial is an expression of the form Template:Math, where Template:Math is an indeterminate, and the coefficients Template:Math are real numbers. Polynomials are added termwise, and multiplied by applying the distributive law and the usual rules for exponents. With these operations, polynomials form a ring Template:Math. The multiplicative identity of Template:Math is the polynomial Template:Math; that is, Template:Math times any polynomial Template:Math is just Template:Math.[2] Also, polynomials can be evaluated by specializing Template:Math to a real number. More precisely, for any given real number Template:Math, there is a unique unital [[algebra homomorphism|Template:Math-algebra homomorphism]] Template:Math such that Template:Math. Because Template:Math is unital, Template:Math. That is, Template:Math for each real number Template:Math, including 0. The same argument applies with Template:Math replaced by any ring.[3]
Defining Template:Math is necessary for many polynomial identities. For example, the binomial theorem holds for Template:Math only if Template:Math.[4]
Similarly, rings of power series require Template:Math to be defined as 1 for all specializations of Template:Math. For example, identities like and hold for Template:Math only if Template:Math.[5]
In order for the polynomial Template:Math to define a continuous function Template:Math, one must define Template:Math.
In calculus, the power rule is valid for Template:Math at Template:Math only if Template:Math.
Continuous exponents

Limits involving algebraic operations can often be evaluated by replacing subexpressions with their limits; if the resulting expression does not determine the original limit, the expression is known as an indeterminate form.[6] The expression Template:Math is an indeterminate form: Given real-valued functions Template:Math and Template:Math approaching Template:Math (as Template:Math approaches a real number or Template:Math) with Template:Math, the limit of Template:Math can be any non-negative real number or Template:Math, or it can diverge, depending on Template:Mvar and Template:Mvar. For example, each limit below involves a function Template:Math with Template:Math as Template:Math (a one-sided limit), but their values are different:
Thus, the two-variable function Template:Math, though continuous on the set Template:Math, cannot be extended to a continuous function on Template:Math, no matter how one chooses to define Template:Math.[7]
On the other hand, if Template:Math and Template:Math are analytic functions on an open neighborhood of a number Template:Mvar, then Template:Math as Template:Mvar approaches Template:Mvar from any side on which Template:Mvar is positive.[8] This and more general results can be obtained by studying the limiting behavior of the function .[9][10]
Complex exponents
In the complex domain, the function Template:Math may be defined for nonzero Template:Math by choosing a branch of Template:Math and defining Template:Math as Template:Math. This does not define Template:Math since there is no branch of Template:Math defined at Template:Math, let alone in a neighborhood of Template:Math.[11][12][13]
History
As a value
In 1752, Euler in Introductio in analysin infinitorum wrote that Template:Math[14] and explicitly mentioned that Template:Math.[15] An annotation attributed[16] to Mascheroni in a 1787 edition of Euler's book Institutiones calculi differentialis[17] offered the "justification"
as well as another more involved justification. In the 1830s, Libri[18][16] published several further arguments attempting to justify the claim Template:Math, though these were far from convincing, even by standards of rigor at the time.[19]
As a limiting form
Euler, when setting Template:Math, mentioned that consequently the values of the function Template:Math take a "huge jump", from Template:Math for Template:Math, to Template:Math at Template:Math, to Template:Math for Template:Math.[14] In 1814, Pfaff used a squeeze theorem argument to prove that Template:Math as Template:Math.[8]
On the other hand, in 1821 Cauchy[20] explained why the limit of Template:Math as positive numbers Template:Mvar and Template:Mvar approach Template:Math while being constrained by some fixed relation could be made to assume any value between Template:Math and Template:Math by choosing the relation appropriately. He deduced that the limit of the full two-variable function Template:Math without a specified constraint is "indeterminate". With this justification, he listed Template:Math along with expressions like Template:Math in a table of indeterminate forms.
Apparently unaware of Cauchy's work, Möbius[8] in 1834, building on Pfaff's argument, claimed incorrectly that Template:Math whenever Template:Math as Template:Mvar approaches a number Template:Mvar (presumably Template:Mvar is assumed positive away from Template:Mvar). Möbius reduced to the case Template:Math, but then made the mistake of assuming that each of Template:Mvar and Template:Mvar could be expressed in the form Template:Math for some continuous function Template:Mvar not vanishing at Template:Math and some nonnegative integer Template:Mvar, which is true for analytic functions, but not in general. An anonymous commentator pointed out the unjustified step;[21] then another commentator who signed his name simply as "S" provided the explicit counterexamples Template:Math and Template:Math as Template:Math and expressed the situation by writing that "Template:Math can have many different values".[21]
Current situation
- Some authors define Template:Math as Template:Math because it simplifies many theorem statements. According to Benson (1999), "The choice whether to define Template:Math is based on convenience, not on correctness. If we refrain from defining Template:Math, then certain assertions become unnecessarily awkward. ... The consensus is to use the definition Template:Math, although there are textbooks that refrain from defining Template:Nowrap beginTemplate:Math."[22]Template:Nowrap end Knuth (1992) contends more strongly that Template:Math "has to be Template:Math"; he draws a distinction between the value Template:Math, which should equal Template:Math, and the limiting form Template:Math (an abbreviation for a limit of Template:Math where Template:Math), which is an indeterminate form: "Both Cauchy and Libri were right, but Libri and his defenders did not understand why truth was on their side."[19]
- Other authors leave Template:Math undefined because Template:Math is an indeterminate form: Template:Math does not imply Template:Math.[23][24]
There do not seem to be any authors assigning Template:Math a specific value other than 1.[22]
Treatment on computers
IEEE floating-point standard
The IEEE 754-2008 floating-point standard is used in the design of most floating-point libraries. It recommends a number of operations for computing a power:[25]
pown(whose exponent is an integer) treats Template:Math as Template:Math; see Template:Section link.pow(whose intent is to return a non-NaN result when the exponent is an integer, likepown) treats Template:Math as Template:Math.powrtreats Template:Math as NaN (Not-a-Number) due to the indeterminate form; see Template:Section link.
The pow variant is inspired by the pow function from C99, mainly for compatibility.[26] It is useful mostly for languages with a single power function. The pown and powr variants have been introduced due to conflicting usage of the power functions and the different points of view (as stated above).[27]
Programming languages
The C and C++ standards do not specify the result of Template:Math (a domain error may occur). But for C, as of C99, if the normative annex F is supported, the result for real floating-point types is required to be Template:Math because there are significant applications for which this value is more useful than NaN[28] (for instance, with discrete exponents); the result on complex types is not specified, even if the informative annex G is supported. The Java standard,[29] the .NET Framework method System.Math.Pow,[30] Julia, and Python[31][32] also treat Template:Math as Template:Math. Some languages document that their exponentiation operation corresponds to the pow function from the C mathematical library; this is the case with Lua's ^ operator[33] and Perl's ** operator[34] (where it is explicitly mentioned that the result of 0**0 is platform-dependent).
Mathematical and scientific software
R,[35] SageMath,[36] and PARI/GP[37] evaluate Template:Math to Template:Math. Mathematica[38] simplifies Template:Math to Template:Math even if no constraints are placed on Template:Math; however, if Template:Math is entered directly, it is treated as an error or indeterminate. Mathematica[38] and PARI/GP[37][39] further distinguish between integer and floating-point values: If the exponent is a zero of integer type, they return a Template:Math of the type of the base; exponentiation with a floating-point exponent of value zero is treated as undefined, indeterminate or error.
See also
References
External links
- sci.math FAQ: What is Template:Math?
- What does Template:Math (zero to the zeroth power) equal? on AskAMathematician.com
- ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedBourbaki - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedBourbaki_1970_1 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedBourbaki_1970_2 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedT4n3B - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs named8sCon - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedTUZ95 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedCbfum - ↑ 8.0 8.1 8.2 Cite error: Invalid
<ref>tag; no text was provided for refs namedMöbius1834 - ↑ Template:Cite journal
- ↑ Template:Cite journal
- ↑ Cite error: Invalid
<ref>tag; no text was provided for refs named04zJ8 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedW1ue5 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedrYFno - ↑ 14.0 14.1 Cite error: Invalid
<ref>tag; no text was provided for refs namedEuler - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedUzqFL - ↑ 16.0 16.1 Cite error: Invalid
<ref>tag; no text was provided for refs namedLibri1833 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedN3UF6 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs named3QtOF - ↑ 19.0 19.1 Cite error: Invalid
<ref>tag; no text was provided for refs namedKnuth1992 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedPwNOb - ↑ 21.0 21.1 Cite error: Invalid
<ref>tag; no text was provided for refs namedS - ↑ 22.0 22.1 Cite error: Invalid
<ref>tag; no text was provided for refs namedBenson - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedvtShl - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedmfcsT - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedMuller_2010 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedAFaJ2 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedhVrIi - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedJJg1b - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedvH81X - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedDaiDu - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedAGCLB - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedmbxdz - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedregQj - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedm5ocl - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedijVs7 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedDIJz1 - ↑ 37.0 37.1 Cite error: Invalid
<ref>tag; no text was provided for refs namedpari-commit-c2fac9a15 - ↑ 38.0 38.1 Cite error: Invalid
<ref>tag; no text was provided for refs namedWolfram - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs named5slbi