Where the trouble actually lives
The previous guide left us with an uncomfortable fact: the complex logarithm is multivalued, with log z = ln|z| + i(arg z + 2 pi k) for every integer k. A whole vertical ladder of answers, spaced 2 pi i apart, all equally legitimate. Before we can compute or differentiate, we need to pin down one value — but first we should ask a sharper question: where, exactly, does the ambiguity come from? It is not spread evenly over the plane. It is concentrated, and pinning down its source is the key to taming it.
Here is a small experiment you can run in your head. Stand at z = 1, where we may take log 1 = 0, and walk once counterclockwise around the unit circle, keeping your value of log continuous as you go. The modulus part ln|z| stays at ln 1 = 0 the whole way — the radius never changes. But the argument climbs steadily: at angle theta your value is i theta. By the time you return to z = 1 you have swept theta from 0 to 2 pi, so log has crept up to 2 pi i, not back to 0. One quiet loop, and the value has slipped to the next rung of the ladder.
Now shrink that loop. Circle the origin along a tiny circle of radius 0.001, or a huge one of radius a million — it makes no difference. Any loop that encircles z = 0 forces the argument to gain 2 pi and the value to jump by 2 pi i. Any loop that does not enclose the origin brings the value safely home. So the entire defect of the logarithm pivots on a single point, the origin, and that point has a name.
Branch points: the immovable pivots
A branch point is exactly that special point: one you cannot encircle by a small loop without the function's value changing when you return. It is the pivot around which the multi-valuedness rotates. For log z the only finite branch point is z = 0. The defining test is the failure to come back: travel a closed loop around the point, and if a continuously tracked value lands somewhere different from where it started, you have circled a branch point.
Branch points come with an order that records how many loops it takes to get home. The square root sqrt(z) also has a branch point at 0, but going around once flips its sign and going around twice restores the value — there are only two branches, so it is a branch point of order two. The logarithm is more extreme: no finite number of loops ever returns you to the starting value, because each loop adds a fresh 2 pi i forever. That is why the logarithm is sometimes called a branch point of infinite order, and it is the structural reason its ladder of values has infinitely many rungs.
There is also, in a precise sense, a branch point of the logarithm at infinity — looping around a circle so large it encloses everything is, on the Riemann sphere, the same as looping around the point at infinity. For functions with several finite branch points the locations matter individually. For example sqrt(z^2 - 1) = sqrt((z - 1)(z + 1)) has branch points at z = 1 and z = -1, and knowing where they sit is the first step in deciding how to fence them off.
Branch cuts: drawing the curtain
The fix is wonderfully direct. The only thing that breaks single-valuedness is a loop that encircles a branch point — so simply make such loops impossible. A branch cut is a curve we delete from the plane, running out from a branch point, so that no path inside the remaining region can wind around that point. With the loops forbidden, a single continuous value of log can live on the leftover region without ever contradicting itself.
Picture the slit plane: take the whole plane and remove the negative real axis, a ray from 0 straight out to minus infinity. Now try to draw a loop around the origin — you cannot, because every such loop would have to cross the deleted ray, and the deleted ray is not there to be crossed. With looping made impossible, the principal argument Arg z can be chosen continuously in the half-open range from -pi to pi across the whole slit plane, and the logarithm becomes a genuine single-valued, holomorphic function on it.
When a function has two finite branch points, you have a clever extra option. For sqrt((z - 1)(z + 1)) you could draw two rays heading outward from z = 1 and z = -1, but you can also cut just the finite segment joining them, from -1 to 1. The reason this works is subtle and worth savouring: a loop that encircles both branch points together picks up the sign flip twice, and two flips cancel, so such a loop causes no contradiction. Cutting only between them blocks the loops that enclose just one branch point — the ones that actually break single-valuedness — while leaving the harmless big loops alone.
The principal branch: the agreed-upon default
Removing a cut lets a single-valued logarithm live on what remains, but it still does not say which value to pick — you must also commit to one continuous choice of the argument. Any such consistent, continuous, single-valued choice of log on a region is called a branch of the logarithm. There are infinitely many, and on the same connected region any two of them differ by a constant 2 pi i k. None is more correct than the others; they are different floors of the same building.
Out of this infinite family we crown one default so that the symbol Log z names a definite number. The principal logarithm, written with a capital L, is the branch that cuts along the negative real axis and takes the argument in the range from -pi (exclusive) to pi (inclusive): Log z = ln|z| + i Arg z. For instance Log 1 = 0, Log i = i pi/2, Log(-1) = i pi (we keep the upper endpoint +pi), and Log(1 + i) = (1/2) ln 2 + i pi/4. On the positive real axis Log z collapses to the ordinary real ln, so it genuinely extends the logarithm you already know.
Log z = ln|z| + i Arg z, with -pi < Arg z <= pi Log( 1 ) = 0 Log( i ) = i pi/2 Log(-1 ) = i pi (upper endpoint kept) Log(-i ) = -i pi/2 (NOT 3 pi i / 2) Log(1 + i) = (1/2) ln 2 + i pi/4 derivative: d/dz Log z = 1/z on the slit plane
The scar along the cut, and the surface that heals it
Single-valuedness is not free. The price is a controlled jump across the cut: approach a point of the cut from one side and from the other, and you get two different limits. This jump is the visible scar left by the multi-valuedness we suppressed — and once you know it is there, it is easy to read off.
- Fix a point on the cut, say the negative real point z = -2, where |z| = 2 so the real part of Log is ln 2 throughout.
- Come in from just above the negative axis (the upper half-plane): the argument tends to +pi, so Log tends to ln 2 + i pi.
- Come in from just below (the lower half-plane): the argument tends to -pi, so Log tends to ln 2 - i pi.
- Subtract: the two boundary values differ by exactly 2 pi i — the period of the exponential and the spacing between branches. The real part ln|z| is continuous across the cut; only the argument jumps.
Far from being a nuisance, this jump is a tool you will wield later. Keyhole and dogbone contours in residue calculus deliberately run along both sides of a cut; because the integrand differs by a known factor on the two sides, the two straight pieces fail to cancel, and their difference is precisely what evaluates integrals like the integral from 0 to infinity of x^(a-1) / (1 + x) dx. The whole technique depends on knowing the discontinuity exactly, so the discipline is simple: never let a contour cross a cut by accident, and when you deliberately run along one, account for the jump.
There is also a more beautiful resolution that throws away no information at all. Instead of slitting the plane, imagine stacking infinitely many copies of the slit plane and gluing the upper edge of each to the lower edge of the next, like an endless spiral ramp in a parking garage. On this Riemann surface of the logarithm, looping around the origin lifts you smoothly to the floor above — exactly the 2 pi i you gained — and the logarithm becomes a single honest function with no jump anywhere. The cut and the principal branch are the practical, flattened picture; the spiral surface is the global truth they are approximating.
Why this matters for everything downstream
It is tempting to file branch cuts under bookkeeping and move on, but they are load-bearing. Everything built on the logarithm inherits its branch points, branch cuts, and the need to choose a branch — most of all complex powers, the subject of the next guide. As soon as you write z^a = e^(a log z) you are reusing the logarithm, so z^a is multivalued for the same reason, and you cannot evaluate it cleanly until you have committed to a branch and a cut.
One honest caution before we leave. The seductive real-variable identities do not survive intact: Log(ab) = Log a + Log b can fail by a multiple of 2 pi i. A clean counterexample is Log((-1)(-1)) = Log 1 = 0, while Log(-1) + Log(-1) = i pi + i pi = 2 pi i. The principal logarithm is single-valued, but it is not a homomorphism — the addition law only holds up to 2 pi i, the same ambiguity that started this whole story. Respect the cut, watch the 2 pi i, and the multivalued world becomes not just usable but genuinely powerful.