Does running the atomistic model in single precision change any results?
No. Forces agree to 0.02 meV/Å and relaxations take identical steps, while running 1.5 times faster.
In the log: Single precision costs nothing here, and was being paid for anyway
confirmedDate not stated in the log; it was written between the commit of 2026-09-13 08:16 and the first commit that contains it, 2026-09-16 02:04unclassified0 predictions · 0 result paragraphsEXPERIMENTS.md lines 3603–3638
What E66 did and how it came out, drawn from this record and the files it names (book/assets/diagrams/exp/E66.svg).
Results
No result paragraph for this entry was found in the log.
The full record
EXPERIMENTS.md · lines 3603–3638
E66 — Single precision costs nothing here, and was being paid for anyway
Every MACE call in this project ran at float64 because that is what the documentation
suggests for geometry optimisation. The energy penalty for single precision had been
measured at 0.06 meV/atom on one fixed geometry, which is the easy case: a relaxation
follows forces down a surface for tens of steps, and a force error compounds into a
different final structure rather than a slightly different number.
Predicted before running - forces within 10 meV/A, energies within 2 meV/atom, volumes
within 0.2 per cent. Measured across three compositions, including HfNbTaTiZr, the largest
atomic size misfit in the design space:
forces (meV/A)
relaxed energy (meV/atom)
relaxed volume
steps
speed
MoNbTaW
0.02
-0.00
0.000%
30 / 30
1.51x
Ta.40 Mo.26 Nb.25 W.09
0.02
-0.00
0.000%
33 / 33
1.50x
HfNbTaTiZr
0.01
0.00
-0.000%
46 / 46
1.52x
Every prediction held by a factor of five hundred. The relaxations do not merely agree at
the end - they take the identical number of steps, so they follow the same path down
the same surface.
The result was checked before it was believed. Agreement that good is what a broken
comparison looks like, and the obvious failure would be both calculators sharing one model
that the second construction had converted in place. They do not: the two hold separate
models at torch.float64 and torch.float32, and building the second leaves the first
alone.
And the existing record survives the change. The off-lattice hull was built at float64,
so everything resting on it would need rebuilding if the two disagreed. Rebuilding four of
its phases at the new default - an element in bcc, one in hcp, and two Laves compounds -
reproduces the stored energies to 0.04 meV/atom at worst. Nothing needs redoing.
float32 is now the default in forager/compute.py, with FORAGER_DTYPE=float64 to restore
the old behaviour. Against a screening rung carrying 18 meV/atom and candidates separated
by 25, a hundredth of a meV is not a consideration, and the 1.5x is free.