def bases

bend-parallel@0.1.0.0 · sort.bend:212

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

212# Pass 2c's forks, shaped as pass 2a's (Hist.grp), with two handles each
213# to the table and the offsets. Lane i reads the offsets and reads and
214# writes only its group's rows in its columns.
215def bases(+d: Nat, +i: U32, +gc: Nat, +w: Nat, +m: Nat, +kb: Nat, +k: U32, ft: Array<U32> & Array<U32>, fo: Array<U32> & Array<U32>) -> Hist.Two:
216  match d:
217    case 0n:
218      (t, t2) = ft
219      (os, os2) = fo
220      Hist.two.rejoin(t2, os2, base.leaf(i, gc, w, m, kb, k, Hist.Two{t, os}))
221    case 1n+p:
222      (t0, t1) = ft
223      (o0, o1) = fo
224      +j = (i * 2 : U32)
225      l r = bases(p, j, gc, w, m, kb, k, Array.fork(U32, t0), Array.fork(U32, o0))
226        bases(p, (j + 1 : U32), gc, w, m, kb, k, Array.fork(U32, t1), Array.fork(U32, o1))
227      Hist.two.join(l, r)

Uses (12)

Used by (1)