move interleave_cells to cells.c
This commit is contained in:
parent
884d61476f
commit
51ab5db2c8
@ -23,7 +23,18 @@ B scan_rows_bit(u8, B x, usz m);
|
|||||||
B takedrop_highrank(bool take, B w, B x);
|
B takedrop_highrank(bool take, B w, B x);
|
||||||
B rotate_highrank(bool inv, B w, B x);
|
B rotate_highrank(bool inv, B w, B x);
|
||||||
|
|
||||||
B interleave_cells(B w, B x, ur k); // from transpose.c
|
Arr* join_cells(B w, B x, ur k); // from transpose.c
|
||||||
|
|
||||||
|
NOINLINE B interleave_cells(B w, B x, ur k) { // consumes w,x; interleave arrays, 𝕨 ≍⎉(-xk) 𝕩; assumes equal-shape args
|
||||||
|
ux xr = RNK(x);
|
||||||
|
if (xr==0) return C2(join, w, x);
|
||||||
|
ShArr* rsh = m_shArr(xr+1); // TODO handle leak if join_cells fails
|
||||||
|
usz* xsh = SH(x);
|
||||||
|
shcpy(rsh->a, xsh, k);
|
||||||
|
rsh->a[k] = 2;
|
||||||
|
shcpy(rsh->a+k+1, xsh+k, xr-k);
|
||||||
|
return taga(arr_shSetUG(join_cells(w, x, k), xr+1, rsh));
|
||||||
|
}
|
||||||
|
|
||||||
// from select.c:
|
// from select.c:
|
||||||
B select_rows_B(B x, ux csz, ux cam, B inds);
|
B select_rows_B(B x, ux csz, ux cam, B inds);
|
||||||
|
|||||||
@ -121,7 +121,7 @@ Arr* join_cells(B w, B x, ur k) { // consumes w,x; join k-cells, 𝕨 ∾○⥊
|
|||||||
|
|
||||||
Arr *r;
|
Arr *r;
|
||||||
u8 xlw = elwBitLog(re);
|
u8 xlw = elwBitLog(re);
|
||||||
usz n = shProd(SH(w), 0, k);
|
usz n = shProd(SH(w), 0, k); (void)n;
|
||||||
usz wcsz = shProd(SH(w), k, RNK(w));
|
usz wcsz = shProd(SH(w), k, RNK(w));
|
||||||
usz xcsz = shProd(SH(x), k, RNK(x));
|
usz xcsz = shProd(SH(x), k, RNK(x));
|
||||||
usz ia = IA(w)+IA(x);
|
usz ia = IA(w)+IA(x);
|
||||||
@ -172,17 +172,6 @@ Arr* join_cells(B w, B x, ur k) { // consumes w,x; join k-cells, 𝕨 ∾○⥊
|
|||||||
|
|
||||||
B join_c2(B, B, B);
|
B join_c2(B, B, B);
|
||||||
|
|
||||||
B interleave_cells(B w, B x, ur k) { // consumes w,x; interleave arrays, 𝕨 ≍⎉(-xk) 𝕩; assumes equal-shape args
|
|
||||||
ux xr = RNK(x);
|
|
||||||
if (xr==0) return C2(join, w, x);
|
|
||||||
ShArr* rsh = m_shArr(xr+1); // TODO handle leak if join_cells fails
|
|
||||||
usz* xsh = SH(x);
|
|
||||||
shcpy(rsh->a, xsh, k);
|
|
||||||
rsh->a[k] = 2;
|
|
||||||
shcpy(rsh->a+k+1, xsh+k, xr-k);
|
|
||||||
return taga(arr_shSetUG(join_cells(w, x, k), xr+1, rsh));
|
|
||||||
}
|
|
||||||
|
|
||||||
static void transpose_move(void* rv, void* xv, u8 xe, usz w, usz h) {
|
static void transpose_move(void* rv, void* xv, u8 xe, usz w, usz h) {
|
||||||
assert(xe!=el_bit); assert(xe!=el_B);
|
assert(xe!=el_bit); assert(xe!=el_B);
|
||||||
transposeFns[elwByteLog(xe)](rv, xv, w, h, w, h);
|
transposeFns[elwByteLog(xe)](rv, xv, w, h, w, h);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user