def count.grp

bend-parallel@0.1.0.0 · histogram.bend:299

import bend-parallel@0.1.0.0/histogram.bend as Histogram
import Base
import bend-parallel@0.1.0.0/scan.bend as Scan

299# Pass 2a over 2^r groups of 2^m rows by 2^min(d, kb) groups of columns,
300# then 2b; below 2^12 rows, 2b alone, over 2^d groups of one row.
301def count.grp(lo: Bool, +d: Nat, +k: U32, +kb: Nat, counts: Array<U32>, p: Two) -> Array<U32> & Bufs:
302  match lo:
303    case True{}:
304      Two{keys, table} = p
305      count.cols(d, 0n, Nat.min(d, kb), k, kb, keys, counts, table)
306    case False{}:
307      Two{keys, table} = p
308      +g = Nat.min(d, kb)
309      +r = Scan.half(d)
310      +m = Nat.sub(d, r)
311      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)

Used by (1)