Beyond Complex Numbers
Why the complex plane All numbers a + b i plotted with real part a (x-axis) and imaginary part b (y-axis). Also called the Argand plane. is the perfect stage for the Mandelbrot set, how Mandelbrot Metal 3 preserves that structure at deep zoom, and what you gain and lose when you venture into higher-dimensional systems like quaternions A 4D number system (ℍ) with basis {1, i, j, k}; great for 3D rotations; multiplication is non-commutative (ab ≠ ba). .
Glossary
TL;DR
“Too long; didn’t read.” A concise summary placed near the top of a page to convey the main idea quickly.
ℂ (Complex numbers)
Numbers of the form a + b i with i2 = -1. In polar form we write z = r e^{iθ}, which couples magnitude r and angle θ.
Argand / Complex plane
The 2D plane representing ℂ with axes Re(z) and Im(z). Each complex number is a point (or vector) in this plane.
Orbit
The sequence z0, z1, z2, … obtained by iterating a map. For example, for the quadratic map zn+1 = zn2 + c.
Mandelbrot set 𝓜
The set of all parameters c for which the orbit of z0 = 0 under zn+1 = zn2 + c stays bounded (does not escape to infinity).
Julia set
For a fixed c, the Julia set is the boundary separating points whose orbits escape from those that stay bounded under zn+1 = zn2 + c.
Conformal
Locally angle-preserving. For complex functions, analytic maps with f'(z) ≠ 0 act (infinitesimally) like a rotation plus scaling — no shearing.
Analytic / Holomorphic
Complex-differentiable functions that satisfy the Cauchy–Riemann equations. Their geometry is extremely rigid, which is why complex dynamics produces such structured fractals.
Critical point
A point where f'(z) = 0. Critical points control bifurcations, stability changes, and much of the global structure in both dynamical and parameter spaces.
Multiplier
For a periodic point z0 of period p, the multiplier is λ = (fp)'(z0). Its modulus |λ| decides stability (attracting, neutral, or repelling).
Quaternion ℍ
A 4D extension of ℂ with basis {1, i, j, k}. Unit quaternions represent 3D rotations. Multiplication is non-commutative (ab ≠ ba), which breaks many of ℂ’s nicest geometric properties.
Algebraically closed
A field is algebraically closed if every non-constant polynomial with coefficients in that field has at least one root. ℂ is algebraically closed; ℝ is not (for example, x2 + 1 = 0 has no real solution).
Polar form
Writing z = r e^{iθ} with r ≥ 0 and angle θ. Squaring gives z2 = r2 e^{i 2θ}: the angle doubles and the magnitude squares.
Reference orbit
One accurately computed sequence Zn+1 = Zn2 + c0 used as the numerical anchor for nearby pixels.
Perturbation
A change of variables that evolves the small difference between a pixel orbit and a reference orbit instead of repeatedly combining tiny pixel offsets with large absolute coordinates.
Adaptive finite precision
A bounded numerical system that selects among several finite representations and recovery paths. It is not arbitrary-precision arithmetic.
TL;DR
Complex numbers bundle magnitude and angle into one algebra, so squaring If z = r e^{iθ}, then z2 = r2 e^{i 2θ}: magnitude squares, angle doubles. naturally mixes growth and rotation in each iterate of zn+1 = zn2 + c. That coupling is the engine behind the rich fractal feedback we see in the Mandelbrot set. When you move to higher-dimensional systems (like quaternions 4D numbers used for 3D rotations; multiplication order matters. ), you gain truly 3D structures but trade away some of ℂ’s symmetry and conformality Local angle preservation where the derivative is non-zero. , so the geometry becomes less uniform and more heuristic.
See It First
From Real to Complex
Over the real numbers, a simple quadratic iteration like xn+1 = xn2 + c mostly tells you whether or not values grow, shrink, or oscillate on a line. The behavior can still be interesting, but it lives in one dimension.
In ℂ, every point has both a magnitude and an angle. Writing z = r e^{iθ}, we can see what squaring Use polar form: z = r e^{iθ} ⇒ z2 = r2 e^{i 2θ}. does:
- The magnitude is squared: r → r2.
- The angle is doubled: θ → 2θ.
That means each iterate of zn+1 = zn2 + c is simultaneously a growth step (scaling the distance from the origin) and a twist step (rotating around the origin). The tug-of-war between these two effects, controlled by the parameter c, is what creates the intricate boundary structure of the Mandelbrot set.
Mandelbrot as a Map of Dynamics
Think of each parameter c as defining its own dynamical system: fc(z) = z2 + c.
- Fix c: iterate zn+1 = fc(zn) and look at which starting points escape. The boundary that separates escaping from non-escaping points is the Julia set for that c.
- Vary c over the complex plane and ask: “Does the orbit of z0 = 0 under fc stay bounded?” The set of parameters where it does is the Mandelbrot set 𝓜.
In other words, 𝓜 is a map of stability for the entire family of systems z2 + c. One of the deep theorems in complex dynamics tells us:
- If c ∈ 𝓜, the corresponding Julia set is connected.
- If c ∉ 𝓜, the Julia set is totally disconnected “dust.”
Critical points Points where f'(z) = 0. For z2 + c, the unique critical point is z = 0. play a central role here. For the quadratic family the single critical point z = 0 is exactly the one whose orbit decides whether c belongs to 𝓜.
Conformality Explains the “Clean Look”
Analytic complex functions with f'(z) ≠ 0 are conformal: on very small scales they behave like a uniform scaling and rotation. No direction is stretched more than another, and right angles stay right angles.
This is why deep zooms into the Mandelbrot set and related Julia sets look so “organized” despite their complexity: away from a few special locations (critical points and singularities), the map is extremely well-behaved locally. The wild global structure comes from repeated composition of these small, well-behaved steps.
Where f'(z) = 0 (critical points), the local map collapses directions and the topology can change — this is where bifurcations, bulb attachments, and other major structural transitions happen in both the Julia sets and the Mandelbrot set.
Beyond ℂ: Quaternions and 3D Fractals
Quaternions ℍ extend complex numbers to four dimensions. A quaternion can be written as q = a + b i + c j + d k, and unit quaternions are widely used to represent 3D rotations.
You can build quaternion iterations that look formally similar to the complex quadratic map, for example qn+1 = qn2 + c with quaternions in place of complex numbers. Their four-dimensional Julia and Mandelbrot sets are usually viewed through three-dimensional slices or projections. The familiar Mandelbulb is a related but distinct construction based on a spherical-coordinate power map, not simply the quaternion analogue of z2 + c.
However, quaternions are non-commutative: ab ≠ ba in general. This breaks many of the clean theorems from complex analysis:
- There is no direct analogue of “algebraically closed” in the same sense as ℂ.
- There is no single, 2D conformal structure controlling everything.
- Local behavior is more directional and less symmetric.
Visually, this means quaternion-based fractals can be dramatic and three-dimensional, but they lack the perfectly self-similar “polish” and tight theoretical control that make the Mandelbrot set so special. In practice, a lot more heuristics are involved in defining and rendering them.
Why ℂ Is Special (Quick Notes)
- ℂ is the algebraic closure of ℝ and the canonical two-dimensional, commutative field used by complex analysis.
- The multiplicative norm satisfies |z w| = |z| · |w|, which underpins clean scaling behavior in iterations.
- The analytic structure (holomorphic functions) enforces rigid local geometry, giving conformality Angle preservation via local rotation + scale whenever the derivative is non-zero. almost everywhere.
How Version 3 Preserves Complex Dynamics at Deep Zoom
At ordinary scales, each Metal thread can evaluate zn+1 = zn2 + c directly. At deep scales, however, a pixel-sized change in c can be much smaller than an ordinary floating-point coordinate can express beside the viewport center. The Infinity Engine changes the numerical representation without changing the complex dynamical system.
Reference: Zn+1 = Zn2 + c0
Nearby pixel: zn = Zn + δzn, c = c0 + δc
Full perturbation recurrence: δzn+1 = 2Znδzn + (δzn)2 + δc
One precise CPU anchor
Swift computes one complex reference orbit in double-double arithmetic—about 106 significant binary bits in normal finite operation. Each real and imaginary component is decomposed into four Float limbs for upload.
Millions of Metal pixel paths
Metal evaluates nearby pixel deltas in parallel. A fast Float tier handles well-conditioned work; difficult pixels restart in quad-single arithmetic, retaining four Float limbs per component.
Rebase and recovery
Growth and glitch checks detect when a delta is becoming numerically unsafe. Quad-single rebasing and direct recovery keep that work on the GPU when possible.
Complete-frame presentation
Deep work is dispatched in bounded Metal stripes, assembled in a private full-frame texture, and presented only when the requested image is complete. If a Metal result is unusable, the established CPU deep renderer remains the fallback.
The engine therefore evaluates the same map in coordinates that remain useful much farther into the complex plane; it does not substitute a different fractal rule.
Why This Matters in Mandelbrot Metal
For Mandelbrot Metal, these aren’t just abstract facts — they’re design tools. Working in ℂ lets the renderer rely on:
- Predictable growth and escape rates from zn+1 = zn2 + c, which feed into stable smooth coloring schemes.
- A well-defined geometry for gradients and normals, which supports consistent 3D Look shading. This is a visualization of the two-dimensional escape field, not an added mathematical dimension.
- The Version 3 Infinity Engine, which combines a CPU double-double reference orbit with Metal perturbation, quad-single recovery, and bounded complete-frame presentation.
When you move beyond ℂ into higher-dimensional systems, you gain new visual possibilities, but you also give up many of these guarantees. The math becomes less rigid, and rendering often relies more on numerical experimentation and heuristics. That’s why ℂ remains the sweet spot for the classic Mandelbrot set — and why it is still the core “stage” inside Mandelbrot Metal. Version 3 is Metal-first, not Metal-only: the CPU supplies the accurate reference, the GPU performs the pixel-scale work, and the established renderer remains available as a safety path.
Version 3 Precision Boundary
Mandelbrot Metal 3 exposes a validated maximum viewport scale of 1 × 1025. This is a deliberate product boundary, not a claim of arbitrary precision. Useful resolved detail remains scene-dependent and is affected by coordinate conditioning, reference-orbit accuracy, iteration count, and the active recovery path. The ceiling states where Version 3 permits exploration; it does not promise that every location contains distinguishable structure at that scale.
Version 3 technical note • Revised September 2, 2026
Get Version 2.2.3