mlab-rng-polar
The groupant beside mlab/src/rng.rs in the Mova repository: what the code computes, what it never does, how to go back from its outputs, its invariants, cost and checks.
Facts
Implementation material. A Mova code model describes this code at one source revision: partial models, finite checks and their stated scope. It is not a reviewed general exposition, and its labels are shown as written, never raised.
Components
| component | label | where |
|---|---|---|
| approximant | partial | approximant |
| ast | partial | ../syntax.json |
| cost | symbolic source derived | invariant |
| descriptant | present | descriptant |
| invariant | partial | invariant |
| tests | partial bounded parent evidence | tests |
Obernants
The typed relations around the forward model: the behaviour complement (what the code never does), the reverse reconstruction (every input compatible with an output) and specialised views.
| id | type | label | where |
|---|---|---|---|
behavior_complement | behavior_complement | partial source derived model | behavior_complement |
reverse_reconstruction | reverse_reconstruction | partial source derived model | reverse_reconstruction |
rejection_domain | rejection_domain | partial source derived model | rejection_domain |
cache_transport | cache_transport | partial source derived model | cache_transport |
branch_relation | branch_relation | partial source derived model | branch_relation |
resource_cost | resource_cost | partial source derived model | resource_cost |
Model text
descriptant
mlab-rng-polar
Normal takes spare first; otherwise samples u,v in [-1,1), rejects s<=0 or s>=1, emits u*sqrt(-2ln(s)/s), caches v times same scale.
Epoch 2026-10-31: isolated source-bound fragment over bytes [1433,1911); includes no claim beyond this relation. Source hash dccb613f518f32218a910c4eca3ad31df44347dd38b90d431833558e995a2046.
approximant
polar: forward relation
Normal takes spare first; otherwise samples u,v in [-1,1), rejects s<=0 or s>=1, emits u*sqrt(-2ln(s)/s), caches v times same scale.
Domain: All u64 seeds; IEEE f64 libm operations. Cross-platform transcendental bit identity is not proved.
Executable surrogate gap: no measured cheaper implementation with a useful scoped metric is supplied. Categorical/error/effect relations are exact obligations, not percent losses. Future numeric caps only1/2/5/10%.
invariant
polar: invariant and cost
s=0 and s=1 rejected; finite accepted s gives finite multiplier for this discrete generator.
Two consecutive accepted normals share one polar radius; cloning preserves spare and future stream.
Scope-specific cost: O(1) cached branch; each rejected pair costs two uniform draws. Expected O(1), unbounded worst-case loop.
models
behavior_complement
Cached branch excludes any state advance; rejected points exclude emission.
reverse_reconstruction
Observed cached z admits any unchanged four-word state paired with spare=Some(z); fresh z admits many accepted (u,v) and prior rejection histories.
rejection_domain
s=0 and s=1 rejected; finite accepted s gives finite multiplier for this discrete generator.
cache_transport
Two consecutive accepted normals share one polar radius; cloning preserves spare and future stream.
branch_relation
Normal takes spare first; otherwise samples u,v in [-1,1), rejects s<=0 or s>=1, emits u*sqrt(-2ln(s)/s), caches v times same scale.
resource_cost
O(1) cached branch; each rejected pair costs two uniform draws. Expected O(1), unbounded worst-case loop.
tests
Evidence boundary
See ../tests.md for the actual selected source test and mutant. These tests sample the file, not every fragment branch. Cached branch excludes any state advance; rejected points exclude emission. Other branches here are source-derived and unexecuted unless the parent test explicitly calls them.
This page in Markdown โ https://md.groupants.elamur.ai/free/en/mova/mlab/src/rng.rs.groupant/polar.groupant/