Problem solved in full
-
What is a½, and who decided? The tool only does whole-number exponents. The rule that forces a⁰ does not stop there, so work out what it obliges a half to mean.
-
Start from the law the tool shows in its third row, and check it on a case you can see: raise a power to a power and the exponents multiply.
-
Now feed that same law an exponent of a half, with an outer power of 2. The right-hand side collapses to a¹, which is a.
-
Read what that says. a½ is a number whose square is a — which is what a square root is. Nothing was defined; the law left no room for anything else.
-
The same move fixes every root. An outer power of 3 gives a number whose cube is a.
-
And it settles the mixed ones without a further rule. 16 to the power three halves is either the cube of the square root or the square root of the cube, and the law says those agree: 4³ and √4096 are both 64.
-
Where it stops is not the algebra but the choice of which root. −8 has a real cube root of −2, and it also has two complex ones. Ask three machines and you get three answers: −2 from the real convention, NaN from JavaScript, and 1 + i√3 from Python, which takes the principal root instead.
Answer
a^(1/q) is forced to be a qth root by the same law that forces a⁰ = 1, and no new definition is made anywhere between the whole numbers and the fractions — which is why fractional indices obey every rule the whole ones do. What is genuinely chosen is which qth root you mean when a number has several, and that choice is the whole of the disagreement over (−8)^(1/3). For a positive base there is one positive root and no argument, which is why textbooks state the fractional index rule for a > 0 and leave the negative case to a chapter on complex numbers.
-
References (2)
- Where the two answers at 0⁰ come from, and why neither camp is careless: Donald E. Knuth, "Two Notes on Notation", The American Mathematical Monthly 99(5), 403–422, 1992. doi:10.2307/2325085
- What the machines named in the same block actually do, measured rather than assumed: Measured in this repo: Node 22 gives Math.pow(0,0) = 1 and 0 ** 0 = 1; CPython gives 0 ** 0 = 1 and (-8) ** (1/3) = 1 + i√3, while JavaScript's Math.pow(-8, 1/3) is NaN. Asserted in scripts/check-compute.mjs.