---
title: "Recomputing a published superradiance amplification table"
description: "Download the authors' scalar amplification table, recompute the spin 0.99 slice with an independent solver, and see where the hydrogenic growth formula holds."
canonical_url: "https://sandboxphysics.com/stories/black-hole-superradiance/recomputing-a-published-amplification-table/"
language: "en"
page_type: "story"
alternate_languages:
  zh-CN: "https://sandboxphysics.com/zh/stories/black-hole-superradiance/recomputing-a-published-amplification-table/"
last_modified: "2026-11-12"
---

[Spinning black holes and boson clouds](https://sandboxphysics.com/stories/black-hole-superradiance/)

# Recomputing a published superradiance amplification table

Sandbox Physics · 2026-11-12

We downloaded the scalar amplification table that Brito, Cardoso and Pani distribute, and recomputed its spin $0.99$, $l=m=1$ slice with an independent solver. Of 100 rows, 99 agree with a median relative difference of $4.9\times10^{-10}$ and a largest difference of $9.0\times10^{-7}$, well inside the authors' stated precision of one part in $10^5$. The remaining row sits exactly at the threshold, where the true value is zero. A second script then shows that the short hydrogenic formula for cloud growth agrees with an exact solution to within 10 percent only in narrow bands of coupling, and nowhere at spin $0.99$.

[Open the black hole superradiance Lab](https://sandboxphysics.com/labs/black-hole-superradiance/)

This guide lists every input, command, output and failure case so that you can repeat the check. The physics behind it is in [conserved flux, physical units and a first growth estimate](https://sandboxphysics.com/stories/black-hole-superradiance/flux-units-and-a-first-growth-estimate/) and [solving for the bound cloud's growth rate reproducibly](https://sandboxphysics.com/stories/black-hole-superradiance/solving-the-bound-cloud-reproducibly/).

## What the authors published

The CENTRA gravitation group hosts amplification factors for scalar, electromagnetic and gravitational waves scattered by Kerr black holes. [CENTRA/GRIT, amplification factors](https://centra.tecnico.ulisboa.pt/network/grit/files/amplification-factors/) The page says the routines are freely available and asks users to refer to the original work, the review by Brito, Cardoso and Pani. [Brito, Cardoso and Pani, Superradiance, §4.7](https://arxiv.org/abs/1501.06570v8)

**Table 5.1** The file used here.

| Item | Value |
| --- | --- |
| Archive | superradiance\_spin\_1.zip |
| File inside | sigma\_VS\_om\_a\_s0l1m1.dat |
| Columns | $a/M$, $M\omega$, $Z$ |
| Units | $G=c=M=1$ |
| Stated precision | one part in $10^5$, archive readme |
| Rows with $a=0.99$ | 100, from $M\omega=0.00868$ to $0.868$ |

$Z$ is the fractional energy gain of the reflected wave, $Z=\mathrm dE_{\mathrm{out}}/\mathrm dE_{\mathrm{in}}-1$. The archive also contains a Mathematica notebook. We did not open it, so nothing here depends on the authors' code.

We do not redistribute the archive. Its SHA-256 digests are recorded in [slice-inputs.json](https://sandboxphysics.com/stories/black-hole-superradiance/materials/slice-inputs.json) so that you can confirm you have the same bytes.

## Step 1: download and verify

Keep the download in its own empty folder, and the scripts in another.

```
mkdir -p superradiance-check/author-data superradiance-check/scripts
cd superradiance-check/author-data
curl -L -o superradiance_spin_1.zip https://centra.tecnico.ulisboa.pt/media/cms_page_media/147/superradiance_spin_1.zip
shasum -a 256 superradiance_spin_1.zip
unzip superradiance_spin_1.zip
shasum -a 256 sigma_VS_om_a_s0l1m1.dat
```

The two digests should be:

```
2c03d43e8d417fad30c2128bb202836411a384dac99d2dcd1a3679f6574aff30  superradiance_spin_1.zip
e03e70b3b2af6c8112487212f8dcb04c9d5bfa46837685580ad65694865333af  sigma_VS_om_a_s0l1m1.dat
```

If either differs, the host has changed the file. Stop and compare before trusting any result below. The run script also checks the table digest and records whether it matched.

## Step 2: get the scripts and run them

Save these files into the scripts folder:

1. [spheroidal\_eigenvalue.py](https://sandboxphysics.com/stories/black-hole-superradiance/materials/spheroidal_eigenvalue.py), the angular eigenvalue.
2. [kerr\_scalar\_scattering.py](https://sandboxphysics.com/stories/black-hole-superradiance/materials/kerr_scalar_scattering.py), the scattering solver.
3. [low\_frequency\_amplification.py](https://sandboxphysics.com/stories/black-hole-superradiance/materials/low_frequency_amplification.py), the analytic small-frequency formula.
4. [reproduce\_amplification\_slice.py](https://sandboxphysics.com/stories/black-hole-superradiance/materials/reproduce_amplification_slice.py), the comparison driver.
5. [slice-inputs.json](https://sandboxphysics.com/stories/black-hole-superradiance/materials/slice-inputs.json), the run settings.

Then run, from the scripts folder:

```
python3 reproduce_amplification_slice.py ../author-data/sigma_VS_om_a_s0l1m1.dat slice-inputs.json slice-outputs.json
```

The script exits with status 0 when no row fails and 1 otherwise. Our output is [slice-outputs.json](https://sandboxphysics.com/stories/black-hole-superradiance/materials/slice-outputs.json). We used Python 3.9.6, NumPy 2.0.2 and SciPy 1.13.1; the versions are written into the output file.

## What the solver does

The solver shares no code with the authors. For each frequency it:

1. computes the spheroidal eigenvalue for $c^2=(a\omega)^2$ as the eigenvalue of a $24\times24$ matrix;
2. starts at $r_+ + 10^{-3}(r_+-r_-)$ from an eight-term series that falls purely into the horizon;
3. integrates the radial equation outward with an eighth-order Runge-Kutta method, relative tolerance $10^{-11}$, to $r=\max(250,80/\omega)$;
4. matches the result to twelve-term incoming and outgoing series and reads off $Z=|R_{\mathrm{out}}/I|^2-1$.

A row passes when the computed $Z$ is within $10^{-5}$ of the published value, relative. Rows whose published value is below $10^{-12}$ in magnitude are reported separately as round-off rows, since a relative difference has no meaning there.

## Results

**Table 5.2** Checks on the spin $0.99$ slice.

| Check | Result |
| --- | --- |
| Rows compared | 99, no failures |
| Round-off rows | 1, at $M\omega=0.43380$ |
| Median relative difference | $4.9\times10^{-10}$ |
| Largest relative difference | $9.0\times10^{-7}$, at $M\omega=0.00868$ |
| Sign of $Z$ | agrees in every row |
| Flux balance at horizon and infinity | mismatch at most $4.2\times10^{-11}$ |
| Wronskian at six radii, $M\omega=0.3$ | spread $3.6\times10^{-10}$ |
| Outer radius doubled at three frequencies | change at most $4.5\times10^{-11}$ |

**Table 5.3** Selected rows.

| $M\omega$ | Published $Z$ | Computed $Z$ |
| --- | --- | --- |
| $0.00868$ | $2.733045\times10^{-7}$ | $2.733047\times10^{-7}$ |
| $0.09544$ | $2.380891\times10^{-4}$ | $2.380891\times10^{-4}$ |
| $0.38175$ | $3.662446\times10^{-3}$ | $3.662446\times10^{-3}$ |
| $0.43380$ | $7.1\times10^{-15}$ | $0$ |
| $0.44248$ | $-4.521665\times10^{-3}$ | $-4.521665\times10^{-3}$ |
| $0.52924$ | $-0.9300786$ | $-0.9300786$ |

The largest gain in the slice is $0.366$ percent at $M\omega=0.382$, consistent with the review's statement that scalar waves gain at most about $0.4$ percent. Above the threshold the hole absorbs almost the whole wave: $Z$ approaches $-1$.

Two independent limits back up the solver. With the spin set to zero, $Z$ is negative at every frequency tried: $-1.69\times10^{-5}$ at $M\omega=0.05$, $-0.0344$ at $0.2$ and $-0.998$ at $0.5$. A non-rotating hole only absorbs. At small frequency the analytic formula of the review, its Eqs. (4.103)-(4.104), approaches the table: the ratio of formula to table is $0.990$ at $M\omega=0.0087$ and falls to $0.772$ by $M\omega=0.095$, as expected for a leading-order expansion.

## Step 3: where the hydrogenic growth formula holds

The cloud growth rate has a short formula, Eq. (5.27) of the review, valid for small coupling. To see where it holds, save [kerr\_bound\_states.py](https://sandboxphysics.com/stories/black-hole-superradiance/materials/kerr_bound_states.py) and [compare\_hydrogenic\_growth.py](https://sandboxphysics.com/stories/black-hole-superradiance/materials/compare_hydrogenic_growth.py) next to the other scripts and run

```
python3 compare_hydrogenic_growth.py hydrogenic-comparison-outputs.json
```

It solves the continued fraction for spins $0.5$, $0.7$, $0.9$ and $0.99$ and couplings from $0.05$ in steps of $0.01$ until the cloud stops growing, and first checks itself against Dolan's Table I. All six maxima agree to within $0.3$ percent. [Dolan, Instability of the massive Klein-Gordon field on the Kerr spacetime, Table I](https://arxiv.org/abs/0705.2880v2) Our output is [hydrogenic-comparison-outputs.json](https://sandboxphysics.com/stories/black-hole-superradiance/materials/hydrogenic-comparison-outputs.json).

**Table 5.4** Couplings where the hydrogenic rate is within 10 percent of the exact rate.

| Spin | Within 10 percent | Largest overestimate |
| --- | --- | --- |
| $0.5$ | $\alpha=0.10$ to $0.12$ | $1.15$ |
| $0.7$ | $\alpha=0.18$ to $0.19$ | $1.41$ |
| $0.9$ | $\alpha=0.30$ | $2.24$ |
| $0.99$ | none | $4.73$ |

Read this table with care. The agreement bands lie just below each cut-off, where the two curves cross on their way to zero; they are not a regime in which the formula is accurate. At the smallest coupling computed, $\alpha=0.05$, the formula still overestimates by $15$ to $53$ percent, more at higher spin. The real part of the frequency is far better: within $0.4$ percent everywhere. The formula is a fair guide to which couplings grow and a poor guide to how fast.

## Failure cases and guarded traps

The first and the last two items happened in our runs. The second and third are guarded in the code.

1. The threshold row. At $M\omega=m\Omega_H$ the exact gain is zero. The table's $7.1\times10^{-15}$ and our $0$ are both round-off, so the row is reported but not scored.
2. The extremal limit. The solver's horizon series and tortoise coordinate need $r_+\neq r_-$, so it refuses $a=1$ instead of returning a number.
3. The wrong angular parameter. For the bound cloud the spheroidal parameter is $a^2(\omega^2-\mu^2)$, a complex number. The bound-state solver computes it from the complex frequency at every step, rather than reusing the real scattering value $(a\omega)^2$.
4. The wrong level. At $a=0.55$ and $\alpha=0.47$ the hydrogenic starting guess converges to the first overtone, $M\omega_R=0.4622$, instead of the ground state, $M\omega_R=0.45190$. Continuing from a neighbouring solution fixes it.
5. Slow convergence at small coupling. At $a=0.99$ and $\alpha=0.05$ the continued fraction still changes by $1.2\times10^{-4}$ when made four times deeper.

## What this check does not show

It covers one file, the massless scalar with $l=m=1$, at one spin. It says nothing about the electromagnetic or gravitational tables, nor about other spins in the same file, though the script can be pointed at them by changing the spin in the inputs. Agreement with the authors' table shows that two independent codes solve the same equation the same way; it is not an observation of superradiance. The Lab's gain chart uses the same solver, so this guide is also its test. Try it in the [black hole superradiance Lab](https://sandboxphysics.com/labs/black-hole-superradiance/).

## Try it in the Lab

Set spin 0.99 and frequency 0.38, and compare the gain readout with the table row you recomputed. [Open the black hole superradiance Lab](https://sandboxphysics.com/labs/black-hole-superradiance/)

## Sources

1. [CENTRA/GRIT, amplification factors](https://centra.tecnico.ulisboa.pt/network/grit/files/amplification-factors/)
2. [Brito, Cardoso and Pani, Superradiance, §4.7](https://arxiv.org/abs/1501.06570v8)
3. [Dolan, Instability of the massive Klein-Gordon field on the Kerr spacetime, Table I](https://arxiv.org/abs/0705.2880v2)

## Keep reading

Spinning black holes and boson clouds · Reading path

### From an amplified wave to a growing cloud

1. [Article **Why can a spinning black hole make the waves around it ever stronger?**](https://sandboxphysics.com/stories/black-hole-superradiance/why-a-spinning-black-hole-amplifies-waves/)
2. [Article **Waves, spin and the scales of a Kerr black hole**](https://sandboxphysics.com/stories/black-hole-superradiance/waves-spin-and-kerr-scales/)
3. [Article **Conserved flux, physical units and a first growth estimate**](https://sandboxphysics.com/stories/black-hole-superradiance/flux-units-and-a-first-growth-estimate/)
4. [Article **Solving for the bound cloud's growth rate reproducibly**](https://sandboxphysics.com/stories/black-hole-superradiance/solving-the-bound-cloud-reproducibly/)
5. [You are here **Recomputing a published superradiance amplification table**](https://sandboxphysics.com/stories/black-hole-superradiance/recomputing-a-published-amplification-table/)
6. [Article **How self-interactions change boson-cloud limits from spins and gravitational waves**](https://sandboxphysics.com/stories/black-hole-superradiance/reading-self-interacting-boson-cloud-limits/)
