When you have eliminated the impossible, whatever remains, however improbable, must be the truth, Sherlock Holmes.

Continuous Argument Function for Complex Numbers: A Comprehensive Guide
Introduction to the Argument of a Complex Number
A complex number $z$ can be expressed in the form $z = x + iy$, where $x, y \in \mathbb{R}$ and $i$ is the imaginary unit satisfying $i^2 = -1$.
Equivalently, $z$ can be written in polar form: $z = r e^{i\theta} = r(\cos\theta + i\sin\theta),$ where $r = |z| = \sqrt{x^2 + y^2}$ is the modulus and $\theta$ is the argument — the angle from the positive real axis to the ray from the origin through $z$, measured counterclockwise.
Definition. For a nonzero complex number $z = x + iy \neq 0$, the argument $\arg(z)$ is the angle $\theta$ satisfying: $x = |z|\cos\theta, \qquad y = |z|\sin\theta.$
For any nonzero complex number $z = x + iy$, the argument is the angle $\theta$ such that: $z = |z|e^{i\theta}, \qquad |z| = \sqrt{x^2 + y^2}, \qquad \theta = \arg(z).$
The principal value $\operatorname{Arg}(z)$ is a single-valued choice of $\arg(z)$ — by convention usually taken in $(-\pi, \pi]$ — but because angles are defined only up to multiples of $2\pi$, the full argument is multi-valued: $\arg(z) = \{ \theta \in \mathbb{R} : z = |z|e^{i\theta} \} = \{\operatorname{Arg}(z) + 2\pi k : k \in \mathbb{Z}\}.$ In other words, adding any integer multiple of $2\pi$ to the angle yields the exact same complex number.
Properties of the Argument Function
Let $z = x + iy \neq 0$
- Periodicity (Multi-valuedness): The argument function is periodic with a period of $2\pi$. This means that for any integer k, $\arg(z) = \mathrm{Arg}(z) + 2\pi k$.
The argument function assigns to each nonzero $z$ an infinite set of real numbers, any two of which differ by an integer multiple of $2\pi$. Geometrically, rotating the angle by a full turn yields the same point.
- Principal Range: The principal value of the argument, usually denoted as $\text{Arg}(z)$, is typically taken in the interval $(-\pi, \pi]$ (by convention, other intervals of length 2π are possible).
Some texts use [0, $2\pi$).
- Uniqueness: While a complex number has infinitely many arguments differing by integer multiples of $2\pi$, the principal value provides a unique representation within a specific interval of length $2\pi$.
- Special values:
If $\operatorname{Re}(z) > 0$ and $\operatorname{Im}(z) = 0$: $\operatorname{Arg}(z) = 0$ (positive real axis).
If $\operatorname{Re}(z) < 0$ and $\operatorname{Im}(z) = 0$: $\operatorname{Arg}(z) = \pi$ (negative real axis).
If $\operatorname{Re}(z) = 0$ and $\operatorname{Im}(z) > 0$: $\operatorname{Arg}(z) = \frac{\pi}{2}$ (positive imaginary axis).
If $\operatorname{Re}(z) = 0$ and $\operatorname{Im}(z) < 0$: $\operatorname{Arg}(z) = -\frac{\pi}{2}$ (negative imaginary axis).
The Discontinuity Problem
However, the standard principal argument function has a critical limitation: it is not continuous everywhere in the complex plane. When moving around the origin (e.g., traversing a circle, $z = e^{i\theta}$), the argument “jumps” by $ 2\pi $ at the point where the angle crosses a boundary (e.g., from $ \pi $ to $ -\pi $ or vice versa). This discontinuity arises because the argument is inherently multi-valued, and the standard definition restricts it to a specific interval.
Consider a complex number $ z = e^{i\theta} $ (a point on the unit circle) as $\theta$ increases from $ 0 $ to $ 2\pi $. If we use $\operatorname{Arg}(z) \in (-\pi, \pi]$:
- Approaching a point on the negative real axis from the upper half-plane $\theta \in [0, \pi)$ yields $ \operatorname{Arg}(z) = \theta, \operatorname{Arg}(z) \approx \pi$
- Approaching a point on the negative real axis from the lower half-plane $\operatorname{Arg}(z)$ suddenly drops to $-\pi$.
- This jump breaks continuity, even though the path $z(\theta)$ is smooth, but $\operatorname{Arg}(z(\theta))$ exhibits a jump discontinuity of $2\pi$ when crossing the negative real axis. This discontinuity is not an artifact of poor definition — it is an unavoidable consequence of the topology of $\mathbb{C} \setminus \{0\}$.
Why No Continuous Global Argument Exists?
The domain $\mathbb{C} \setminus \{0\}$ is not simply connected — it has a “hole” at the origin. This topological property causes trouble when trying to define arg(z) continuously on the entire domain:
- If you traverse a closed path around the origin (e.g., the unit circle), the angle $\theta$ increases by $2\pi$.
- Therefore, any attempt to define $\arg(z)$ continuously on all of $\mathbb{C} \setminus \{0\}$ will fail to return to the same value after a full loop. However, a single-valued continuous function must return to its starting value on a closed path — a contradiction
This is a classic example of a monodromy phenomenon: the value of a function changes when you loop around a singularity.
Proposition. There is no continuous function $\theta: \mathbb{C} \setminus \{0\} → \mathbb{R}$ such that $\theta(z) \in \arg(z)$ for all $z \in \mathbb{C} \setminus \{0\}$.
Proof.
-
Assume, for the sake of contradiction, that such a continuous function θ exists. Define a function $g : \mathbb{R} \to \mathbb{R}$ by: g(t) = $\frac{1}{2\pi}(θ(e^{it})+θ(e^{-it})), t \in \mathbb{R}$. Since by assumption θ is continuous and the exponential function is continuous, g is continuous, too.
-
$g$ is integer-valued. For each $t$, since $\theta(e^{it}) \in \arg(e^{it})$ and $\theta(e^{-it}) \in \arg(e^{-it})$, there exist integers $n_t$ and $m_t$ such that $\theta(e^{it}) = t + 2n_t\pi, \qquad \theta(e^{-it}) = -t + 2m_t\pi.$ Therefore, $g(t) = \frac{1}{2\pi}(θ(e^{it})+θ(e^{-it})) = \frac{1}{2\pi}(t + 2n_t\pi -t + 2m_t\pi) = \frac{1}{2\pi}(2(n_t\pi + m_t\pi)) = n_t + m_t \in \mathbb{Z}$.
-
$g$ must be constant. A continuous function $g : \mathbb{R} \to \mathbb{Z}$ must be constant, because:
$\mathbb{Z}$ carries the discrete topology — every singleton $\{n\}$ is both open and closed. If $g : \mathbb{R} \to \mathbb{Z}$ is continuous, then each preimage $g^{-1}(\{n\})$ is both open and closed (clopen) in $\mathbb{R}$. Since $\mathbb{R}$ is connected, the only clopen subsets are $\varnothing$ and $\mathbb{R}$ itself. Therefore, exactly one preimage is all of $\mathbb{R}$, and $g$ is constant.
-
Now evaluate g at two specific points.
At t = 0, g(0) = $\frac{1}{2\pi}(θ(e^{i0})+θ(e^{-i0})) = \frac{1}{2\pi}(θ(1)+θ(1)) = \frac{1}{\pi}(θ(1))$
Since $\theta(1) \in \arg(1) = \{2\pi k : k \in \mathbb{Z}\}$, we have $\theta(1) = 2\pi k$ for some integer $k$, giving $g(0) = 2k$ — an even integer.
At $t = \pi$: $g(\pi) = \frac{1}{2\pi}\bigl(\theta(e^{i\pi}) + \theta(e^{-i\pi})\bigr) = \frac{1}{2\pi}\bigl(\theta(-1) + \theta(-1)\bigr) = \frac{\theta(-1)}{\pi}.$
Since $\theta(-1) \in \arg(-1) = \{(2k'+1)\pi : k' \in \mathbb{Z}\}$, we have $\theta(-1) = (2k'+1)\pi$, giving $g(\pi) = 2k'+1$ — an odd integer.
Since $g$ is constant, $g(0) = g(\pi)$, which requires an even integer to equal an odd integer — an obvious contradiction. $\quad\square$
Conclusion. The argument function on $\mathbb{C} \setminus \{0\}$ is inherently a multi-valued function. No single-valued continuous selection is possible on the full punctured plane.
Constructing Continuous Argument Functions via Branch Cuts
What about branches? To obtain a single-valued, continuous version of arg(z), we must restrict the domain by introducing a branch cut. For example:
- Remove a ray from the origin (typically the negative real axis). It acts a barrier preventing loops around the origin.
- Removing branch cut makes the remaining domain simply connected (no holes), eliminating the topological obstruction and allowing continuous single-valued branches.
- Interval Selection: We choose an interval of length 2π that doesn’t include the direction of the ray.
- Continuity: The function is continuous because the argument function behaves smoothly and continuously, approaching the cut from either side gives values that approach the endpoints of the selected interval.
- For any angle $\alpha \in \mathbb{R}$, define the ray: $R_\alpha = \{r e^{i\alpha} : r \geq 0\}.$ On the domain $\mathbb{C} \setminus R_\alpha$, there exists a unique continuous function: $\theta_\alpha : \mathbb{C} \setminus R_\alpha \to (\alpha, \alpha + 2\pi)$ such that $\theta_\alpha(z) \in \arg(z)$ for every $z$ in the domain.
- Example 1. Removing the Non-Negative Real Axis ($\alpha = 0$). Domain: $\mathbb{C} \setminus [0, \infty)$ — the complex plane without the non-negative real axis. Continuous branch: $\theta_0 : \mathbb{C} \setminus [0, \infty) \to (0, 2\pi)$.
Behaviour: Upper half-plane ($y > 0$): $0 < \theta_0(z) < \pi$; Negative real axis ($x < 0, y = 0$): $\theta_0(z) = \pi$; Lower half-plane ($y < 0$): $\pi < \theta_0(z) < 2\pi$; Approaching positive real axis from above ($y \to 0^+$, $x > 0$): $\theta_0(z) \to 0^+$. Approaching positive real axis from below ($y \to 0^-$, $x > 0$): $\theta_0(z) \to 2\pi^-$.
The last two lines illustrate the essential feature: approaching the branch cut from opposite sides yields values near opposite ends of the interval $(0, 2\pi)$. The function is continuous on the slit domain, but the limiting values from above and below the cut differ by $2\pi$.
- Example 2: Removing the Negative Real Axis ($\alpha = -\pi$ or equivalently $\alpha = \pi$). Domain: $\mathbb{C} \setminus (-\infty, 0]$ — the complex plane without the non-positive real axis.
Continuous branch: $\operatorname{Arg} : \mathbb{C} \setminus (-\infty, 0] \to (-\pi, \pi)$.
This is the principal branch of the argument (restricted to the open interval $(-\pi, \pi)$ to ensure continuity — note the exclusion of $\pm\pi$).
Behaviour: Positive real axis ($x > 0, y = 0$): $\operatorname{Arg}(z) = 0$; Upper half-plane ($y > 0$): $0 < \operatorname{Arg}(z) < \pi$; Lower half-plane ($y < 0$): $-\pi < \operatorname{Arg}(z) < 0$; Approaching negative real axis from above ($y \to 0^+$, $x < 0$): $\operatorname{Arg}(z) \to \pi^-$; Approaching negative real axis from below ($y \to 0^-$, $x < 0$): $\operatorname{Arg}(z) \to -\pi^+$. \
- Example 3: Removing the Ray at Angle $\pi/4$. Domain: $\mathbb{C} \setminus R_{\pi/4}$, where $R_{\pi/4} = \{re^{i\pi/4} : r \geq 0\}$ is the ray at $45°$.
Continuous branch: $\theta_{\pi/4} : \mathbb{C} \setminus R_{\pi/4} \to (\pi/4, \pi/4 + 2\pi) = (\pi/4, 9\pi/4)$.
Behavior: Approaching the ray from the counterclockwise side: $\theta_{\pi/4}(z) \to (\pi/4)^+$. Approaching the ray from the clockwise side: $\theta_{\pi/4}(z) \to (9\pi/4)^-$. As one traverses a circle around the origin (avoiding the ray), $\theta_{\pi/4}$ increases continuously from just above $\pi/4$ to just below $9\pi/4$.
Computation
In practice, the principal argument is computed using the two-argument arctangent function $\operatorname{atan2}(y, x)$ function, which accounts for the quadrant of $ z $ in the complex plane.
Definition. For $z = x + iy =re^{i\theta}, (x, y) \neq (0, 0),$ with r = |z|, arg(z) is a multi-valued function given by $|z|=\sqrt{x^2+y^2}, \text{arg(z)} = \{\theta + 2\pi n: n \in \mathbb{Z}\}$. Besides, $\theta = \text{Arg(z)} = \text{atan2}(y, x)$ is a single-valued branch, which by convention is taken to lie in the range $-\pi < \theta ≤ \pi$:
$$\operatorname{Arg}(z) = \operatorname{atan2}(y, x) = \begin{cases} \arctan\!\left(\dfrac{y}{x}\right), & \text{if } x > 0, \\[8pt] \arctan\!\left(\dfrac{y}{x}\right) + \pi, & \text{if } x < 0 \text{ and } y \geq 0, \\[8pt] \arctan\!\left(\dfrac{y}{x}\right) - \pi, & \text{if } x < 0 \text{ and } y < 0, \\[8pt] +\dfrac{\pi}{2}, & \text{if } x = 0 \text{ and } y > 0, \\[8pt] -\dfrac{\pi}{2}, & \text{if } x = 0 \text{ and } y < 0, \\[8pt] \text{undefined}, & \text{if } x = 0 \text{ and } y = 0. \end{cases}$$
Why $\arctan(y/x)$ alone is insufficient. The standard $tan^{-1}$ only returns values in $(-\pi/2, \pi/2)$ and cannot distinguish between opposite quadrants, e.g., $\arctan\!\left(\frac{1}{1}\right) = \arctan\!\left(\frac{-1}{-1}\right) = \frac{\pi}{4},$ but $\operatorname{Arg}(1+i) = \pi/4$ while $\operatorname{Arg}(-1-i) = -3\pi/4$. However, $\arctan\!\left(\frac{1}{1}\right) = \arctan\!\left(\frac{-1}{-1}\right) = \frac{\pi}{4}$.
The atan2(y, x) function resolves quadrant ambiguities by using the signs of both x and y.

Quadrant Handling:
- x > 0: Right half-plane (quadrants I and IV), $\operatorname{Arg}(z)$ ranges from $(-\pi/2, \pi/2)$, e.g., $\operatorname{Arg}(1+i) = \pi/4$.
- $x < 0, y \geq 0$ (quadrant II), $\operatorname{Arg}(z)$ ranges from $(\pi/2, \pi]$, e.g., $\operatorname{Arg}(-1+i) = -\pi/4 + \pi = \frac{3\pi}{4}$
- $x < 0, y < 0$ (quadrant III), $\operatorname{Arg}(z)$ ranges from $(-\pi, -\pi/2)$, e.g., $\operatorname{Arg}(-1-i) = \pi/4 -\pi = -3\pi/4$.
- $x = 0, y > 0$ (positive imaginary axis), $\operatorname{Arg}(z) = \pi/2$.
- $x = 0, y < 0$ (negative imaginary axis), $\operatorname{Arg}(z) =-\pi/2$
This implementation ensures continuity everywhere except along the negative real axis, where there's a branch cut (jumping from π to -π). This formulation is exactly what’s implemented in most programming languages and mathematical software, making it the standard practical approach for complex number computations.
Examples
- z = 1 + i. Here, x = 1 > 0, the argument is $\theta(z) = \tan^{-1}(1/1) = \frac{\pi}{4}\approx 0.7854.$.
- z = -1 + i. Here, x = -1 < 0 and $y = 1 \geq 0$ $\theta(z) = \tan^{-1}(1/-1) + \pi = -\frac{\pi}{4} + \pi = \frac{3\pi}{4} \approx 2.3562.$.
- z = -1 - i. Here, x = -1 < 0 and y = -1 < 0. $\theta(z) = \tan^{-1}(-1/-1) - \pi = \frac{\pi}{4} - \pi = -\frac{3\pi}{4}\approx -2.3562.$.
- $z = -3$. Here $x = -3 < 0$ and $y = 0 \geq 0$, so: $\operatorname{Arg}(z) = \arctan\!\left(\frac{0}{-3}\right) + \pi = 0 + \pi = \pi.$
- $z = 2i$. Here $x = 0$ and $y = 2 > 0$, so $\operatorname{Arg}(z) = \pi/2$.
Software implementation
- Wolfram Language (
Arg[z]): Returns the principal value $(-\pi, \pi]$.
- Maple (
argument(z)): Similar to Wolfram, with the same interval or convention.
- MATLAB (
angle(z)): Also uses $ (-\pi, \pi] $, while atan2(y, x) is explicitly used for quadrants.
- Python:
cmath.phase
# Import cmath Library
import cmath
import math
z = -1 - 1j
# Using coordinates
theta1 = math.atan2(z.imag, z.real)
print(f"Via coordinates: {theta1}") # Output: -2.356... (-3π/4)
# Using complex object directly (computes phase)
theta2 = cmath.phase(z)
print(f"Via cmath: {theta2}") # Output: -2.356...
# Print quadrant-aware arctangent
z = 1 + 1j
print(cmath.phase(z)) # 0.7853981633974483 ≈ π/4
z = -1 + 1j
print(cmath.phase(z)) # 2.356194490192345 ≈ 3π/4
z = -1 - 1j
print(cmath.phase(z)) # -2.356194490192345 ≈ -3π/4
Algebraic Identities for the Argument
- Multiplication: $ \arg(z_1 z_2) = \arg(z_1) + \arg(z_2) \pmod{2\pi}$. This holds as an equality of sets.
If $z_1 = r_1 e^{i\theta_1}$ and $z_2 = r_2 e^{i\theta_2}$, then $z_1 z_2 = r_1 r_2 e^{i(\theta_1 + \theta_2)}$, so $\theta_1 + \theta_2$ is an argument of the product.
Readers Be Aware $\operatorname{Arg}(z_1 z_2)$ does not always equal $\operatorname{Arg}(z_1) + \operatorname{Arg}(z_2)$, because the sum may fall outside $(-\pi, \pi]$, e.g., $z_1 = z_2 = e^{i \cdot 3\pi/4}: \quad \operatorname{Arg}(z_1) + \operatorname{Arg}(z_2) = \frac{3\pi}{2} \notin (-\pi, \pi]$ (it is indeed greater than $\pi$)
while $\operatorname{Arg}(z_1 z_2) = \operatorname{Arg}(e^{i \cdot 3\pi/2}) = -\frac{\pi}{2}$.
The identity holds modulo $2\pi$: $\frac{3\pi}{2} - 2\pi = -\frac{\pi}{2}$.
When working with principal values, you must adjust the sum by adding or subtracting $2\pi$ as needed to bring it back into the chosen principal range.
- Division: $\arg\!\left(\frac{z_1}{z_2}\right) = \arg(z_1) - \arg(z_2) \pmod{2\pi}.$
- Powers: $ \arg(z^n) = n\arg(z) \mod 2\pi $ for integer $ n $.
This is an immediate consequence of the multiplicative identity applied $n$ times (or via $z^n = r^n e^{in\theta}$).
- Complex Conjugate: $ \arg(\overline{z}) = -\arg(z) \mod 2\pi $.
If $z = re^{i\theta}$, then $\bar{z} = re^{-i\theta}$, so $-\theta$ is an argument of $\bar{z}$.
- Reciprocal. $\arg\!\left(\frac{1}{z}\right) = -\arg(z) \pmod{2\pi}.$
$1/z = \frac{1}{r}e^{-i\theta}$
- De Moivre’s Theorem: $ z^n = r^n(\cos(n\theta) + i\sin(n\theta)) \text{ where } z = re^{i\theta}$.
- Connection to Natural Logarithm. The argument is the imaginary part of the complex logarithm: $\ln(z) = \ln|z| + i \arg(z)$.
This relation underscores why defining a continuous argument is equivalent to defining a continuous logarithm. The principal value of the logarithm, $\operatorname{Log}(z)$, uses the principal argument $\operatorname{Arg}(z)$: $\boxed{\operatorname{Log}(z) = \ln|z| + i\operatorname{Arg}(z)}$.