Zero to the power of zero
Zero to the power of zero, denoted by 00, is a mathematical expression that arises most commonly as a value of the function x0 or as a limiting form.
- As a value, especially as a value of the constant function x0, one has 00 = 1.[1][2][3]
- As a limiting form, 00 is indeterminate.[4] This statement means that the limit[5] of a function of the form f(x)g(x) cannot be determined just from knowing that the limits of f(x) and g(x) are 0: different values are possible, or the limit may fail to exist, depending on the what the specific functions f(x) and g(x) are. Because of this, some textbook authors[6][7] prefer to leave the value 00 undefined,[2] but Knuth and others argue that this is a mistake.[3][8]
Computer programming languages and software have differing ways of handling the expression 00.
Discrete exponents
Many widely used formulas involving natural-number exponents require 00 to be defined as 1. For example, the following three interpretations of b0 make just as much sense for b = 0 as they do for positive integers b:
- The interpretation of b0 as an empty product assigns it the value 1.
- The combinatorial interpretation of b0 is the number of 0-tuples of elements from a b-element set; there is exactly one 0-tuple.
- The set-theoretic interpretation of b0 is the number of functions from the empty set to a b-element set; there is exactly one such function, namely, the empty function.[9]
All three of these specialize to give 00 = 1.
Polynomials and power series
- When working with polynomials, in order for all evaluation maps to be ring homomorphisms, it is necessary to define 00 = 1, as will now be explained. A polynomial is an expression of the form a0x0 + ⋅⋅⋅ + anxn, where x is an indeterminate, and the coefficients an are real numbers. The set of all such polynomials with the usual addition and multiplication is the polynomial ring R[x]. The multiplicative identity of R[x] is x0, because x0 times any polynomial p(x) is just p(x).[10] For each fixed real number r, the evaluation map R[x] → R sending each polynomial a0x0 + ⋅⋅⋅ + anxn to its value a0r0 + ⋅⋅⋅ + anrn at r should be a ring homomorphism, but it maps the multiplicative identity x0 to r0, so r0 must be 1. The special case r = 0 gives 00 = 1. The same argument applies with R replaced by any ring.[11]
- Defining 00 = 1 is necessary for many polynomial identities. For example, the binomial theorem (1 + x)n = ∑n
k=0 (n
k) xk holds for x = 0 only if 00 = 1.[8]
- Similarly, rings of power series require x0 to be defined as 1 for all specializations of x. For example, identities like 1/1−x = ∑∞
n=0 xn and ex = ∑∞
n=0 xn/n! hold for x = 0 only if 00 = 1.[12]
- In calculus, the power rule d/dxxn = nxn−1 is valid for n = 1 at x = 0 only if 00 = 1.
Continuous exponents
Limits involving algebraic operations can often be evaluated by replacing subexpressions by their limits; if the resulting expression does not determine the original limit, the expression is known as an indeterminate form.[13] The expression 00 is an indeterminate form: Given real-valued functions f(t) and g(t) approaching 0 (as t approaches a real number or ±∞, from one side or both sides) with f(t) > 0 (on each relevant side), the limit of f(t)g(t) can be any non-negative real number or +∞, or it can diverge, depending on f and g. For example, each limit below involves a function f(t)g(t) with f(t), g(t) → 0 as t → 0+ (a one-sided limit), but their values are different:
Thus, the two-variable function xy, though continuous on the set {(x, y) : x > 0}, cannot be extended to a continuous function on {(x, y) : x > 0} ∪ {(0, 0)}, no matter how one chooses to define 00.[14]
On the other hand, if f and g are both analytic functions on an open neighborhood of a number c, then f(t)g(t) → 1 as t approaches c from any side on which f is positive.[15]
Complex exponents
In the complex domain, the function zw may be defined for nonzero z by choosing a branch of log z and defining zw as ew log z. This does not define 0w since there is no branch of log z defined at z = 0, let alone in a neighborhood of 0.[16][17][18]
History
As a value
In 1752, Euler in Introductio in analysin infinitorum wrote that a0 = 1[19] and explicitly mentioned that 00 = 1.[1] An annotation attributed[20] to Mascheroni in a 1787 edition of Euler's book Institutiones calculi differentialis[21] offered the "justification"
as well as another more involved justification. In the 1830s, Libri[22][20] published several further arguments attempting to justify the claim 00 = 1, though these were far from convincing, even by standards of rigor at the time.[3] Modern arguments are often based on the fact that many theorems require x0 to be the constant function 1.[3]
As a limiting form
Euler, when setting 00 = 1, mentioned that consequently the values of the function 0x take a "huge jump", from ∞ for x < 0, to 1 at x = 0, to 0 for x > 0.[19] In 1814, Pfaff used a squeeze theorem argument to prove that xx → 1 as x → 0+.[15]
On the other hand, in 1821 Cauchy[4] explained why the limit of xy as real numbers x and y approach 0 (with x > 0) while being constrained by some fixed relation could be made to assume any value between 0 and ∞ by choosing the relation appropriately. He deduced that the limit of the full two-variable function xy without a specified constraint is "indeterminate". With this justification, he listed 00 along with expressions like 0/0 in a table of indeterminate forms.
Apparently unaware of Cauchy's work, Möbius[15] in 1834, building on Pfaff's argument, claimed incorrectly that f(x)g(x) → 1 whenever f(x),g(x) → 0 as x approaches a number c (presumably f is assumed positive away from c). Möbius reduced to the case c = 0, but then made the mistake of assuming that each of f and g could be expressed in the form Pxn for some continuous function P not vanishing at 0 and some nonnegative integer n, which is true for analytic functions, but not in general. An anonymous commentator pointed out the unjustified step;[23] then another commentator who signed his name simply as "S" provided the explicit counterexamples (e−1/x)x → e−1 and (e−1/x)2x → e−2 as x → 0+ and expressed the situation by writing that "00 can have many different values".[23]
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:[24]
- pow treats 00 as 1. If the power is an exact integer the result is the same as for pown, otherwise the result is as for powr (except for some exceptional cases).
- pown treats 00 as 1. The power must be an exact integer. The value is defined for negative bases; e.g., pown(-3,5) is −243.
- powr treats 00 as NaN (Not-a-Number – undefined). The value is also NaN for cases like powr(-3,2) where the base is less than zero. The value of powr(x,y) is defined by ey ln(x).
The pow variant is inspired by the pow function from C99, mainly for compatibility.[25] 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).[26]
Programming languages
The C and C++ standards do not specify the result of 00 (a domain error may occur), but as of C99, if the normative annex F is supported, the result is required to be 1 because there are significant applications for which this value is more useful than NaN[27] (for instance, with discrete exponents). The Java standard,[28] the .NET Framework method System.Math.Pow
,[29] and Python[30][31] also treat 00 as 1. Some languages document that their exponentiation operation corresponds to the pow
function from the C mathematical library; this is the case with Lua[32] and Perl's **
operator[33] (where it is explicitly mentioned that the result of 0**0
is platform-dependent).
Mathematical and scientific software
APL, R,[34] Stata, SageMath,[35] Matlab, Magma, GAP, Singular, PARI/GP,[36] and GNU Octave evaluate x0 to 1. Mathematica[37] and Macsyma simplify x0 to 1 even if no constraints are placed on x; however, if 00 is entered directly, it is treated as an error or indeterminate. SageMath does not simplify 0x. Maple, Mathematica[37] and PARI/GP[36][38] further distinguish between integer and floating-point values: If the exponent is a zero of integer type, they return a 1 of the type of the base; exponentiation with a floating-point exponent of value zero is treated as undefined, indeterminate or error.
References
- Leonhard Euler; J. D. Blanton (transl.) (1988). Introduction to analysis of the infinite, Book 1. Springer. ISBN 978-0-387-96824-7., Chapter 6, §99, p. 76.
- "The choice whether to define 00 is based on convenience, not on correctness. If we refrain from defining 00, then certain assertions become unnecessarily awkward. [...] The consensus is to use the definition 00 = 1, although there are textbooks that refrain from defining 00." Donald C. Benson, The Moment of Proof : Mathematical Epiphanies. New York Oxford University Press (UK), 1999, p. 29. ISBN 978-0-19-511721-9
- Knuth, Donald E. (1992). "Two Notes on Notation". The American Mathematical Monthly. 99 (5): 403–422. arXiv:math/9205211. doi:10.1080/00029890.1992.11995869.
- Augustin-Louis Cauchy, Cours d'Analyse de l'École Royale Polytechnique (1821), pp. 65-69. In his Oeuvres Complètes, series 2, volume 3.
- Here all the limits are as x approaches a real number or ±∞, from one side or both sides, and f(x) is assumed positive on each relevant side so that f(x)g(x) is defined.
- Edwards and Penney (1994). Calculus, 4th ed, Prentice-Hall, p. 466.
- Keedy, Bittinger, and Smith (1982). Algebra Two. Addison-Wesley, p. 32.
- "Some textbooks leave the quantity 00 undefined, because the functions x0 and 0x have different limiting values when x decreases to 0. But this is a mistake. We must define x0 = 1, for all x, if the binomial theorem is to be valid when x = 0, y = 0, and/or x = −y. The binomial theorem is too important to be arbitrarily restricted! By contrast, the function 0x is quite unimportant". Ronald Graham; Donald Knuth; Oren Patashnik (1989-01-05). "Binomial coefficients". Concrete Mathematics (1st ed.). Addison Wesley Longman Publishing Co. p. 162. ISBN 0-201-14236-8.
- N. Bourbaki, Elements of Mathematics, Theory of Sets, Springer-Verlag, 2004, III.§3.5.
- Nicolas Bourbaki (1970). Algèbre. Springer., §III.2 No. 9: "L'unique monôme de degré 0 est l'élément unité de A[(Xi)i∈I]; on l'identifie souvent à l'élément unité 1 de A".
- Nicolas Bourbaki (1970). Algèbre. Springer., §IV.1 No. 3.
- Vaughn, Herbert E. (1970). "The expression 00". The Mathematics Teacher. 63: 111–112.
- Malik, S. C.; Arora, Savita (1992). Mathematical Analysis. New York: Wiley. p. 223. ISBN 978-81-224-0323-7.
In general the limit of φ(x)/ψ(x) when x = a in case the limits of both the functions exist is equal to the limit of the numerator divided by the denominator. But what happens when both limits are zero? The division (0/0) then becomes meaningless. A case like this is known as an indeterminate form. Other such forms are ∞/∞, 0 × ∞, ∞ − ∞, 00, 1∞ and ∞0.
- L. J. Paige (March 1954). "A note on indeterminate forms". American Mathematical Monthly. 61 (3): 189–190. doi:10.2307/2307224. JSTOR 2307224.
- A. F. Möbius (1834). "Beweis der Gleichung 00 = 1, nach J. F. Pfaff" [Proof of the equation 00 = 1, according to J. F. Pfaff]. Journal für die reine und angewandte Mathematik. 1834 (12): 134–136. doi:10.1515/crll.1834.12.134.
- "Since log(0) does not exist, 0z is undefined. For Re(z) > 0, we define it arbitrarily as 0." George F. Carrier, Max Krook and Carl E. Pearson, Functions of a Complex Variable: Theory and Technique, 2005, p. 15 ISBN 0-89871-595-4
- "For z = 0, w ≠ 0, we define 0w = 0, while 00 is not defined." Mario Gonzalez, Classical Complex Analysis, Chapman & Hall, 1991, p. 56. ISBN 0-8247-8415-4
- "... Let's start at x = 0. Here xx is undefined." Mark D. Meyerson, The xx Spindle, Mathematics Magazine 69, no. 3 (June 1996), 198-206. doi:10.1080/0025570X.1996.11996428
- Leonhard Euler; J. D. Blanton (transl.) (1988). Introduction to analysis of the infinite, Book 1. Springer. ISBN 978-0-387-96824-7., Chapter 6, §97, p. 75.
- Libri, Guillaume (1833). "Mémoire sur les fonctions discontinues". Journal für die reine und angewandte Mathematik. 1833 (10): 303–316. doi:10.1515/crll.1833.10.303.
- Leonhard Euler (1787). Institutiones calculi differentialis, Vol. 2. Ticini. ISBN 978-0-387-96824-7.
- Libri, Guillaume (1830). "Note sur les valeurs de la fonction 00x". Journal für die reine und angewandte Mathematik. 1830 (6): 67–72. doi:10.1515/crll.1830.6.67.
- Anonymous (1834). "Bemerkungen zu dem Aufsatze überschrieben "Beweis der Gleichung 00 = 1, nach J. F. Pfaff"" [Remarks on the essay "Proof of the equation 00 = 1, according to J. F. Pfaff"]. Journal für die reine und angewandte Mathematik. 1834 (12): 292–294. doi:10.1515/crll.1834.12.292.
- Muller, Jean-Michel; Brisebarre, Nicolas; de Dinechin, Florent; Jeannerod, Claude-Pierre; Lefèvre, Vincent; Melquiond, Guillaume; Revol, Nathalie; Stehlé, Damien; Torres, Serge (2010). Handbook of Floating-Point Arithmetic (1 ed.). Birkhäuser. p. 216. doi:10.1007/978-0-8176-4705-6. ISBN 978-0-8176-4704-9. LCCN 2009939668. ISBN 978-0-8176-4705-6 (online), ISBN 0-8176-4704-X (print)
- "More transcendental questions". grouper.ieee.org. Archived from the original on 2017-11-14. Retrieved 2019-05-27. (Beginning of the discussion about the power functions for the revision of the IEEE 754 standard, May 2007.)
- "Re: A vague specification". grouper.ieee.org. Archived from the original on 2017-11-14. Retrieved 2019-05-27. (Suggestion of variants in the discussion about the power functions for the revision of the IEEE 754 standard, May 2007.)
- Rationale for International Standard—Programming Languages—C (PDF) (Report). Revision 5.10. April 2003. p. 182.
- "Math (Java Platform SE 8) pow". Oracle.
- ".NET Framework Class Library Math.Pow Method". Microsoft.
- "Built-in Types — Python 3.8.1 documentation". Retrieved 2020-01-25.
Python defines pow(0, 0) and 0 ** 0 to be 1, as is common for programming languages.
- "math — Mathematical functions — Python 3.8.1 documentation". Retrieved 2020-01-25.
Exceptional cases follow Annex 'F' of the C99 standard as far as possible. In particular, pow(1.0, x) and pow(x, 0.0) always return 1.0, even when x is a zero or a NaN.
- "Lua 5.3 Reference Manual". Retrieved 2019-05-27.
- "perlop – Exponentiation". Retrieved 2019-05-27.
- The R Core Team (2019-07-05). "R: A Language and Environment for Statistical Computing – Reference Index" (PDF). Version 3.6.1. p. 23. Retrieved November 22, 2019.
1 ^ y and y ^ 0 are 1, always.
- The Sage Development Team (2020). "Sage 9.2 Reference Manual: Standard Commutative Rings. Elements of the ring Z of integers". Retrieved January 24, 2021.
For consistency with Python and MPFR, 0^0 is defined to be 1 in Sage.
- "pari.git / commitdiff – 10- x ^ t_FRAC: return an exact result if possible; e.g. 4^(1/2) is now 2". Retrieved September 10, 2018.
- "Wolfram Language & System Documentation: Power". Wolfram. Retrieved August 2, 2018.
- The PARI Group (2018). "Users' Guide to PARI/GP (version 2.11.0)" (PDF). pp. 10, 122. Retrieved September 4, 2018.
There is also the exponentiation operator ^, when the exponent is of type integer; otherwise, it is considered as a transcendental function. [...] If the exponent n is an integer, then exact operations are performed using binary (left-shift) powering techniques. [...] If the exponent n is not an integer, powering is treated as the transcendental function exp(n log x).
External links
- sci.math FAQ: What is 00?
- What does 00 (zero to the zeroth power) equal? on AskAMathematician.com