def run.tots

bend-parallel@0.1.0.0 · sort.bend:369

import bend-parallel@0.1.0.0/sort.bend as Sort
import Base
import bend-parallel@0.1.0.0/scan.bend as Scan
import bend-parallel@0.1.0.0/histogram.bend as Hist

369# Pass 2b, after 2a (t): over the 2^h groups' last rows.
370def run.tots(+d: Nat, +e: Nat, +kb: Nat, +k: U32, ks: Array<U32>, pm: Array<U32>, cs: Array<U32>, os: Array<U32>, t: Array<U32>) -> Array<U32> & Bufs:
371  +g = Nat.min(d, kb)
372  +h = Scan.half(d)
373  +m = Nat.sub(d, h)
374  run.scan(False{}, d, e, kb, k, ks, pm, sums(g, True{}, 0, Nat.sub(kb, g), k, U32.shln((U32.shln(1, m) - 1 : U32), kb),
375    U32.shln(1, Nat.add(m, kb)), U32.to_nat((U32.shln(1, h) - 1 : U32)), Array.fork(U32, t),
376    Array.fork(U32, Hist.fit.eq(kb, Array.size(U32, cs))),
377    Array.fork(U32, Hist.fit.eq(kb, Array.size(U32, os)))))

Uses (18)

Used by (1)