Files
sim-numerics/zenodo/README.md
T

78 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Root Finding by Similarity and Analogy — code, data and history
Code, data and full development history for the paper *Root Finding by Similarity and Analogy: A
Bracketing Method with a Data-Selected Decision Layer* (V. Sitnikov, 2026; manuscript, included in
`source/article/`). Everything behind the paper is here, under the Apache License 2.0: the method's
reference implementation, a compiled library of the proposed method A′, the benchmark harness, the
problem corpora, every results file, the records written before each run, the manuscript itself, and
the full development history.
## Contents
| path | what |
|---|---|
| `source/` | the repository at the commit the paper was built from: `simroot/` (the reference implementation of the base rule, A′ and every variant the paper measures), `lib/` (the source of the compiled library `simbracket`), the sweep scripts, corpora (`corpus_*.py`), diagnoses, the verifier `verify_article.py`, the tests, every results file (`sweep_*.json`, `results_*.txt`), the records written before the runs (`PREREG_*.md`, `POSTHOC_*.md`), the findings (`FINDINGS_*.md`) and the paper (`article/`) |
| `sim-numerics.bundle` | the full git history of that branch (`git clone sim-numerics.bundle`); the commits cited in the paper's Appendix D are in it |
| `wheels/` | `simbracket`, A′ as a compiled library (Python ≥ 3.10; Linux and Windows builds) |
| `requirements.txt`, `reproduce.sh` | the Python packages used, and the one-command reproduction |
| `SHA256SUMS` | checksums of every file in the archive |
## Requirements
**Linux x86_64 for reproducing the numbers.** The paper's numbers come from one Linux machine (Ubuntu
24.04, glibc 2.39, Python 3.12.3). The test functions call the platform's `libm`, whose last digit
differs between platforms; on Windows, TOMS 748 needs 2635 evaluations on the Alefeld–Potra–Shi set
instead of 2636, and two of the paper's fresh recomputations move by a few evaluations. Using the
method needs no particular platform.
## Reproduce
```bash
./reproduce.sh
```
creates a virtual environment, installs `requirements.txt` and the `simbracket` wheel, and in `source/`
runs
1. `python -u verify_article.py` — recomputes or re-reads every number stated in the paper (548) and
compares it with the value printed there; it ends with *every number stated in the paper matches the
sweep data*;
2. `python -m pytest tests/test_simbracket_equivalence.py` — the compiled library equals the reference
implementation bit for bit, point and evaluation count, on all 868 problems of the six corpora.
Any table can be recomputed from scratch with its sweep script; each script's docstring names the table
it produces (for example `python -u rescore_uniform.py` for the protocol tables, `python -u
sweep_fourth.py --fourth` for corpus 4, `python -u sweep_controls.py` and `python -u sweep_estimated.py`
for the controls). The full test suite is `python -m pytest tests`.
## Use A′ on your own problem
```python
from simbracket import find_root, evaluation_bound
x, nfev, converged = find_root(f, a, b, xtol=1e-12, maxfev=200)
# f(a) and f(b) of opposite signs; stops when the bracket is no wider than xtol or f(x) == 0;
# never more than evaluation_bound(a, b, xtol) = 2*ceil(log2(|b-a|/xtol)) + 3 evaluations
```
or, from source, `simroot.pure.pure_root` with the configuration named `APRIME` in `sweep_full.py`.
## The records and their order
`PREREG_*.md` were written, and committed, before the runs they describe; `POSTHOC_*.md` after, as
marked. Appendix D of the paper lists each record with its commit and the commit of its results;
`check_prereg_order.py` recomputes that table from the history in `sim-numerics.bundle`. The order is
attested by the author's git history, not by an external registry. Before publication the history was
rewritten to remove infrastructure details (a server address) and working notes not meant for
publication (a few files deleted; file names, comments and a few words in three advance records made
neutral, cited commit hashes mapped to the new commits; no rule, criterion or number of a record
changed); the commit hashes cited in the paper are those of the rewritten history in this archive.
## Citing
The archive: https://doi.org/10.5281/zenodo.22894337 (DOI 10.5281/zenodo.22894337). Cite this archive by its DOI.
## Licence
Apache License 2.0 (`LICENSE`); copyright Valeri Sitnikov (`NOTICE`).