That's how my textbook did it as well (well, it defined e as ln(e) = 1, but only because it introduced e before exp).

The problem with this approach is that, since we were already introduced to exponents and logarithms in algebra but via different definitions, it always left this unanswered question in my head about how we knew these two definitions were the same, since everyone quickly glossed over that fact.

>The problem with this approach is that, since we were already introduced to exponents and logarithms in algebra but via different definitions, it always left this unanswered question in my head about how we knew these two definitions were the same, since everyone quickly glossed over that fact.

They just shouldn't be taught in algebra. There, one is thinking about oh how do I extend the definition of exponentiation from integers to real numbers. But thinking about continuous extensions of an integer function to the real line is really something that should be saved for calculus.

I suppose the method would be to derive ln(xy) = ln(x) + ln(y) and the corresponding exp(x + y) = exp(x)exp(y), then see how this lets exp(y ln(x)) coincide with repeated multiplication for integer y. Connecting this to the series definition of exp(x) would also take some work, but my textbook wasn't very big on series definitions in general.

[deleted]

Did you eventually realise that the expression a^b should be understood to "really" mean exp(b * ln(a)), at least in the case that b might not be an integer?

I think even in complex analysis, the above definition a^b := exp(b ln(a)) makes sense, since the function ln() admits a Riemann surface as its natural domain and the usual complex numbers as its codomain.

[EDIT] Addressing your response:

> Calculus glosses over the case when a is negative

The Riemann surface approach mostly rescues this. When "a" is negative, and b is 1/3 (for instance), choose "a" = (r, theta) = (|a|, 3 pi). This gives ln(a) = ln |a| + i (3 pi). Then a^b = exp((|a| + i 3 pi) / 3) = exp(ln |a|/3 + i pi) = -|a|^(1/3), as desired.

Notice though that I chose to represent "a" using theta=3pi, instead of let's say 5pi.

I see what GP's point is, high-school-level calculus generally restricts itself to real numbers, where the logarithm is simply left undefined for nonpositive arguments. After all, complex analysis has much baggage of its own, and you want to have a solid understanding of real limits, derivatives, integrals, etc. before you start looking into limits along paths and other such concepts.

Even then, general logarithms become messy. It's easy to say "just take local segments of the whole surface" in the abstract, but any calculator will have to make some choice of branch cuts. E.g., clearly (−1)^(1/3) = −1 for any sane version of exponentiation on the reals, but many calculators will spit out the equivalent of (−1)^(1/3) = −e^(4πi/3) instead.

(Just in general, analytic continuation only makes sense in the abstract realm. If you try doing it numerically to extend a series definition, you'll quickly find out how mind-bogglingly unstable it is. I think there was one paper that showed you need an exponential number of terms and exponentially many bits of accuracy w.r.t. the number of steps. Not even "it's 2025, we can crank it out to a billion bits" can save you from that.)

I was once a contractor for TI (and we wrote the same subroutines for Casio) so I can actually answer this. See my story here: https://news.ycombinator.com/item?id=6017670

And of course by Muphry's law I managed to confuse real and principal roots in that answer. -1 is not the principal cube root of -1.

The problem is a^b := exp(b ln(a)) sort of breaks down when a is negative, which is a case that is covered in algebra class but glossed over in calculus.

It doesn't break down, one just needs the complex logarithm. If you ignore complex numbers it breaks down in both cases. If you allow complex numbers it works in both cases.

No, using complex numbers alone DOES NOT work. To really allow complex numbers, you also need Riemann surfaces. The function "ln" has type ln: R -> CC where "R" denotes the Riemann surface corresponding to the natural domain of ln, and "CC" denotes the complex numbers. See here for details: https://en.wikipedia.org/wiki/Complex_logarithm#The_associat...

[deleted]