Zero to the power of zero
Template:Short description Template:Use dmy dates
Zero 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 defined as 1 because this simplifies many formulas and ensures consistency in operations involving exponents. For instance, defining Template:Math aligns with the interpretation of choosing 0 elements from a set and simplifies polynomial and binomial expansions.
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 0 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 varies across different computer programming languages and software. While many follow the convention Template:Math, others leave it undefined or return errors, depending on the context.
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.[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 method java.lang.Math.pow,[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
- ↑ Template:Cite book
- ↑ Template:Cite book
- ↑ Template:Cite book
- ↑ Template:Cite book
- ↑ Template:Cite journal
- ↑ Template:Cite book
- ↑ Template:Cite journal
- ↑ 8.0 8.1 8.2 Template:Cite journal
- ↑ Template:Cite journal
- ↑ Template:Cite journal
- ↑ Template:Cite book
- ↑ Template:Cite book
- ↑ Template:Cite magazine
- ↑ 14.0 14.1 Template:Cite book
- ↑ Template:Cite book
- ↑ 16.0 16.1 Template:Cite journal
- ↑ Template:Cite book
- ↑ Template:Cite journal
- ↑ 19.0 19.1 Template:Cite journal
- ↑ Template:Citation
- ↑ 21.0 21.1 Template:Cite journal
- ↑ 22.0 22.1 Template:Cite book
- ↑ Template:Cite book
- ↑ Template:Cite book
- ↑ Template:Cite book Template:Isbn (online), Template:Isbn (print)
- ↑ Template:Cite web (NB. Beginning of the discussion about the power functions for the revision of the IEEE 754 standard, May 2007.)
- ↑ Template:Cite web (NB. Suggestion of variants in the discussion about the power functions for the revision of the IEEE 754 standard, May 2007.)
- ↑ Template:Cite report
- ↑ Template:Cite web
- ↑ Template:Cite web
- ↑ Template:Cite web
- ↑ Template:Cite web
- ↑ Template:Cite web
- ↑ Template:Cite web
- ↑ Template:Cite web
- ↑ Template:Cite web
- ↑ 37.0 37.1 Template:Cite web
- ↑ 38.0 38.1 Template:Cite web
- ↑ Template:Cite web
External links
- sci.math FAQ: What is Template:Math?
- What does Template:Math (zero to the zeroth power) equal? on AskAMathematician.com