Let
and the area of the Mandelbrot set is
Bittner et al. 2014 computed 5M terms of this series, resulting in the bound
We can compute out to
We use expansion arithmetic, representing numbers as
unevaluated sums of double precision numbers, as computing in double runs out of precision around
The fastest of the mostly trustworthy methods I've seen for Mandelbrot area is Fisher and Hill 1993, who use the Koebe 1/4 theorem to prove (up to double precision) that quadree cells are either entirely outside or entirely inside the set. Their bounds are
Worse, accurate extrapolation of the series seems out of reach: out to
This colab has more explanation of the methods used, and some plots of the computed series. For example, here is a plot of the locally averaged area contributions vs. the illusory -1.08 power law fit:
For an .npy
file with the series coefficients out to $k
to 1, 2, ..., 26, or 27 and download
https://storage.googleapis.com/mandelbrot/numpy/f-k$k.npy
The shape will be [2^k, 2]
corresponding to expansion arithmetic with 2 doubles; sum across the last axis if you want a single double.
We use the Meson build system, and the excellent high-precision arithmetic library Arb for bootstrapping. We also depend on clang even when compiling CUDA, to allow more recent C++ features. To install dependencies:
# On Mac
brew install meson arb cmake pkg-config openssl
# On Debian Buster
echo deb http://apt.llvm.org/buster/ llvm-toolchain-buster-13 main | sudo tee -a /etc/apt/sources.list
echo deb-src http://apt.llvm.org/buster/ llvm-toolchain-buster-13 main | sudo tee -a /etc/apt/sources.list
sudo apt-get install clang-13 libc++-13-dev libc++abi-13-dev libomp-13-dev \
python3 python3-pip python3-setuptools python3-wheel ninja-build \
libmpfr-dev libflint-dev libflint-arb-dev libssl-dev
pip3 install --user meson
Then build and test with
./setup
cd build/release # Or build/debug
meson compile
meson test
For CUDA profiling, use
# https://developer.nvidia.com/nsight-systems
# https://docs.nvidia.com/nsight-systems/UserGuide/index.html#example-single-command-lines
nsys profile --stats=true ./build/release/area_cuda_test