allBit cleanup in cells.c
This commit is contained in:
parent
1eee4d7450
commit
b2bfa06a4c
@ -335,16 +335,16 @@ static NOINLINE B shift_cells(B f, B x, usz cam, usz csz, u8 e, u8 rtid) { // »
|
|||||||
return mut_fcd(r, x);
|
return mut_fcd(r, x);
|
||||||
}
|
}
|
||||||
|
|
||||||
static B allBit(bool b, usz n) {
|
static Arr* allBit(bool b, usz n) {
|
||||||
return taga(arr_shVec(b ? allOnes(n) : allZeroes(n)));
|
return b ? allOnes(n) : allZeroes(n);
|
||||||
}
|
}
|
||||||
static NOINLINE Arr* match_cells(bool ne, B w, B x, ur wr, ur xr, ur k, usz len) {
|
static NOINLINE Arr* match_cells(bool ne, B w, B x, ur wr, ur xr, ur k, usz len) {
|
||||||
usz* wsh = SH(w);
|
usz* wsh = SH(w);
|
||||||
if (wr!=xr || (wr>k && !eqShPart(wsh+k, SH(x)+k, wr-k))) {
|
if (wr!=xr || (wr>k && !eqShPart(wsh+k, SH(x)+k, wr-k))) {
|
||||||
return a(allBit(ne, len));
|
return allBit(ne, len);
|
||||||
}
|
}
|
||||||
usz csz = shProd(wsh, k, wr);
|
usz csz = shProd(wsh, k, wr);
|
||||||
if (csz==0) return a(allBit(!ne, len));
|
if (csz==0) return allBit(!ne, len);
|
||||||
u8 we = TI(w,elType);
|
u8 we = TI(w,elType);
|
||||||
u8 xe = TI(x,elType);
|
u8 xe = TI(x,elType);
|
||||||
if (we>el_c32 || xe>el_c32) return NULL;
|
if (we>el_c32 || xe>el_c32) return NULL;
|
||||||
@ -530,7 +530,7 @@ B for_cells_c1(B f, u32 xr, u32 cr, u32 k, B x, u32 chr) { // F⎉cr x; array x,
|
|||||||
usz l = xsh[k];
|
usz l = xsh[k];
|
||||||
if (l <= 1) {
|
if (l <= 1) {
|
||||||
usz ia = l*cam;
|
usz ia = l*cam;
|
||||||
Arr* r = rtid==n_memberOf? allOnes(ia) : allZeroes(ia);
|
Arr* r = allBit(rtid==n_memberOf, ia);
|
||||||
usz* rsh = arr_shAlloc(r, k+1);
|
usz* rsh = arr_shAlloc(r, k+1);
|
||||||
shcpy(rsh, xsh, k+1);
|
shcpy(rsh, xsh, k+1);
|
||||||
decG(x); return taga(r);
|
decG(x); return taga(r);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user