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}