Here’s something that comes up occasionally, a case where I have to tell someone “It doesn’t work that way.” I’ll write it up here so next time I can just send them a link instead of retyping my explanation.

## Rules for exponents

The rules for manipulating expressions with real numbers carry over to complex numbers so often that it can be surprising when a rule doesn’t carry over. For example, the rule

(*b*^{x})^{y} = *b*^{xy}

holds when *b* is a positive real number and *x* and *y* are real numbers, but doesn’t necessarily hold when *x* or *y* are complex. In particular, if *x* is complex,

(*e*^{x})^{y} = *e*^{xy}

does not hold in general, though it does hold when *y* is an integer. If it did hold, and **this is where people get into trouble**, you could make computations like

*e*^{2πi/3} = (*e*^{2πi})^{1/3} = 1^{1/3} = 1

even though *e*^{2πi/3} actually equals (-1 + *i*√3)/2.

## Complex exponential function

I usually use the notation exp(*x*) rather than *e*^{x }for several reasons. For one thing, it’s easier to read. When the argument is complicated, say if it contains exponents of its own, the superscripts can get tiny and hard to head. For example, here are two ways of writing the probability density function for the Gumbel distribution.

Math publishers often require the exp() notation in their style guides.

Aside from legibility, there is a substantive reason to prefer the exp() notation. The function *f*(*z*) = exp(*z*) has a rigorous definition in terms of a power series. It’s a single-valued function, valid for any complex number you might stick in. By contrast, it’s subtle how *b*^{x} can even be defined rigorously, even if *b* = *e*. If you care to delve into the details, see the footnote [1]. This may seem pedantic, but it’s a hair worth splitting because it can avoid difficulties like the incorrect calculation above.

Now it is true that

exp(*x* + *y*) = exp(*x*) exp(*y*)

for all *x* and *y*, even complex *x* and *y*, and so it is true that

exp(*nx*) = exp(*x*)^{n}

when *n* is an integer. For positive integers you can see this by repeatedly adding *x* to itself. You can extend this to negative integers using

exp(-*x*) = 1/exp(*x*).

## Related posts

[1] For positive *b*, you can bootsrap your way by defining *b*^{x} for integer exponents, then rational exponents, then real exponents by taking limits. But when *b* is negative this doesn’t work. The way you end up defining *b*^{x} in general is as exp(*x* log *b*), taking advantage of the rigorous definition of exp() alluded to above.

But what is log *b*? This gets subtle. The logarithm of *b* is a solution to the equation exp(*x*) = *b*, and this has infinitely many solutions for complex *x*. So now you need to either specify a particular branch to make the log function single valued, or you need to change your idea of a function to include multiply-valued functions.

If you get really technical, there’s a difference between exp(*x*) and *e*^{x} is because the latter is exp(*x* log *e*), and log *e* has multiple values! So in that sense exp(*x*) and *e*^{x} are different functions, the former single valued and the latter multiply valued.