Histogram.count.grp: def of bend-parallel@0.1.0.0 Import: import bend-parallel@0.1.0.0/histogram.bend as Histogram Lines 299-311 of bend-parallel@0.1.0.0/histogram.bend: https://jend.leeeet.dev/read.txt?path=bend-parallel@0.1.0.0/histogram.bend&start_line=299&end_line=311 import Base import bend-parallel@0.1.0.0/scan.bend as Scan # Pass 2a over 2^r groups of 2^m rows by 2^min(d, kb) groups of columns, # then 2b; below 2^12 rows, 2b alone, over 2^d groups of one row. def count.grp(lo: Bool, +d: Nat, +k: U32, +kb: Nat, counts: Array, p: Two) -> Array & Bufs: match lo: case True{}: Two{keys, table} = p count.cols(d, 0n, Nat.min(d, kb), k, kb, keys, counts, table) case False{}: Two{keys, table} = p +g = Nat.min(d, kb) +r = Scan.half(d) +m = Nat.sub(d, r) count.cols(r, m, g, k, kb, keys, counts, grp(Nat.add(r, g), False{}, 0, g, Nat.sub(kb, g), m, kb, k, Array.fork(U32, table))) Uses (14): https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Array https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Array.fork https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Bool https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Nat https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Nat.add https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Nat.min https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Nat.sub https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Pair https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32 https://jend.leeeet.dev/definition.txt?path=bend-parallel@0.1.0.0/histogram.bend&name=Bufs https://jend.leeeet.dev/definition.txt?path=bend-parallel@0.1.0.0/histogram.bend&name=Two https://jend.leeeet.dev/definition.txt?path=bend-parallel@0.1.0.0/histogram.bend&name=count.cols https://jend.leeeet.dev/definition.txt?path=bend-parallel@0.1.0.0/histogram.bend&name=grp https://jend.leeeet.dev/definition.txt?path=bend-parallel@0.1.0.0/scan.bend&name=half