code wiki / _hdl_build / nx_viz_array_gate.nx
nx_viz_array_gate.nx source
↩ module page · 48 lines · 1907 B
1// nx_viz_array_gate.nx -- REFEREE for the data-array layer. a=[5,2,9,1,3] -> min1 max9 sum20 mean4 extent[1,9].
2// GREEN iff all. Sovereign: nx_viz_array + nx_syscalls. license_tier: ORIGINAL
3import "nx_viz_array.nx"
4import "nx_syscalls.nx"
5import "nx_gate_verdict.nx"
6
7func g_w(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 }
8func g_row(name: *u8, ok: i64) -> i64 {
9 if ok == 1 { g_w(" PASS " as *u8) }
10 if ok != 1 { g_w(" FAIL " as *u8) }
11 g_w(name); g_w("\n" as *u8)
12 return ok
13}
14
15func main() -> i64 {
16 g_w("viz-array gate (d3-array: min/max/sum/mean/extent)\n" as *u8)
17 let a: *i64 = sys_mmap(128) as *i64
18 let ex: *i64 = sys_mmap(64) as *i64
19 a[0] = 5; a[1] = 2; a[2] = 9; a[3] = 1; a[4] = 3
20 var pass: i64 = 0
21
22 var t1: i64 = 0
23 if vd_min(a, 5) == 1 { t1 = 1 }
24 pass = pass + g_row("T1 min = 1\x00" as *u8, t1)
25 var t2: i64 = 0
26 if vd_max(a, 5) == 9 { t2 = 1 }
27 pass = pass + g_row("T2 max = 9\x00" as *u8, t2)
28 var t3: i64 = 0
29 if vd_sum(a, 5) == 20 { t3 = 1 }
30 pass = pass + g_row("T3 sum = 20\x00" as *u8, t3)
31 var t4: i64 = 0
32 if vd_mean(a, 5) == 4 { t4 = 1 }
33 pass = pass + g_row("T4 mean = 4\x00" as *u8, t4)
34 vd_extent(a, 5, ex)
35 var t5: i64 = 0
36 if ex[0] == 1 { if ex[1] == 9 { t5 = 1 } }
37 pass = pass + g_row("T5 extent = [1,9]\x00" as *u8, t5)
38
39 // MIGRATED onto nx_gate_verdict by nx_gate_dry_apply (D001, minimal form): every check
40 // row above is untouched, so the PASS/FAIL vector cannot change; only the hand-rolled
41 // verdict emission is replaced by the ONE shared base class. Proven by nx_gate_migrate verify.
42 let ctr__dry: *i64 = gv_ctr()
43 ctr__dry[0] = pass
44 ctr__dry[1] = 5
45 let rc__dry: i64 = gv_verdict("VIZ-ARRAY-GATE" as *u8, ctr__dry, "5/5 (auto-scale stats, bits-up)" as *u8)
46 sys_exit(rc__dry)
47 return rc__dry
48}