e74517c2fb8052db5123ee0520ea488c52d7372c
The posterior is integrated on j = (i + 1/2) * dj, so sqrt(j) and log(j) each split into a per-reflection factor and a term that depends only on i: sqrt(j) = sqrt(dj) * sqrt(i + 1/2) and log(j) = log(dj) + log(i + 1/2). The i-dependent halves are the same for every reflection and every intensity, so they are tabulated once for the run rather than recomputed at each of the 400 grid points. The exponential in the second pass is left alone, but a point more than 37 below the peak carries a weight under 1e-16 and cannot move a normalised sum of doubles, so it is skipped instead of exponentiated - and the posterior is sharply peaked, so most of the grid is skipped. Finally the Wilson prior and the centric flag belong to the reflection rather than to one of its three intensities, so the two symmetry lookups are made once and shared instead of three times over. None of this changes the arithmetic: on five datasets spanning the corpus's speed range the space group, the unique-reflection count, R_meas and CC1/2 are identical to the digit. Measured over those five, each run twice and the two binaries interleaved so machine load cannot favour one arm: 771.2 s to 730.7 s, 5.3 % of total wall, between 3.2 % and 7.8 % per dataset and in the same direction on all five. The work removed is largest where the run merges most - the quadrature runs on every weak intensity of every merge, and a large cell at high resolution reaches a few million of them. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Jungfraujoch
Application to receive data from the PSI JUNGFRAU and EIGER detectors.
All documentation is now placed in docs/ subdirectory and for the current version hosted on Jungfraujoch Read The Docs page.
Languages
C++
77.8%
HTML
6.7%
C
5.3%
TypeScript
3.8%
Cuda
2.1%
Other
4.2%