def blocks3
bend-ml-tensor-fork@0.1.6.0 · main.bend:73
import bend-ml-tensor-fork@0.1.6.0/main.bend as BendMlTensorFork
import Base
73def blocks3(~E: Data, ~A: Type, ~B: Type, ~C: Type, ~f: @+e: E -> @+i0: U32 -> @+cnt: Nat -> B3<A, B, C> -> B3<A, B, C>, +e: E, d: Nat, +i0: U32, +cnt: Nat, pa: Array<A> & Array<A>, pb: Array<B> & Array<B>, pc: Array<C> & Array<C>) -> B3<A, B, C>:
74 match d pa pb pc:
75 case 0n Tuple{a, a2} Tuple{b, b2} Tuple{c, c2}:
76 f(e, i0, cnt, B3{a, b, c})
77 case 1n++q Tuple{a, a2} Tuple{b, b2} Tuple{c, c2}:
78 l r = blocks3(~E, ~A, ~B, ~C, ~f, e, q, i0, Nat.div(cnt, 2n), Array.fork(A, a), Array.fork(B, b), Array.fork(C, c)) blocks3(~E, ~A, ~B, ~C, ~f, e, q, (i0 + U32.from_nat(Nat.div(cnt, 2n)) : U32), Nat.sub(cnt, Nat.div(cnt, 2n)), Array.fork(A, a2), Array.fork(B, b2), Array.fork(C, c2))
79 join3(A, B, C, l, r)
80
81@unsafe