code wiki / _hdl_build / nx_eng_repro_measure_gate.nx
nx_eng_repro_measure_gate.nx source
↩ module page · 40 lines · 1400 B
1// EMITTED by nx_engineer_reproduce -- applies measured-exceed (margin, liar-killed). license_tier: ORIGINAL
2import "nx_syscalls.nx"
3func main() -> i64 {
4 let oldc: *i64 = sys_mmap(24) as *i64
5 let newc: *i64 = sys_mmap(24) as *i64
6 let sc: *i64 = sys_mmap(72) as *i64
7 sc[0]=2; sc[1]=9; sc[2]=1; sc[3]=7; sc[4]=3; sc[5]=4; sc[6]=1; sc[7]=2; sc[8]=8
8 let gt: *i64 = sys_mmap(24) as *i64
9 gt[0]=1; gt[1]=0; gt[2]=2
10 var i: i64 = 0
11 while i < 3 {
12 var bi: i64 = 0; var bv: i64 = sc[i*3]; var j: i64 = 1
13 while j < 3 { if sc[i*3+j] > bv { bv = sc[i*3+j]; bi = j } j = j + 1 }
14 oldc[i] = 0
15 if gt[i] == 0 { oldc[i] = 1 }
16 newc[i] = 0
17 if bi == gt[i] { newc[i] = 1 }
18 i = i + 1
19 }
20 var impr: i64 = 0; var regr: i64 = 0
21 i = 0
22 while i < 3 {
23 if oldc[i] == 0 { if newc[i] == 1 { impr = impr + 1 } }
24 if oldc[i] == 1 { if newc[i] == 0 { regr = regr + 1 } }
25 i = i + 1
26 }
27 let margin: i64 = impr - regr
28 var im2: i64 = 0; var rg2: i64 = 0
29 i = 0
30 while i < 3 {
31 var nv: i64 = newc[i]
32 if i == 0 { nv = 0 }
33 if oldc[i] == 0 { if nv == 1 { im2 = im2 + 1 } }
34 if oldc[i] == 1 { if nv == 0 { rg2 = rg2 + 1 } }
35 i = i + 1
36 }
37 let margin2: i64 = im2 - rg2
38 if margin > 0 { if margin2 < margin { sys_exit(0); return 0 } }
39 sys_exit(1); return 1
40}