fast num↑˘𝕩 & num↓˘𝕩 for 2≤=𝕩
This commit is contained in:
parent
f6f0c12935
commit
3408db320c
@ -335,6 +335,8 @@ B cell_c1(Md1D* d, B x) { B f = d->f;
|
|||||||
return bqn_merge(HARR_FV(r));
|
return bqn_merge(HARR_FV(r));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
B takedrop_highrank(bool take, B w, B x);
|
||||||
|
|
||||||
B cell_c2(Md1D* d, B w, B x) { B f = d->f;
|
B cell_c2(Md1D* d, B w, B x) { B f = d->f;
|
||||||
ur wr = isAtm(w)? 0 : RNK(w);
|
ur wr = isAtm(w)? 0 : RNK(w);
|
||||||
ur xr = isAtm(x)? 0 : RNK(x);
|
ur xr = isAtm(x)? 0 : RNK(x);
|
||||||
@ -352,6 +354,8 @@ B cell_c2(Md1D* d, B w, B x) { B f = d->f;
|
|||||||
if (isArr(w)) { B w0=w; w = IGet(w,0); decG(w0); }
|
if (isArr(w)) { B w0=w; w = IGet(w,0); decG(w0); }
|
||||||
return shift_cells(w, x, el_or(TI(x,elType), selfElType(w)), rtid);
|
return shift_cells(w, x, el_or(TI(x,elType), selfElType(w)), rtid);
|
||||||
}
|
}
|
||||||
|
if (rtid==n_take && xr>1 && isF64(w)) return takedrop_highrank(1, m_hVec2(m_f64(SH(x)[0]), w), x);
|
||||||
|
if (rtid==n_drop && xr>1 && isF64(w)) return takedrop_highrank(0, m_hVec2(m_f64(0), w), x);
|
||||||
}
|
}
|
||||||
S_SLICES(x)
|
S_SLICES(x)
|
||||||
M_HARR(r, cam);
|
M_HARR(r, cam);
|
||||||
|
|||||||
@ -444,7 +444,7 @@ B drop_c1(B t, B x) { return affixes(x, 1); }
|
|||||||
extern B rt_take, rt_drop;
|
extern B rt_take, rt_drop;
|
||||||
B take_c2(B, B, B);
|
B take_c2(B, B, B);
|
||||||
B drop_c2(B, B, B);
|
B drop_c2(B, B, B);
|
||||||
static NOINLINE B takedrop_highrank(bool take, B w, B x) {
|
NOINLINE B takedrop_highrank(bool take, B w, B x) {
|
||||||
#define SYMB (take? "↑" : "↓")
|
#define SYMB (take? "↑" : "↓")
|
||||||
if (!isArr(w)) goto nonint;
|
if (!isArr(w)) goto nonint;
|
||||||
ur wr = RNK(w);
|
ur wr = RNK(w);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user