code wiki / _hdl_build / nx_viz_array.nx
nx_viz_array.nx source
↩ module page · 32 lines · 1076 B
1// nx_viz_array.nx -- the DATA-ARRAY layer of the sovereign Nishi viz library (the d3-array core, bits-up).
2// Stats every real chart needs to AUTO-SCALE: min / max / sum / mean / extent. Pure integer. Closes data-array.
3// license_tier: ORIGINAL
4import "nx_syscalls.nx"
5
6func vd_min(a: *i64, n: i64) -> i64 {
7 if n <= 0 { return 0 }
8 var m: i64 = a[0]; var i: i64 = 1
9 while i < n { if a[i] < m { m = a[i] } i = i + 1 }
10 return m
11}
12func vd_max(a: *i64, n: i64) -> i64 {
13 if n <= 0 { return 0 }
14 var m: i64 = a[0]; var i: i64 = 1
15 while i < n { if a[i] > m { m = a[i] } i = i + 1 }
16 return m
17}
18func vd_sum(a: *i64, n: i64) -> i64 {
19 var s: i64 = 0; var i: i64 = 0
20 while i < n { s = s + a[i]; i = i + 1 }
21 return s
22}
23func vd_mean(a: *i64, n: i64) -> i64 {
24 if n <= 0 { return 0 }
25 return vd_sum(a, n) / n
26}
27// extent -> out[0]=min, out[1]=max (the d3.extent pair scales consume directly).
28func vd_extent(a: *i64, n: i64, out: *i64) -> i64 {
29 out[0] = vd_min(a, n); out[1] = vd_max(a, n)
30 return n
31}
32func main() -> i64 { return 0 }