Alien Math · Proving Ground PG-025 · ENIAC, Aberdeen

The Monte Carlo sheet 12/9/47

The flow diagram for ENIAC's first Monte Carlo neutron run, transcribed box by box and running below on ENIAC's own arithmetic: a 10-digit middle-square generator, random numbers sliced into digit fields, and a free path computed by doubling and a three-term series.

ends in fission escapes absorbed radius drawn true; azimuth is cosmetic
this batch k–
running k–
exact k (Peierls)–
ρ calls0
Ready. One batch is one 100-card census, the size the 1948 run used.
Boxes visited by the first neutron of the batch
Press Run.
Last cards punched (box 47*, IBM columns 1–80)

The sheet, lit by a running neutron

The scan itself, with each box lit as the emulator passes through it. Press Walk to follow the first neutron of the current batch step by step, or hover a box to see its reading.

The 12/9/47 Monte Carlo flow diagram, scanned

The run’s findings

Eight predictions were written and hashed before any code ran. The test object is a bare U-235 sphere from the Los Alamos one-group criticality benchmark set (Ua-1-0-SP: ν = 2.70, Σt = 0.3264 cm⁻¹, critical radius 7.428998 cm). That is fast, bare and critical like Godiva, with an exact answer to grade against. Three codes run it: the sheet emulator, an independent modern Cartesian Monte Carlo, and a deterministic Peierls integral-equation solve.

Which ENIAC shortcut moves k

k at the exact critical radius, ±1σ. Each row adds one sheet numerics feature to a good random generator. Dashed line: Peierls k = 1.

Where 1,000 middle-square seeds end up

Draws until the 10-digit stream first repeats. Every seed falls into one of four cycles; more than half end stuck at 0000000000.

One stream, never reseeded

k per generation for 20 single middle-square streams, 1,000 neutrons a generation. Streams that reach 0 or the 500-cycle (which ends in five zeros) stop producing free paths shorter than 9.9 mean free paths, every neutron escapes, and the chain dies.

Time census: growth rate α

Population growth per unit of flight path, from census-to-census counts. Modern code vs the sheet (with a fresh ρ on census cards; as literally read, census runs collapse).

Round two: Godiva physics, the real generator, the clock

Nine more predictions, hashed first. Three readers transcribed the scan independently of my reading; a 10-group HEU cross-section set was collapsed from ENDF point data so the sheet's velocity-table lookup, elastic kinematics (52*) and inelastic box (54*) all run; the 1948 "Actual Running" report settled which generator they used; and the sheet's operations were costed at ENIAC's speeds.

Same ladder on HEU

k at the multigroup critical radius, ±1σ, 1.6 million histories each. The as-drawn bias shrinks from +0.034 on the textbook sphere to about +0.01, and its source moves to the 2-digit ν in 52*.

8 digits (first run) vs 10 (second run)

Middle-square8-digit10-digit

1,000 random seeds each (20,000 for the 8-digit cycle census). Klára von Neumann's report: the first run squared 8-digit numbers and restarted from the seed card every 2,000 squarings; the second used 10 digits and 3,000.

Where the ten days went

ENIAC, April–May 1948Modelled

Operation counts from the emulator (2.4 flights, 1.8 collisions, 2.8 ρ calls per neutron) priced at three speed regimes: the 1945 arithmetic unit, the 1948 converted code at 100 kHz, and the same at 60 kHz after 28 April.

The readers’ changes

Box 1.1* reads the new seed from column group H, not F. The fission-daughter counter in 38*/39* is q*, not g*. In 54* the speed factor φ uses one random digit and the root covers it: V** = √((V² − E)φ). The letter in 24* is a J. Box 3* tests the census window with + → skip the card, − → continue, which with zero counted as + would skip every fresh census card; that is the one open semantic question on the sheet. None of these moves a number in the emulator, and all three readers agree the census path draws no fresh random number.

The tweet, checked against the sheet

The thread's broad story holds. Several specifics do not match the sheet or the record in Haigh, Priestley and Rope's history of these runs.

ClaimWhat the sheet or record showsVerdict

The sheet, box by box

Starred boxes (1*, 18* …) and barred boxes (1̄ … 26̄) are two separate numbering series, and degree boxes (1°–4°) are the free-path routine. ξ is a 10-digit fraction; ξ(9,8) means its 9th and 8th digits read as 0.d₉d₈.

Sources: T. Haigh, M. Priestley, C. Rope, "Los Alamos Bets on ENIAC: Nuclear Monte Carlo Simulations, 1947–1948," IEEE Annals of the History of Computing 36(3), 2014 (PDF); the same authors' ENIAC in Action (MIT Press, 2016); A. Sood, R. A. Forster, D. K. Parsons, "Analytical Benchmark Test Set for Criticality Code Verification," LA-13511 (1999). The diagram scan is the one shared in the thread. Code, preregistration (sha256 57a5cac0…), results and transcription live in the project's eniac-monte-carlo folder. The browser bench runs a reduced, k-only version of the emulator; the graded numbers come from the full Python runs.