nmarshall commited on
Commit
23ce463
·
1 Parent(s): d6146fc

gameplay: port statistic totals and ratios

Browse files
crates/urt-gameplay/src/bin/urt-lifecycle.rs CHANGED
@@ -197,6 +197,32 @@ fn run() -> Result<(), String> {
197
  }
198
  println!("{{\"changes\":[{}]}}", changes.join(","));
199
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
200
  _ => return Err("unsupported contract or arguments".into()),
201
  }
202
  Ok(())
 
197
  }
198
  println!("{{\"changes\":[{}]}}", changes.join(","));
199
  }
200
+ "divisor" if w.len() == 2 => {
201
+ println!(
202
+ "{{\"divisor\":{}}}",
203
+ urt_gameplay::stat_totals::divisor(w[0] as i32, w[1] as i32)
204
+ );
205
+ }
206
+ "totals" if w.len() == 76 => {
207
+ use urt_gameplay::stat_totals::{Counters, normalize, totals};
208
+ let v: Vec<i32> = w.iter().map(|v| *v as i32).collect();
209
+ let c = Counters {
210
+ first_legacy: v[..18].try_into().unwrap(),
211
+ second_legacy: v[18..36].try_into().unwrap(),
212
+ first_slots: v[36..56].try_into().unwrap(),
213
+ second_slots: v[56..].try_into().unwrap(),
214
+ };
215
+ let t = totals(&c);
216
+ let n = normalize(t);
217
+ println!(
218
+ "{{\"first\":{},\"second\":{},\"3080\":{},\"3084\":{},\"3088\":{}}}",
219
+ t.first,
220
+ t.second,
221
+ n.first as u32,
222
+ n.second as u32,
223
+ n.ratio.to_bits()
224
+ );
225
+ }
226
  _ => return Err("unsupported contract or arguments".into()),
227
  }
228
  Ok(())
crates/urt-gameplay/src/lib.rs CHANGED
@@ -151,3 +151,4 @@ pub mod mode10;
151
  pub mod protected;
152
  pub mod record_clear;
153
  pub mod score;
 
 
151
  pub mod protected;
152
  pub mod record_clear;
153
  pub mod score;
154
+ pub mod stat_totals;
crates/urt-gameplay/src/stat_totals.rs ADDED
@@ -0,0 +1,164 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! Source283085/283166 totals and279586 numeric ratio publication.
2
+ #[derive(Clone, Debug, PartialEq, Eq)]
3
+ pub struct Counters {
4
+ pub first_legacy: [i32; 18],
5
+ pub second_legacy: [i32; 18],
6
+ pub first_slots: [i32; 20],
7
+ pub second_slots: [i32; 20],
8
+ }
9
+ #[derive(Clone, Copy, Debug, PartialEq, Eq)]
10
+ pub struct Totals {
11
+ pub first: i32,
12
+ pub second: i32,
13
+ }
14
+ #[derive(Clone, Copy, Debug, PartialEq)]
15
+ pub struct Normalized {
16
+ pub first: i32,
17
+ pub second: i32,
18
+ pub ratio: f32,
19
+ }
20
+ pub fn totals(c: &Counters) -> Totals {
21
+ let first = c
22
+ .first_legacy
23
+ .iter()
24
+ .enumerate()
25
+ .filter(|(j, _)| *j != 13 && *j != 17)
26
+ .map(|(_, v)| *v)
27
+ .chain(c.first_slots.iter().copied())
28
+ .fold(0i32, i32::wrapping_add);
29
+ let second = c
30
+ .second_legacy
31
+ .iter()
32
+ .enumerate()
33
+ .filter(|(j, _)| *j != 17)
34
+ .map(|(_, v)| *v)
35
+ .chain(c.second_slots.iter().copied())
36
+ .fold(0i32, i32::wrapping_add);
37
+ Totals { first, second }
38
+ }
39
+ /// Equivalent divisor using Euclid rather than source's downward search.
40
+ /// Source returns1 for a zero input or a nonpositive signed maximum.
41
+ pub fn divisor(a: i32, b: i32) -> i32 {
42
+ if a == 0 || b == 0 || a.max(b) <= 0 {
43
+ return 1;
44
+ }
45
+ let (mut a, mut b) = (a.unsigned_abs(), b.unsigned_abs());
46
+ while b != 0 {
47
+ let r = a % b;
48
+ a = b;
49
+ b = r;
50
+ }
51
+ a as i32
52
+ }
53
+ pub fn normalize(t: Totals) -> Normalized {
54
+ let d = divisor(t.first, t.second);
55
+ Normalized {
56
+ first: t.first / d,
57
+ second: t.second / d,
58
+ ratio: if t.second == 0 {
59
+ 0.
60
+ } else {
61
+ t.first as f32 / t.second as f32
62
+ },
63
+ }
64
+ }
65
+ #[cfg(test)]
66
+ mod tests {
67
+ use super::*;
68
+ fn counters(v: i32) -> Counters {
69
+ Counters {
70
+ first_legacy: [v; 18],
71
+ second_legacy: [v; 18],
72
+ first_slots: [v; 20],
73
+ second_slots: [v; 20],
74
+ }
75
+ }
76
+ #[test]
77
+ fn all_included_counts_and_exclusions() {
78
+ assert_eq!(
79
+ totals(&counters(1)),
80
+ Totals {
81
+ first: 36,
82
+ second: 37
83
+ }
84
+ );
85
+ let mut c = counters(0);
86
+ c.first_legacy[13] = 99;
87
+ c.first_legacy[17] = 99;
88
+ c.second_legacy[17] = 99;
89
+ assert_eq!(
90
+ totals(&c),
91
+ Totals {
92
+ first: 0,
93
+ second: 0
94
+ }
95
+ );
96
+ c.first_slots[19] = 7;
97
+ c.second_slots[19] = 8;
98
+ assert_eq!(
99
+ totals(&c),
100
+ Totals {
101
+ first: 7,
102
+ second: 8
103
+ }
104
+ );
105
+ }
106
+ #[test]
107
+ fn wrapping_sums_preserve_source_words() {
108
+ assert_eq!(
109
+ totals(&counters(i32::MAX)),
110
+ Totals {
111
+ first: -36,
112
+ second: i32::MAX - 36
113
+ }
114
+ );
115
+ }
116
+ #[test]
117
+ fn signed_divisor_domain() {
118
+ for (a, b, d) in [
119
+ (-20, 20, 20),
120
+ (-2, -4, 1),
121
+ (0, 8, 1),
122
+ (12, 18, 6),
123
+ (i32::MIN, 1, 1),
124
+ ] {
125
+ assert_eq!(divisor(a, b), d);
126
+ }
127
+ }
128
+ #[test]
129
+ fn integer_reduction_and_float32_ratio() {
130
+ assert_eq!(
131
+ normalize(Totals {
132
+ first: -20,
133
+ second: 20
134
+ }),
135
+ Normalized {
136
+ first: -1,
137
+ second: 1,
138
+ ratio: -1.
139
+ }
140
+ );
141
+ assert_eq!(
142
+ normalize(Totals {
143
+ first: 7,
144
+ second: 0
145
+ }),
146
+ Normalized {
147
+ first: 7,
148
+ second: 0,
149
+ ratio: 0.
150
+ }
151
+ );
152
+ assert_eq!(
153
+ normalize(Totals {
154
+ first: 2,
155
+ second: 6
156
+ }),
157
+ Normalized {
158
+ first: 1,
159
+ second: 3,
160
+ ratio: 2f32 / 6f32
161
+ }
162
+ );
163
+ }
164
+ }
docs/ASSET_PIPELINE_TODO.md CHANGED
@@ -952,3 +952,6 @@ Research progress: RE-763 [report](research/QVM_RECIPIENT_PAIR.md); original ass
952
 
953
 
954
  Research progress: RE-764 [report](research/QVM_RANKING_SETUP.md); original assets unchanged.
 
 
 
 
952
 
953
 
954
  Research progress: RE-764 [report](research/QVM_RANKING_SETUP.md); original assets unchanged.
955
+
956
+
957
+ Research progress: RE-765 [report](research/RUST_STAT_TOTALS.md); original assets unchanged.
docs/FINDINGS.md CHANGED
@@ -1298,3 +1298,6 @@ RE-725–734 batch: [health, contact and Rust impulse findings](research/QVM_HEA
1298
 
1299
 
1300
  **RE-764 — Ranking setup counts active slots and sort boundary:** 5864 setup builds a scan-order connected list, distinguishes non-spectator/active/human counts and records the first two active slots before sorting. [Evidence](research/QVM_RANKING_SETUP.md).
 
 
 
 
1298
 
1299
 
1300
  **RE-764 — Ranking setup counts active slots and sort boundary:** 5864 setup builds a scan-order connected list, distinguishes non-spectator/active/human counts and records the first two active slots before sorting. [Evidence](research/QVM_RANKING_SETUP.md).
1301
+
1302
+
1303
+ **RE-765 — Rust counter totals divisor and normalized ratio primitives:** Rust totals and normalized ratios match80 total,28 ratio and38 signed-divisor source fixtures while retaining20 slots. [Evidence](research/RUST_STAT_TOTALS.md).
docs/PROVISIONAL_TODO.md CHANGED
@@ -1293,3 +1293,6 @@ Research progress: RE-763 [report](research/QVM_RECIPIENT_PAIR.md); full native/
1293
 
1294
 
1295
  Research progress: RE-764 [report](research/QVM_RANKING_SETUP.md); full native/platform/game scope remains open.
 
 
 
 
1293
 
1294
 
1295
  Research progress: RE-764 [report](research/QVM_RANKING_SETUP.md); full native/platform/game scope remains open.
1296
+
1297
+
1298
+ Research progress: RE-765 [report](research/RUST_STAT_TOTALS.md); full native/platform/game scope remains open.
docs/RESEARCH_LEDGER.md CHANGED
@@ -1476,3 +1476,8 @@ Additional RE-763 regression: `cargo xtask test-group recipient-single` passes6
1476
  ## 2026-10-21 — RE-764 Ranking setup counts active slots and sort boundary
1477
 
1478
  5864 setup builds a scan-order connected list, distinguishes non-spectator/active/human counts and records the first two active slots before sorting. Focused `cargo xtask test-group ranking-setup` passes (3 Python tests); selected reports regenerate twice byte-identically, with storage, links and whitespace guards. New report: 49546 bytes. Full-suite validation is deferred to the tenth batch commit. No original assets, Rust runtime or shared VM evaluator changed.
 
 
 
 
 
 
1476
  ## 2026-10-21 — RE-764 Ranking setup counts active slots and sort boundary
1477
 
1478
  5864 setup builds a scan-order connected list, distinguishes non-spectator/active/human counts and records the first two active slots before sorting. Focused `cargo xtask test-group ranking-setup` passes (3 Python tests); selected reports regenerate twice byte-identically, with storage, links and whitespace guards. New report: 49546 bytes. Full-suite validation is deferred to the tenth batch commit. No original assets, Rust runtime or shared VM evaluator changed.
1479
+
1480
+
1481
+ ## 2026-10-21 — RE-765 Rust counter totals divisor and normalized ratio primitives
1482
+
1483
+ Rust totals and normalized ratios match80 total,28 ratio and38 signed-divisor source fixtures while retaining20 slots. Focused `cargo xtask test-group gameplay` passes (25 Python tests); selected reports regenerate twice byte-identically, with storage, links and whitespace guards. New report: 32451 bytes. Full-suite validation is deferred to the tenth batch commit. Rust gameplay crate changed; focused gameplay regenerates eight parity contracts and scoped package tests. No workspace/full-suite run before commit ten.
docs/REVERSE_ENGINEERING_TODO.md CHANGED
@@ -1336,3 +1336,6 @@ Purpose: turn the supplied installation into an evidence-backed specification of
1336
 
1337
 
1338
  - [x] RE-764 Ranking setup counts active slots and sort boundary ([report](research/QVM_RANKING_SETUP.md)).
 
 
 
 
1336
 
1337
 
1338
  - [x] RE-764 Ranking setup counts active slots and sort boundary ([report](research/QVM_RANKING_SETUP.md)).
1339
+
1340
+
1341
+ - [x] RE-765 Rust counter totals divisor and normalized ratio primitives ([report](research/RUST_STAT_TOTALS.md)).
docs/research/README.md CHANGED
@@ -888,3 +888,6 @@ The extension collector adds five focused tests for native tail calls, command-r
888
 
889
 
890
  [RE-764: Ranking setup counts active slots and sort boundary](QVM_RANKING_SETUP.md).
 
 
 
 
888
 
889
 
890
  [RE-764: Ranking setup counts active slots and sort boundary](QVM_RANKING_SETUP.md).
891
+
892
+
893
+ [RE-765: Rust counter totals divisor and normalized ratio primitives](RUST_STAT_TOTALS.md).
docs/research/RUST_STAT_TOTALS.md ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ # Rust counter totals divisor and normalized ratio primitives
2
+
3
+ RE-765. Reproduce with `python3 scripts/analyze_rust_stat_totals.py`; validate with `cargo xtask test-group gameplay`. See the [machine report](rust-stat-totals.json).
4
+
5
+ Added explicit legacy/slot counter arrays, wrapping sums, signed divisor guards and source-order float32 ratio publication. Euclid preserves the source result while avoiding downward scans. Four Rust unit tests cover exclusions,20th slot, overflow, signed/zero divisor guards and ratio publication. Runtime counter ownership, publication integration and native/platform parity remain open.
6
+
7
+ No original executable/full VM/native world collision or rendering runs. Supplied callback/native responses and fixture domains remain explicit; complete macOS/Linux Rust/Bevy/Solari gameplay remains open.
docs/research/rust-health-impulse.json CHANGED
@@ -2985,7 +2985,7 @@
2985
  "exit_code": 2
2986
  }
2987
  ],
2988
- "rust_unit_tests": 30,
2989
  "source_report": "docs/research/qvm-health-impulse.json",
2990
  "source_report_sha256": "625fd8064004ea6dbdf398d51d0af844d9c635ff04c0a0790886dddb6ab81e71"
2991
  }
 
2985
  "exit_code": 2
2986
  }
2987
  ],
2988
+ "rust_unit_tests": 34,
2989
  "source_report": "docs/research/qvm-health-impulse.json",
2990
  "source_report_sha256": "625fd8064004ea6dbdf398d51d0af844d9c635ff04c0a0790886dddb6ab81e71"
2991
  }
docs/research/rust-stat-totals.json ADDED
@@ -0,0 +1,2045 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "divisors": [
3
+ {
4
+ "input": [
5
+ -2,
6
+ -3
7
+ ],
8
+ "rust": {
9
+ "divisor": 1
10
+ },
11
+ "source": 1
12
+ },
13
+ {
14
+ "input": [
15
+ -2,
16
+ 0
17
+ ],
18
+ "rust": {
19
+ "divisor": 1
20
+ },
21
+ "source": 1
22
+ },
23
+ {
24
+ "input": [
25
+ -2,
26
+ 1
27
+ ],
28
+ "rust": {
29
+ "divisor": 1
30
+ },
31
+ "source": 1
32
+ },
33
+ {
34
+ "input": [
35
+ -2,
36
+ 2
37
+ ],
38
+ "rust": {
39
+ "divisor": 2
40
+ },
41
+ "source": 2
42
+ },
43
+ {
44
+ "input": [
45
+ -2,
46
+ 18
47
+ ],
48
+ "rust": {
49
+ "divisor": 2
50
+ },
51
+ "source": 2
52
+ },
53
+ {
54
+ "input": [
55
+ -2,
56
+ 40
57
+ ],
58
+ "rust": {
59
+ "divisor": 2
60
+ },
61
+ "source": 2
62
+ },
63
+ {
64
+ "input": [
65
+ 0,
66
+ -3
67
+ ],
68
+ "rust": {
69
+ "divisor": 1
70
+ },
71
+ "source": 1
72
+ },
73
+ {
74
+ "input": [
75
+ 0,
76
+ 0
77
+ ],
78
+ "rust": {
79
+ "divisor": 1
80
+ },
81
+ "source": 1
82
+ },
83
+ {
84
+ "input": [
85
+ 0,
86
+ 1
87
+ ],
88
+ "rust": {
89
+ "divisor": 1
90
+ },
91
+ "source": 1
92
+ },
93
+ {
94
+ "input": [
95
+ 0,
96
+ 2
97
+ ],
98
+ "rust": {
99
+ "divisor": 1
100
+ },
101
+ "source": 1
102
+ },
103
+ {
104
+ "input": [
105
+ 0,
106
+ 18
107
+ ],
108
+ "rust": {
109
+ "divisor": 1
110
+ },
111
+ "source": 1
112
+ },
113
+ {
114
+ "input": [
115
+ 0,
116
+ 40
117
+ ],
118
+ "rust": {
119
+ "divisor": 1
120
+ },
121
+ "source": 1
122
+ },
123
+ {
124
+ "input": [
125
+ 1,
126
+ -3
127
+ ],
128
+ "rust": {
129
+ "divisor": 1
130
+ },
131
+ "source": 1
132
+ },
133
+ {
134
+ "input": [
135
+ 1,
136
+ 0
137
+ ],
138
+ "rust": {
139
+ "divisor": 1
140
+ },
141
+ "source": 1
142
+ },
143
+ {
144
+ "input": [
145
+ 1,
146
+ 1
147
+ ],
148
+ "rust": {
149
+ "divisor": 1
150
+ },
151
+ "source": 1
152
+ },
153
+ {
154
+ "input": [
155
+ 1,
156
+ 2
157
+ ],
158
+ "rust": {
159
+ "divisor": 1
160
+ },
161
+ "source": 1
162
+ },
163
+ {
164
+ "input": [
165
+ 1,
166
+ 18
167
+ ],
168
+ "rust": {
169
+ "divisor": 1
170
+ },
171
+ "source": 1
172
+ },
173
+ {
174
+ "input": [
175
+ 1,
176
+ 40
177
+ ],
178
+ "rust": {
179
+ "divisor": 1
180
+ },
181
+ "source": 1
182
+ },
183
+ {
184
+ "input": [
185
+ 2,
186
+ -3
187
+ ],
188
+ "rust": {
189
+ "divisor": 1
190
+ },
191
+ "source": 1
192
+ },
193
+ {
194
+ "input": [
195
+ 2,
196
+ 0
197
+ ],
198
+ "rust": {
199
+ "divisor": 1
200
+ },
201
+ "source": 1
202
+ },
203
+ {
204
+ "input": [
205
+ 2,
206
+ 1
207
+ ],
208
+ "rust": {
209
+ "divisor": 1
210
+ },
211
+ "source": 1
212
+ },
213
+ {
214
+ "input": [
215
+ 2,
216
+ 2
217
+ ],
218
+ "rust": {
219
+ "divisor": 2
220
+ },
221
+ "source": 2
222
+ },
223
+ {
224
+ "input": [
225
+ 2,
226
+ 18
227
+ ],
228
+ "rust": {
229
+ "divisor": 2
230
+ },
231
+ "source": 2
232
+ },
233
+ {
234
+ "input": [
235
+ 2,
236
+ 40
237
+ ],
238
+ "rust": {
239
+ "divisor": 2
240
+ },
241
+ "source": 2
242
+ },
243
+ {
244
+ "input": [
245
+ 12,
246
+ -3
247
+ ],
248
+ "rust": {
249
+ "divisor": 3
250
+ },
251
+ "source": 3
252
+ },
253
+ {
254
+ "input": [
255
+ 12,
256
+ 0
257
+ ],
258
+ "rust": {
259
+ "divisor": 1
260
+ },
261
+ "source": 1
262
+ },
263
+ {
264
+ "input": [
265
+ 12,
266
+ 1
267
+ ],
268
+ "rust": {
269
+ "divisor": 1
270
+ },
271
+ "source": 1
272
+ },
273
+ {
274
+ "input": [
275
+ 12,
276
+ 2
277
+ ],
278
+ "rust": {
279
+ "divisor": 2
280
+ },
281
+ "source": 2
282
+ },
283
+ {
284
+ "input": [
285
+ 12,
286
+ 18
287
+ ],
288
+ "rust": {
289
+ "divisor": 6
290
+ },
291
+ "source": 6
292
+ },
293
+ {
294
+ "input": [
295
+ 12,
296
+ 40
297
+ ],
298
+ "rust": {
299
+ "divisor": 4
300
+ },
301
+ "source": 4
302
+ },
303
+ {
304
+ "input": [
305
+ 30,
306
+ -3
307
+ ],
308
+ "rust": {
309
+ "divisor": 3
310
+ },
311
+ "source": 3
312
+ },
313
+ {
314
+ "input": [
315
+ 30,
316
+ 0
317
+ ],
318
+ "rust": {
319
+ "divisor": 1
320
+ },
321
+ "source": 1
322
+ },
323
+ {
324
+ "input": [
325
+ 30,
326
+ 1
327
+ ],
328
+ "rust": {
329
+ "divisor": 1
330
+ },
331
+ "source": 1
332
+ },
333
+ {
334
+ "input": [
335
+ 30,
336
+ 2
337
+ ],
338
+ "rust": {
339
+ "divisor": 2
340
+ },
341
+ "source": 2
342
+ },
343
+ {
344
+ "input": [
345
+ 30,
346
+ 18
347
+ ],
348
+ "rust": {
349
+ "divisor": 6
350
+ },
351
+ "source": 6
352
+ },
353
+ {
354
+ "input": [
355
+ 30,
356
+ 40
357
+ ],
358
+ "rust": {
359
+ "divisor": 10
360
+ },
361
+ "source": 10
362
+ },
363
+ {
364
+ "input": [
365
+ -2147483648,
366
+ 1
367
+ ],
368
+ "rust": {
369
+ "divisor": 1
370
+ },
371
+ "source": 1
372
+ },
373
+ {
374
+ "input": [
375
+ 2147483647,
376
+ 0
377
+ ],
378
+ "rust": {
379
+ "divisor": 1
380
+ },
381
+ "source": 1
382
+ }
383
+ ],
384
+ "limits": "Rust numeric parity for80 total,28 ratio and38 divisor source fixtures. Euclid replaces downward source search with the same signed guards.20 slots retained. Counter/runtime ownership, source huge-scan timing and native/platform parity remain open.",
385
+ "probes": [
386
+ {
387
+ "case": "bulk-0",
388
+ "rust": {
389
+ "3080": 0,
390
+ "3084": 0,
391
+ "3088": 0,
392
+ "first": 0,
393
+ "second": 0
394
+ },
395
+ "source": {
396
+ "first": 0,
397
+ "second": 0
398
+ }
399
+ },
400
+ {
401
+ "case": "bulk-1",
402
+ "rust": {
403
+ "3080": 36,
404
+ "3084": 37,
405
+ "3088": 1064899778,
406
+ "first": 36,
407
+ "second": 37
408
+ },
409
+ "source": {
410
+ "first": 36,
411
+ "second": 37
412
+ }
413
+ },
414
+ {
415
+ "case": "bulk-2147483647",
416
+ "rust": {
417
+ "3080": 4294967260,
418
+ "3084": 2147483611,
419
+ "3088": 2995781632,
420
+ "first": -36,
421
+ "second": 2147483611
422
+ },
423
+ "source": {
424
+ "first": -36,
425
+ "second": 2147483611
426
+ }
427
+ },
428
+ {
429
+ "case": "bulk-4294967295",
430
+ "rust": {
431
+ "3080": 4294967260,
432
+ "3084": 4294967259,
433
+ "3088": 1064899778,
434
+ "first": -36,
435
+ "second": -37
436
+ },
437
+ "source": {
438
+ "first": -36,
439
+ "second": -37
440
+ }
441
+ },
442
+ {
443
+ "case": "916",
444
+ "rust": {
445
+ "3080": 7,
446
+ "3084": 0,
447
+ "3088": 0,
448
+ "first": 7,
449
+ "second": 0
450
+ },
451
+ "source": {
452
+ "first": 7,
453
+ "second": 0
454
+ }
455
+ },
456
+ {
457
+ "case": "920",
458
+ "rust": {
459
+ "3080": 0,
460
+ "3084": 7,
461
+ "3088": 0,
462
+ "first": 0,
463
+ "second": 7
464
+ },
465
+ "source": {
466
+ "first": 0,
467
+ "second": 7
468
+ }
469
+ },
470
+ {
471
+ "case": "992",
472
+ "rust": {
473
+ "3080": 7,
474
+ "3084": 0,
475
+ "3088": 0,
476
+ "first": 7,
477
+ "second": 0
478
+ },
479
+ "source": {
480
+ "first": 7,
481
+ "second": 0
482
+ }
483
+ },
484
+ {
485
+ "case": "996",
486
+ "rust": {
487
+ "3080": 0,
488
+ "3084": 7,
489
+ "3088": 0,
490
+ "first": 0,
491
+ "second": 7
492
+ },
493
+ "source": {
494
+ "first": 0,
495
+ "second": 7
496
+ }
497
+ },
498
+ {
499
+ "case": "1068",
500
+ "rust": {
501
+ "3080": 7,
502
+ "3084": 0,
503
+ "3088": 0,
504
+ "first": 7,
505
+ "second": 0
506
+ },
507
+ "source": {
508
+ "first": 7,
509
+ "second": 0
510
+ }
511
+ },
512
+ {
513
+ "case": "1072",
514
+ "rust": {
515
+ "3080": 0,
516
+ "3084": 7,
517
+ "3088": 0,
518
+ "first": 0,
519
+ "second": 7
520
+ },
521
+ "source": {
522
+ "first": 0,
523
+ "second": 7
524
+ }
525
+ },
526
+ {
527
+ "case": "1144",
528
+ "rust": {
529
+ "3080": 7,
530
+ "3084": 0,
531
+ "3088": 0,
532
+ "first": 7,
533
+ "second": 0
534
+ },
535
+ "source": {
536
+ "first": 7,
537
+ "second": 0
538
+ }
539
+ },
540
+ {
541
+ "case": "1148",
542
+ "rust": {
543
+ "3080": 0,
544
+ "3084": 7,
545
+ "3088": 0,
546
+ "first": 0,
547
+ "second": 7
548
+ },
549
+ "source": {
550
+ "first": 0,
551
+ "second": 7
552
+ }
553
+ },
554
+ {
555
+ "case": "1220",
556
+ "rust": {
557
+ "3080": 7,
558
+ "3084": 0,
559
+ "3088": 0,
560
+ "first": 7,
561
+ "second": 0
562
+ },
563
+ "source": {
564
+ "first": 7,
565
+ "second": 0
566
+ }
567
+ },
568
+ {
569
+ "case": "1224",
570
+ "rust": {
571
+ "3080": 0,
572
+ "3084": 7,
573
+ "3088": 0,
574
+ "first": 0,
575
+ "second": 7
576
+ },
577
+ "source": {
578
+ "first": 0,
579
+ "second": 7
580
+ }
581
+ },
582
+ {
583
+ "case": "1296",
584
+ "rust": {
585
+ "3080": 7,
586
+ "3084": 0,
587
+ "3088": 0,
588
+ "first": 7,
589
+ "second": 0
590
+ },
591
+ "source": {
592
+ "first": 7,
593
+ "second": 0
594
+ }
595
+ },
596
+ {
597
+ "case": "1300",
598
+ "rust": {
599
+ "3080": 0,
600
+ "3084": 7,
601
+ "3088": 0,
602
+ "first": 0,
603
+ "second": 7
604
+ },
605
+ "source": {
606
+ "first": 0,
607
+ "second": 7
608
+ }
609
+ },
610
+ {
611
+ "case": "1372",
612
+ "rust": {
613
+ "3080": 7,
614
+ "3084": 0,
615
+ "3088": 0,
616
+ "first": 7,
617
+ "second": 0
618
+ },
619
+ "source": {
620
+ "first": 7,
621
+ "second": 0
622
+ }
623
+ },
624
+ {
625
+ "case": "1376",
626
+ "rust": {
627
+ "3080": 0,
628
+ "3084": 7,
629
+ "3088": 0,
630
+ "first": 0,
631
+ "second": 7
632
+ },
633
+ "source": {
634
+ "first": 0,
635
+ "second": 7
636
+ }
637
+ },
638
+ {
639
+ "case": "1448",
640
+ "rust": {
641
+ "3080": 7,
642
+ "3084": 0,
643
+ "3088": 0,
644
+ "first": 7,
645
+ "second": 0
646
+ },
647
+ "source": {
648
+ "first": 7,
649
+ "second": 0
650
+ }
651
+ },
652
+ {
653
+ "case": "1452",
654
+ "rust": {
655
+ "3080": 0,
656
+ "3084": 7,
657
+ "3088": 0,
658
+ "first": 0,
659
+ "second": 7
660
+ },
661
+ "source": {
662
+ "first": 0,
663
+ "second": 7
664
+ }
665
+ },
666
+ {
667
+ "case": "1524",
668
+ "rust": {
669
+ "3080": 7,
670
+ "3084": 0,
671
+ "3088": 0,
672
+ "first": 7,
673
+ "second": 0
674
+ },
675
+ "source": {
676
+ "first": 7,
677
+ "second": 0
678
+ }
679
+ },
680
+ {
681
+ "case": "1528",
682
+ "rust": {
683
+ "3080": 0,
684
+ "3084": 7,
685
+ "3088": 0,
686
+ "first": 0,
687
+ "second": 7
688
+ },
689
+ "source": {
690
+ "first": 0,
691
+ "second": 7
692
+ }
693
+ },
694
+ {
695
+ "case": "1600",
696
+ "rust": {
697
+ "3080": 7,
698
+ "3084": 0,
699
+ "3088": 0,
700
+ "first": 7,
701
+ "second": 0
702
+ },
703
+ "source": {
704
+ "first": 7,
705
+ "second": 0
706
+ }
707
+ },
708
+ {
709
+ "case": "1604",
710
+ "rust": {
711
+ "3080": 0,
712
+ "3084": 7,
713
+ "3088": 0,
714
+ "first": 0,
715
+ "second": 7
716
+ },
717
+ "source": {
718
+ "first": 0,
719
+ "second": 7
720
+ }
721
+ },
722
+ {
723
+ "case": "1676",
724
+ "rust": {
725
+ "3080": 7,
726
+ "3084": 0,
727
+ "3088": 0,
728
+ "first": 7,
729
+ "second": 0
730
+ },
731
+ "source": {
732
+ "first": 7,
733
+ "second": 0
734
+ }
735
+ },
736
+ {
737
+ "case": "1680",
738
+ "rust": {
739
+ "3080": 0,
740
+ "3084": 7,
741
+ "3088": 0,
742
+ "first": 0,
743
+ "second": 7
744
+ },
745
+ "source": {
746
+ "first": 0,
747
+ "second": 7
748
+ }
749
+ },
750
+ {
751
+ "case": "1752",
752
+ "rust": {
753
+ "3080": 7,
754
+ "3084": 0,
755
+ "3088": 0,
756
+ "first": 7,
757
+ "second": 0
758
+ },
759
+ "source": {
760
+ "first": 7,
761
+ "second": 0
762
+ }
763
+ },
764
+ {
765
+ "case": "1756",
766
+ "rust": {
767
+ "3080": 0,
768
+ "3084": 7,
769
+ "3088": 0,
770
+ "first": 0,
771
+ "second": 7
772
+ },
773
+ "source": {
774
+ "first": 0,
775
+ "second": 7
776
+ }
777
+ },
778
+ {
779
+ "case": "1828",
780
+ "rust": {
781
+ "3080": 7,
782
+ "3084": 0,
783
+ "3088": 0,
784
+ "first": 7,
785
+ "second": 0
786
+ },
787
+ "source": {
788
+ "first": 7,
789
+ "second": 0
790
+ }
791
+ },
792
+ {
793
+ "case": "1832",
794
+ "rust": {
795
+ "3080": 0,
796
+ "3084": 7,
797
+ "3088": 0,
798
+ "first": 0,
799
+ "second": 7
800
+ },
801
+ "source": {
802
+ "first": 0,
803
+ "second": 7
804
+ }
805
+ },
806
+ {
807
+ "case": "1904",
808
+ "rust": {
809
+ "3080": 7,
810
+ "3084": 0,
811
+ "3088": 0,
812
+ "first": 7,
813
+ "second": 0
814
+ },
815
+ "source": {
816
+ "first": 7,
817
+ "second": 0
818
+ }
819
+ },
820
+ {
821
+ "case": "1908",
822
+ "rust": {
823
+ "3080": 0,
824
+ "3084": 7,
825
+ "3088": 0,
826
+ "first": 0,
827
+ "second": 7
828
+ },
829
+ "source": {
830
+ "first": 0,
831
+ "second": 7
832
+ }
833
+ },
834
+ {
835
+ "case": "1980",
836
+ "rust": {
837
+ "3080": 7,
838
+ "3084": 0,
839
+ "3088": 0,
840
+ "first": 7,
841
+ "second": 0
842
+ },
843
+ "source": {
844
+ "first": 7,
845
+ "second": 0
846
+ }
847
+ },
848
+ {
849
+ "case": "1984",
850
+ "rust": {
851
+ "3080": 0,
852
+ "3084": 7,
853
+ "3088": 0,
854
+ "first": 0,
855
+ "second": 7
856
+ },
857
+ "source": {
858
+ "first": 0,
859
+ "second": 7
860
+ }
861
+ },
862
+ {
863
+ "case": "2056",
864
+ "rust": {
865
+ "3080": 7,
866
+ "3084": 0,
867
+ "3088": 0,
868
+ "first": 7,
869
+ "second": 0
870
+ },
871
+ "source": {
872
+ "first": 7,
873
+ "second": 0
874
+ }
875
+ },
876
+ {
877
+ "case": "2060",
878
+ "rust": {
879
+ "3080": 0,
880
+ "3084": 7,
881
+ "3088": 0,
882
+ "first": 0,
883
+ "second": 7
884
+ },
885
+ "source": {
886
+ "first": 0,
887
+ "second": 7
888
+ }
889
+ },
890
+ {
891
+ "case": "2132",
892
+ "rust": {
893
+ "3080": 7,
894
+ "3084": 0,
895
+ "3088": 0,
896
+ "first": 7,
897
+ "second": 0
898
+ },
899
+ "source": {
900
+ "first": 7,
901
+ "second": 0
902
+ }
903
+ },
904
+ {
905
+ "case": "2136",
906
+ "rust": {
907
+ "3080": 0,
908
+ "3084": 7,
909
+ "3088": 0,
910
+ "first": 0,
911
+ "second": 7
912
+ },
913
+ "source": {
914
+ "first": 0,
915
+ "second": 7
916
+ }
917
+ },
918
+ {
919
+ "case": "2208",
920
+ "rust": {
921
+ "3080": 7,
922
+ "3084": 0,
923
+ "3088": 0,
924
+ "first": 7,
925
+ "second": 0
926
+ },
927
+ "source": {
928
+ "first": 7,
929
+ "second": 0
930
+ }
931
+ },
932
+ {
933
+ "case": "2212",
934
+ "rust": {
935
+ "3080": 0,
936
+ "3084": 7,
937
+ "3088": 0,
938
+ "first": 0,
939
+ "second": 7
940
+ },
941
+ "source": {
942
+ "first": 0,
943
+ "second": 7
944
+ }
945
+ },
946
+ {
947
+ "case": "2284",
948
+ "rust": {
949
+ "3080": 7,
950
+ "3084": 0,
951
+ "3088": 0,
952
+ "first": 7,
953
+ "second": 0
954
+ },
955
+ "source": {
956
+ "first": 7,
957
+ "second": 0
958
+ }
959
+ },
960
+ {
961
+ "case": "2288",
962
+ "rust": {
963
+ "3080": 0,
964
+ "3084": 7,
965
+ "3088": 0,
966
+ "first": 0,
967
+ "second": 7
968
+ },
969
+ "source": {
970
+ "first": 0,
971
+ "second": 7
972
+ }
973
+ },
974
+ {
975
+ "case": "2360",
976
+ "rust": {
977
+ "3080": 7,
978
+ "3084": 0,
979
+ "3088": 0,
980
+ "first": 7,
981
+ "second": 0
982
+ },
983
+ "source": {
984
+ "first": 7,
985
+ "second": 0
986
+ }
987
+ },
988
+ {
989
+ "case": "2364",
990
+ "rust": {
991
+ "3080": 0,
992
+ "3084": 7,
993
+ "3088": 0,
994
+ "first": 0,
995
+ "second": 7
996
+ },
997
+ "source": {
998
+ "first": 0,
999
+ "second": 7
1000
+ }
1001
+ },
1002
+ {
1003
+ "case": "2376",
1004
+ "rust": {
1005
+ "3080": 7,
1006
+ "3084": 0,
1007
+ "3088": 0,
1008
+ "first": 7,
1009
+ "second": 0
1010
+ },
1011
+ "source": {
1012
+ "first": 7,
1013
+ "second": 0
1014
+ }
1015
+ },
1016
+ {
1017
+ "case": "2380",
1018
+ "rust": {
1019
+ "3080": 7,
1020
+ "3084": 0,
1021
+ "3088": 0,
1022
+ "first": 7,
1023
+ "second": 0
1024
+ },
1025
+ "source": {
1026
+ "first": 7,
1027
+ "second": 0
1028
+ }
1029
+ },
1030
+ {
1031
+ "case": "2384",
1032
+ "rust": {
1033
+ "3080": 7,
1034
+ "3084": 0,
1035
+ "3088": 0,
1036
+ "first": 7,
1037
+ "second": 0
1038
+ },
1039
+ "source": {
1040
+ "first": 7,
1041
+ "second": 0
1042
+ }
1043
+ },
1044
+ {
1045
+ "case": "2388",
1046
+ "rust": {
1047
+ "3080": 7,
1048
+ "3084": 0,
1049
+ "3088": 0,
1050
+ "first": 7,
1051
+ "second": 0
1052
+ },
1053
+ "source": {
1054
+ "first": 7,
1055
+ "second": 0
1056
+ }
1057
+ },
1058
+ {
1059
+ "case": "2392",
1060
+ "rust": {
1061
+ "3080": 7,
1062
+ "3084": 0,
1063
+ "3088": 0,
1064
+ "first": 7,
1065
+ "second": 0
1066
+ },
1067
+ "source": {
1068
+ "first": 7,
1069
+ "second": 0
1070
+ }
1071
+ },
1072
+ {
1073
+ "case": "2396",
1074
+ "rust": {
1075
+ "3080": 7,
1076
+ "3084": 0,
1077
+ "3088": 0,
1078
+ "first": 7,
1079
+ "second": 0
1080
+ },
1081
+ "source": {
1082
+ "first": 7,
1083
+ "second": 0
1084
+ }
1085
+ },
1086
+ {
1087
+ "case": "2400",
1088
+ "rust": {
1089
+ "3080": 7,
1090
+ "3084": 0,
1091
+ "3088": 0,
1092
+ "first": 7,
1093
+ "second": 0
1094
+ },
1095
+ "source": {
1096
+ "first": 7,
1097
+ "second": 0
1098
+ }
1099
+ },
1100
+ {
1101
+ "case": "2404",
1102
+ "rust": {
1103
+ "3080": 7,
1104
+ "3084": 0,
1105
+ "3088": 0,
1106
+ "first": 7,
1107
+ "second": 0
1108
+ },
1109
+ "source": {
1110
+ "first": 7,
1111
+ "second": 0
1112
+ }
1113
+ },
1114
+ {
1115
+ "case": "2408",
1116
+ "rust": {
1117
+ "3080": 7,
1118
+ "3084": 0,
1119
+ "3088": 0,
1120
+ "first": 7,
1121
+ "second": 0
1122
+ },
1123
+ "source": {
1124
+ "first": 7,
1125
+ "second": 0
1126
+ }
1127
+ },
1128
+ {
1129
+ "case": "2412",
1130
+ "rust": {
1131
+ "3080": 7,
1132
+ "3084": 0,
1133
+ "3088": 0,
1134
+ "first": 7,
1135
+ "second": 0
1136
+ },
1137
+ "source": {
1138
+ "first": 7,
1139
+ "second": 0
1140
+ }
1141
+ },
1142
+ {
1143
+ "case": "2416",
1144
+ "rust": {
1145
+ "3080": 7,
1146
+ "3084": 0,
1147
+ "3088": 0,
1148
+ "first": 7,
1149
+ "second": 0
1150
+ },
1151
+ "source": {
1152
+ "first": 7,
1153
+ "second": 0
1154
+ }
1155
+ },
1156
+ {
1157
+ "case": "2420",
1158
+ "rust": {
1159
+ "3080": 7,
1160
+ "3084": 0,
1161
+ "3088": 0,
1162
+ "first": 7,
1163
+ "second": 0
1164
+ },
1165
+ "source": {
1166
+ "first": 7,
1167
+ "second": 0
1168
+ }
1169
+ },
1170
+ {
1171
+ "case": "2424",
1172
+ "rust": {
1173
+ "3080": 7,
1174
+ "3084": 0,
1175
+ "3088": 0,
1176
+ "first": 7,
1177
+ "second": 0
1178
+ },
1179
+ "source": {
1180
+ "first": 7,
1181
+ "second": 0
1182
+ }
1183
+ },
1184
+ {
1185
+ "case": "2428",
1186
+ "rust": {
1187
+ "3080": 0,
1188
+ "3084": 0,
1189
+ "3088": 0,
1190
+ "first": 0,
1191
+ "second": 0
1192
+ },
1193
+ "source": {
1194
+ "first": 0,
1195
+ "second": 0
1196
+ }
1197
+ },
1198
+ {
1199
+ "case": "2432",
1200
+ "rust": {
1201
+ "3080": 7,
1202
+ "3084": 0,
1203
+ "3088": 0,
1204
+ "first": 7,
1205
+ "second": 0
1206
+ },
1207
+ "source": {
1208
+ "first": 7,
1209
+ "second": 0
1210
+ }
1211
+ },
1212
+ {
1213
+ "case": "2436",
1214
+ "rust": {
1215
+ "3080": 7,
1216
+ "3084": 0,
1217
+ "3088": 0,
1218
+ "first": 7,
1219
+ "second": 0
1220
+ },
1221
+ "source": {
1222
+ "first": 7,
1223
+ "second": 0
1224
+ }
1225
+ },
1226
+ {
1227
+ "case": "2440",
1228
+ "rust": {
1229
+ "3080": 7,
1230
+ "3084": 0,
1231
+ "3088": 0,
1232
+ "first": 7,
1233
+ "second": 0
1234
+ },
1235
+ "source": {
1236
+ "first": 7,
1237
+ "second": 0
1238
+ }
1239
+ },
1240
+ {
1241
+ "case": "2444",
1242
+ "rust": {
1243
+ "3080": 0,
1244
+ "3084": 0,
1245
+ "3088": 0,
1246
+ "first": 0,
1247
+ "second": 0
1248
+ },
1249
+ "source": {
1250
+ "first": 0,
1251
+ "second": 0
1252
+ }
1253
+ },
1254
+ {
1255
+ "case": "2448",
1256
+ "rust": {
1257
+ "3080": 0,
1258
+ "3084": 7,
1259
+ "3088": 0,
1260
+ "first": 0,
1261
+ "second": 7
1262
+ },
1263
+ "source": {
1264
+ "first": 0,
1265
+ "second": 7
1266
+ }
1267
+ },
1268
+ {
1269
+ "case": "2452",
1270
+ "rust": {
1271
+ "3080": 0,
1272
+ "3084": 7,
1273
+ "3088": 0,
1274
+ "first": 0,
1275
+ "second": 7
1276
+ },
1277
+ "source": {
1278
+ "first": 0,
1279
+ "second": 7
1280
+ }
1281
+ },
1282
+ {
1283
+ "case": "2456",
1284
+ "rust": {
1285
+ "3080": 0,
1286
+ "3084": 7,
1287
+ "3088": 0,
1288
+ "first": 0,
1289
+ "second": 7
1290
+ },
1291
+ "source": {
1292
+ "first": 0,
1293
+ "second": 7
1294
+ }
1295
+ },
1296
+ {
1297
+ "case": "2460",
1298
+ "rust": {
1299
+ "3080": 0,
1300
+ "3084": 7,
1301
+ "3088": 0,
1302
+ "first": 0,
1303
+ "second": 7
1304
+ },
1305
+ "source": {
1306
+ "first": 0,
1307
+ "second": 7
1308
+ }
1309
+ },
1310
+ {
1311
+ "case": "2464",
1312
+ "rust": {
1313
+ "3080": 0,
1314
+ "3084": 7,
1315
+ "3088": 0,
1316
+ "first": 0,
1317
+ "second": 7
1318
+ },
1319
+ "source": {
1320
+ "first": 0,
1321
+ "second": 7
1322
+ }
1323
+ },
1324
+ {
1325
+ "case": "2468",
1326
+ "rust": {
1327
+ "3080": 0,
1328
+ "3084": 7,
1329
+ "3088": 0,
1330
+ "first": 0,
1331
+ "second": 7
1332
+ },
1333
+ "source": {
1334
+ "first": 0,
1335
+ "second": 7
1336
+ }
1337
+ },
1338
+ {
1339
+ "case": "2472",
1340
+ "rust": {
1341
+ "3080": 0,
1342
+ "3084": 7,
1343
+ "3088": 0,
1344
+ "first": 0,
1345
+ "second": 7
1346
+ },
1347
+ "source": {
1348
+ "first": 0,
1349
+ "second": 7
1350
+ }
1351
+ },
1352
+ {
1353
+ "case": "2476",
1354
+ "rust": {
1355
+ "3080": 0,
1356
+ "3084": 7,
1357
+ "3088": 0,
1358
+ "first": 0,
1359
+ "second": 7
1360
+ },
1361
+ "source": {
1362
+ "first": 0,
1363
+ "second": 7
1364
+ }
1365
+ },
1366
+ {
1367
+ "case": "2480",
1368
+ "rust": {
1369
+ "3080": 0,
1370
+ "3084": 7,
1371
+ "3088": 0,
1372
+ "first": 0,
1373
+ "second": 7
1374
+ },
1375
+ "source": {
1376
+ "first": 0,
1377
+ "second": 7
1378
+ }
1379
+ },
1380
+ {
1381
+ "case": "2484",
1382
+ "rust": {
1383
+ "3080": 0,
1384
+ "3084": 7,
1385
+ "3088": 0,
1386
+ "first": 0,
1387
+ "second": 7
1388
+ },
1389
+ "source": {
1390
+ "first": 0,
1391
+ "second": 7
1392
+ }
1393
+ },
1394
+ {
1395
+ "case": "2488",
1396
+ "rust": {
1397
+ "3080": 0,
1398
+ "3084": 7,
1399
+ "3088": 0,
1400
+ "first": 0,
1401
+ "second": 7
1402
+ },
1403
+ "source": {
1404
+ "first": 0,
1405
+ "second": 7
1406
+ }
1407
+ },
1408
+ {
1409
+ "case": "2492",
1410
+ "rust": {
1411
+ "3080": 0,
1412
+ "3084": 7,
1413
+ "3088": 0,
1414
+ "first": 0,
1415
+ "second": 7
1416
+ },
1417
+ "source": {
1418
+ "first": 0,
1419
+ "second": 7
1420
+ }
1421
+ },
1422
+ {
1423
+ "case": "2496",
1424
+ "rust": {
1425
+ "3080": 0,
1426
+ "3084": 7,
1427
+ "3088": 0,
1428
+ "first": 0,
1429
+ "second": 7
1430
+ },
1431
+ "source": {
1432
+ "first": 0,
1433
+ "second": 7
1434
+ }
1435
+ },
1436
+ {
1437
+ "case": "2500",
1438
+ "rust": {
1439
+ "3080": 0,
1440
+ "3084": 7,
1441
+ "3088": 0,
1442
+ "first": 0,
1443
+ "second": 7
1444
+ },
1445
+ "source": {
1446
+ "first": 0,
1447
+ "second": 7
1448
+ }
1449
+ },
1450
+ {
1451
+ "case": "2504",
1452
+ "rust": {
1453
+ "3080": 0,
1454
+ "3084": 7,
1455
+ "3088": 0,
1456
+ "first": 0,
1457
+ "second": 7
1458
+ },
1459
+ "source": {
1460
+ "first": 0,
1461
+ "second": 7
1462
+ }
1463
+ },
1464
+ {
1465
+ "case": "2508",
1466
+ "rust": {
1467
+ "3080": 0,
1468
+ "3084": 7,
1469
+ "3088": 0,
1470
+ "first": 0,
1471
+ "second": 7
1472
+ },
1473
+ "source": {
1474
+ "first": 0,
1475
+ "second": 7
1476
+ }
1477
+ },
1478
+ {
1479
+ "case": "2512",
1480
+ "rust": {
1481
+ "3080": 0,
1482
+ "3084": 7,
1483
+ "3088": 0,
1484
+ "first": 0,
1485
+ "second": 7
1486
+ },
1487
+ "source": {
1488
+ "first": 0,
1489
+ "second": 7
1490
+ }
1491
+ },
1492
+ {
1493
+ "case": "2516",
1494
+ "rust": {
1495
+ "3080": 0,
1496
+ "3084": 0,
1497
+ "3088": 0,
1498
+ "first": 0,
1499
+ "second": 0
1500
+ },
1501
+ "source": {
1502
+ "first": 0,
1503
+ "second": 0
1504
+ }
1505
+ }
1506
+ ],
1507
+ "ratios": [
1508
+ {
1509
+ "input": {
1510
+ "bulk": false,
1511
+ "first": -1,
1512
+ "second": -1
1513
+ },
1514
+ "rust": {
1515
+ "3080": 4294967295,
1516
+ "3084": 4294967295,
1517
+ "3088": 1065353216,
1518
+ "first": -1,
1519
+ "second": -1
1520
+ },
1521
+ "source": {
1522
+ "3080": 4294967295,
1523
+ "3084": 4294967295,
1524
+ "3088": 1065353216
1525
+ }
1526
+ },
1527
+ {
1528
+ "input": {
1529
+ "bulk": false,
1530
+ "first": -1,
1531
+ "second": 0
1532
+ },
1533
+ "rust": {
1534
+ "3080": 4294967295,
1535
+ "3084": 0,
1536
+ "3088": 0,
1537
+ "first": -1,
1538
+ "second": 0
1539
+ },
1540
+ "source": {
1541
+ "3080": 4294967295,
1542
+ "3084": 0,
1543
+ "3088": 0
1544
+ }
1545
+ },
1546
+ {
1547
+ "input": {
1548
+ "bulk": false,
1549
+ "first": -1,
1550
+ "second": 1
1551
+ },
1552
+ "rust": {
1553
+ "3080": 4294967295,
1554
+ "3084": 1,
1555
+ "3088": 3212836864,
1556
+ "first": -1,
1557
+ "second": 1
1558
+ },
1559
+ "source": {
1560
+ "3080": 4294967295,
1561
+ "3084": 1,
1562
+ "3088": 3212836864
1563
+ }
1564
+ },
1565
+ {
1566
+ "input": {
1567
+ "bulk": false,
1568
+ "first": -1,
1569
+ "second": 3
1570
+ },
1571
+ "rust": {
1572
+ "3080": 4294967295,
1573
+ "3084": 3,
1574
+ "3088": 3198855851,
1575
+ "first": -1,
1576
+ "second": 3
1577
+ },
1578
+ "source": {
1579
+ "3080": 4294967295,
1580
+ "3084": 3,
1581
+ "3088": 3198855851
1582
+ }
1583
+ },
1584
+ {
1585
+ "input": {
1586
+ "bulk": false,
1587
+ "first": -1,
1588
+ "second": 6
1589
+ },
1590
+ "rust": {
1591
+ "3080": 4294967295,
1592
+ "3084": 6,
1593
+ "3088": 3190467243,
1594
+ "first": -1,
1595
+ "second": 6
1596
+ },
1597
+ "source": {
1598
+ "3080": 4294967295,
1599
+ "3084": 6,
1600
+ "3088": 3190467243
1601
+ }
1602
+ },
1603
+ {
1604
+ "input": {
1605
+ "bulk": false,
1606
+ "first": 0,
1607
+ "second": -1
1608
+ },
1609
+ "rust": {
1610
+ "3080": 0,
1611
+ "3084": 4294967295,
1612
+ "3088": 2147483648,
1613
+ "first": 0,
1614
+ "second": -1
1615
+ },
1616
+ "source": {
1617
+ "3080": 0,
1618
+ "3084": 4294967295,
1619
+ "3088": 2147483648
1620
+ }
1621
+ },
1622
+ {
1623
+ "input": {
1624
+ "bulk": false,
1625
+ "first": 0,
1626
+ "second": 0
1627
+ },
1628
+ "rust": {
1629
+ "3080": 0,
1630
+ "3084": 0,
1631
+ "3088": 0,
1632
+ "first": 0,
1633
+ "second": 0
1634
+ },
1635
+ "source": {
1636
+ "3080": 0,
1637
+ "3084": 0,
1638
+ "3088": 0
1639
+ }
1640
+ },
1641
+ {
1642
+ "input": {
1643
+ "bulk": false,
1644
+ "first": 0,
1645
+ "second": 1
1646
+ },
1647
+ "rust": {
1648
+ "3080": 0,
1649
+ "3084": 1,
1650
+ "3088": 0,
1651
+ "first": 0,
1652
+ "second": 1
1653
+ },
1654
+ "source": {
1655
+ "3080": 0,
1656
+ "3084": 1,
1657
+ "3088": 0
1658
+ }
1659
+ },
1660
+ {
1661
+ "input": {
1662
+ "bulk": false,
1663
+ "first": 0,
1664
+ "second": 3
1665
+ },
1666
+ "rust": {
1667
+ "3080": 0,
1668
+ "3084": 3,
1669
+ "3088": 0,
1670
+ "first": 0,
1671
+ "second": 3
1672
+ },
1673
+ "source": {
1674
+ "3080": 0,
1675
+ "3084": 3,
1676
+ "3088": 0
1677
+ }
1678
+ },
1679
+ {
1680
+ "input": {
1681
+ "bulk": false,
1682
+ "first": 0,
1683
+ "second": 6
1684
+ },
1685
+ "rust": {
1686
+ "3080": 0,
1687
+ "3084": 6,
1688
+ "3088": 0,
1689
+ "first": 0,
1690
+ "second": 6
1691
+ },
1692
+ "source": {
1693
+ "3080": 0,
1694
+ "3084": 6,
1695
+ "3088": 0
1696
+ }
1697
+ },
1698
+ {
1699
+ "input": {
1700
+ "bulk": false,
1701
+ "first": 1,
1702
+ "second": -1
1703
+ },
1704
+ "rust": {
1705
+ "3080": 1,
1706
+ "3084": 4294967295,
1707
+ "3088": 3212836864,
1708
+ "first": 1,
1709
+ "second": -1
1710
+ },
1711
+ "source": {
1712
+ "3080": 1,
1713
+ "3084": 4294967295,
1714
+ "3088": 3212836864
1715
+ }
1716
+ },
1717
+ {
1718
+ "input": {
1719
+ "bulk": false,
1720
+ "first": 1,
1721
+ "second": 0
1722
+ },
1723
+ "rust": {
1724
+ "3080": 1,
1725
+ "3084": 0,
1726
+ "3088": 0,
1727
+ "first": 1,
1728
+ "second": 0
1729
+ },
1730
+ "source": {
1731
+ "3080": 1,
1732
+ "3084": 0,
1733
+ "3088": 0
1734
+ }
1735
+ },
1736
+ {
1737
+ "input": {
1738
+ "bulk": false,
1739
+ "first": 1,
1740
+ "second": 1
1741
+ },
1742
+ "rust": {
1743
+ "3080": 1,
1744
+ "3084": 1,
1745
+ "3088": 1065353216,
1746
+ "first": 1,
1747
+ "second": 1
1748
+ },
1749
+ "source": {
1750
+ "3080": 1,
1751
+ "3084": 1,
1752
+ "3088": 1065353216
1753
+ }
1754
+ },
1755
+ {
1756
+ "input": {
1757
+ "bulk": false,
1758
+ "first": 1,
1759
+ "second": 3
1760
+ },
1761
+ "rust": {
1762
+ "3080": 1,
1763
+ "3084": 3,
1764
+ "3088": 1051372203,
1765
+ "first": 1,
1766
+ "second": 3
1767
+ },
1768
+ "source": {
1769
+ "3080": 1,
1770
+ "3084": 3,
1771
+ "3088": 1051372203
1772
+ }
1773
+ },
1774
+ {
1775
+ "input": {
1776
+ "bulk": false,
1777
+ "first": 1,
1778
+ "second": 6
1779
+ },
1780
+ "rust": {
1781
+ "3080": 1,
1782
+ "3084": 6,
1783
+ "3088": 1042983595,
1784
+ "first": 1,
1785
+ "second": 6
1786
+ },
1787
+ "source": {
1788
+ "3080": 1,
1789
+ "3084": 6,
1790
+ "3088": 1042983595
1791
+ }
1792
+ },
1793
+ {
1794
+ "input": {
1795
+ "bulk": false,
1796
+ "first": 2,
1797
+ "second": -1
1798
+ },
1799
+ "rust": {
1800
+ "3080": 2,
1801
+ "3084": 4294967295,
1802
+ "3088": 3221225472,
1803
+ "first": 2,
1804
+ "second": -1
1805
+ },
1806
+ "source": {
1807
+ "3080": 2,
1808
+ "3084": 4294967295,
1809
+ "3088": 3221225472
1810
+ }
1811
+ },
1812
+ {
1813
+ "input": {
1814
+ "bulk": false,
1815
+ "first": 2,
1816
+ "second": 0
1817
+ },
1818
+ "rust": {
1819
+ "3080": 2,
1820
+ "3084": 0,
1821
+ "3088": 0,
1822
+ "first": 2,
1823
+ "second": 0
1824
+ },
1825
+ "source": {
1826
+ "3080": 2,
1827
+ "3084": 0,
1828
+ "3088": 0
1829
+ }
1830
+ },
1831
+ {
1832
+ "input": {
1833
+ "bulk": false,
1834
+ "first": 2,
1835
+ "second": 1
1836
+ },
1837
+ "rust": {
1838
+ "3080": 2,
1839
+ "3084": 1,
1840
+ "3088": 1073741824,
1841
+ "first": 2,
1842
+ "second": 1
1843
+ },
1844
+ "source": {
1845
+ "3080": 2,
1846
+ "3084": 1,
1847
+ "3088": 1073741824
1848
+ }
1849
+ },
1850
+ {
1851
+ "input": {
1852
+ "bulk": false,
1853
+ "first": 2,
1854
+ "second": 3
1855
+ },
1856
+ "rust": {
1857
+ "3080": 2,
1858
+ "3084": 3,
1859
+ "3088": 1059760811,
1860
+ "first": 2,
1861
+ "second": 3
1862
+ },
1863
+ "source": {
1864
+ "3080": 2,
1865
+ "3084": 3,
1866
+ "3088": 1059760811
1867
+ }
1868
+ },
1869
+ {
1870
+ "input": {
1871
+ "bulk": false,
1872
+ "first": 2,
1873
+ "second": 6
1874
+ },
1875
+ "rust": {
1876
+ "3080": 1,
1877
+ "3084": 3,
1878
+ "3088": 1051372203,
1879
+ "first": 2,
1880
+ "second": 6
1881
+ },
1882
+ "source": {
1883
+ "3080": 1,
1884
+ "3084": 3,
1885
+ "3088": 1051372203
1886
+ }
1887
+ },
1888
+ {
1889
+ "input": {
1890
+ "bulk": false,
1891
+ "first": 7,
1892
+ "second": -1
1893
+ },
1894
+ "rust": {
1895
+ "3080": 7,
1896
+ "3084": 4294967295,
1897
+ "3088": 3235905536,
1898
+ "first": 7,
1899
+ "second": -1
1900
+ },
1901
+ "source": {
1902
+ "3080": 7,
1903
+ "3084": 4294967295,
1904
+ "3088": 3235905536
1905
+ }
1906
+ },
1907
+ {
1908
+ "input": {
1909
+ "bulk": false,
1910
+ "first": 7,
1911
+ "second": 0
1912
+ },
1913
+ "rust": {
1914
+ "3080": 7,
1915
+ "3084": 0,
1916
+ "3088": 0,
1917
+ "first": 7,
1918
+ "second": 0
1919
+ },
1920
+ "source": {
1921
+ "3080": 7,
1922
+ "3084": 0,
1923
+ "3088": 0
1924
+ }
1925
+ },
1926
+ {
1927
+ "input": {
1928
+ "bulk": false,
1929
+ "first": 7,
1930
+ "second": 1
1931
+ },
1932
+ "rust": {
1933
+ "3080": 7,
1934
+ "3084": 1,
1935
+ "3088": 1088421888,
1936
+ "first": 7,
1937
+ "second": 1
1938
+ },
1939
+ "source": {
1940
+ "3080": 7,
1941
+ "3084": 1,
1942
+ "3088": 1088421888
1943
+ }
1944
+ },
1945
+ {
1946
+ "input": {
1947
+ "bulk": false,
1948
+ "first": 7,
1949
+ "second": 3
1950
+ },
1951
+ "rust": {
1952
+ "3080": 7,
1953
+ "3084": 3,
1954
+ "3088": 1075139925,
1955
+ "first": 7,
1956
+ "second": 3
1957
+ },
1958
+ "source": {
1959
+ "3080": 7,
1960
+ "3084": 3,
1961
+ "3088": 1075139925
1962
+ }
1963
+ },
1964
+ {
1965
+ "input": {
1966
+ "bulk": false,
1967
+ "first": 7,
1968
+ "second": 6
1969
+ },
1970
+ "rust": {
1971
+ "3080": 7,
1972
+ "3084": 6,
1973
+ "3088": 1066751317,
1974
+ "first": 7,
1975
+ "second": 6
1976
+ },
1977
+ "source": {
1978
+ "3080": 7,
1979
+ "3084": 6,
1980
+ "3088": 1066751317
1981
+ }
1982
+ },
1983
+ {
1984
+ "input": {
1985
+ "bulk": true,
1986
+ "first": 1,
1987
+ "second": 1
1988
+ },
1989
+ "rust": {
1990
+ "3080": 1,
1991
+ "3084": 1,
1992
+ "3088": 1065353216,
1993
+ "first": 20,
1994
+ "second": 20
1995
+ },
1996
+ "source": {
1997
+ "3080": 1,
1998
+ "3084": 1,
1999
+ "3088": 1065353216
2000
+ }
2001
+ },
2002
+ {
2003
+ "input": {
2004
+ "bulk": true,
2005
+ "first": 3,
2006
+ "second": 6
2007
+ },
2008
+ "rust": {
2009
+ "3080": 1,
2010
+ "3084": 2,
2011
+ "3088": 1056964608,
2012
+ "first": 60,
2013
+ "second": 120
2014
+ },
2015
+ "source": {
2016
+ "3080": 1,
2017
+ "3084": 2,
2018
+ "3088": 1056964608
2019
+ }
2020
+ },
2021
+ {
2022
+ "input": {
2023
+ "bulk": true,
2024
+ "first": -1,
2025
+ "second": 1
2026
+ },
2027
+ "rust": {
2028
+ "3080": 4294967295,
2029
+ "3084": 1,
2030
+ "3088": 3212836864,
2031
+ "first": -20,
2032
+ "second": 20
2033
+ },
2034
+ "source": {
2035
+ "3080": 4294967295,
2036
+ "3084": 1,
2037
+ "3088": 3212836864
2038
+ }
2039
+ }
2040
+ ],
2041
+ "source_reports": {
2042
+ "docs/research/qvm-stat-ratios.json": "bb99ec521a366db8ea6daf572034feb307e579e6ff85d5683db21cdf5618a463",
2043
+ "docs/research/qvm-stat-totals.json": "e491d41257ebf7bb100ea9939ff555c67d8bb32b58558ff5be98273757e56c95"
2044
+ }
2045
+ }
scripts/analyze_rust_stat_totals.py ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python3
2
+ """Rust totals, signed divisor and normalized ratios against source fixtures."""
3
+ import hashlib,json
4
+ from pathlib import Path
5
+ from rust_lifecycle_support import binary,result
6
+ from qvm_stat_totals_support import FIRST_LEGACY,SECOND_LEGACY,FIRST_SLOTS,SECOND_SLOTS
7
+ from analyze_qvm import write_json
8
+
9
+ def args(c):return [c[str(o)] for o in FIRST_LEGACY+SECOND_LEGACY+FIRST_SLOTS+SECOND_SLOTS]
10
+
11
+ def main():
12
+ b=binary();p=Path('docs/research/qvm-stat-totals.json');raw=p.read_bytes();r=Path('docs/research/qvm-stat-ratios.json');data=r.read_bytes();source=json.loads(data)
13
+ rows=[{'case':q['case'],'source':{'first':q['first'],'second':q['second']},'rust':result(b,'totals',args(q['counters']))} for q in json.loads(raw)['probes']]
14
+ ratios=[{'input':q['input'],'source':q['final'],'rust':result(b,'totals',args(q['counters']))} for q in source['probes']]
15
+ ds=[{'input':[q['first'],q['second']],'source':q['divisor'],'rust':result(b,'divisor',[q['first'],q['second']])} for q in source['divisor_probes']]
16
+ write_json(Path('docs/research/rust-stat-totals.json'),{'source_reports':{str(p):hashlib.sha256(raw).hexdigest(),str(r):hashlib.sha256(data).hexdigest()},'probes':rows,'ratios':ratios,'divisors':ds,'limits':'Rust numeric parity for80 total,28 ratio and38 divisor source fixtures. Euclid replaces downward source search with the same signed guards.20 slots retained. Counter/runtime ownership, source huge-scan timing and native/platform parity remain open.'})
17
+ if __name__=='__main__':main()
scripts/test_rust_stat_totals.py ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import hashlib,json,unittest
2
+ from pathlib import Path
3
+ from test_qvm_stat_ratios import divisor,normalized
4
+ class RustStatTotalsTests(unittest.TestCase):
5
+ @classmethod
6
+ def setUpClass(cls):cls.r=json.loads(Path('docs/research/rust-stat-totals.json').read_text())
7
+ def test_all_source_totals_and_independent_normalization(self):
8
+ self.assertEqual(len(self.r['probes']),80)
9
+ for p in self.r['probes']:
10
+ r=p['rust'];self.assertEqual({k:r[k] for k in ['first','second']},p['source']);self.assertEqual({k:r[k] for k in ['3080','3084','3088']},normalized(r['first'],r['second']))
11
+ def test_source_divisors_and_ratio_words(self):
12
+ self.assertEqual(len(self.r['ratios']),28);self.assertEqual(len(self.r['divisors']),38)
13
+ for p in self.r['ratios']:self.assertEqual({k:p['rust'][k] for k in ['3080','3084','3088']},p['source'])
14
+ for p in self.r['divisors']:self.assertEqual(p['rust']['divisor'],p['source']);self.assertEqual(p['source'],divisor(*p['input']))
15
+ def test_source_identity(self):
16
+ for path,sha in self.r['source_reports'].items():self.assertEqual(hashlib.sha256(Path(path).read_bytes()).hexdigest(),sha)
17
+ if __name__=='__main__':unittest.main()
xtask/checks.tsv CHANGED
@@ -1293,3 +1293,13 @@ group recipient-pair scripts/analyze_qvm_recipient_pair.py
1293
  report scripts/analyze_qvm_ranking_setup.py docs/research/qvm-ranking-setup.json
1294
  edge docs/research/qvm-ranking-setup.json scripts/test_qvm_ranking_setup.py
1295
  group ranking-setup scripts/analyze_qvm_ranking_setup.py
 
 
 
 
 
 
 
 
 
 
 
1293
  report scripts/analyze_qvm_ranking_setup.py docs/research/qvm-ranking-setup.json
1294
  edge docs/research/qvm-ranking-setup.json scripts/test_qvm_ranking_setup.py
1295
  group ranking-setup scripts/analyze_qvm_ranking_setup.py
1296
+ edge Cargo.toml scripts/analyze_rust_stat_totals.py
1297
+ edge Cargo.lock scripts/analyze_rust_stat_totals.py
1298
+ edge crates/urt-gameplay/Cargo.toml scripts/analyze_rust_stat_totals.py
1299
+ edge crates/urt-gameplay/src/lib.rs scripts/analyze_rust_stat_totals.py
1300
+ edge crates/urt-gameplay/src/stat_totals.rs scripts/analyze_rust_stat_totals.py
1301
+ edge crates/urt-gameplay/src/bin/urt-lifecycle.rs scripts/analyze_rust_stat_totals.py
1302
+ edge crates/urt-gameplay/src/stat_totals.rs scripts/analyze_rust_health_impulse.py
1303
+ group gameplay scripts/analyze_rust_stat_totals.py
1304
+ report scripts/analyze_rust_stat_totals.py docs/research/rust-stat-totals.json
1305
+ edge docs/research/rust-stat-totals.json scripts/test_rust_stat_totals.py