From 3408db320c73ddcb57761f55bcd9a2f963bdbd08 Mon Sep 17 00:00:00 2001 From: dzaima Date: Thu, 29 Dec 2022 22:20:29 +0200 Subject: [PATCH] =?UTF-8?q?fast=20num=E2=86=91=CB=98=F0=9D=95=A9=20&=20num?= =?UTF-8?q?=E2=86=93=CB=98=F0=9D=95=A9=20for=202=E2=89=A4=3D=F0=9D=95=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/builtins/md1.c | 4 ++++ src/builtins/sfns.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/builtins/md1.c b/src/builtins/md1.c index e918a8e9..8b59ac23 100644 --- a/src/builtins/md1.c +++ b/src/builtins/md1.c @@ -335,6 +335,8 @@ B cell_c1(Md1D* d, B x) { B f = d->f; 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; ur wr = isAtm(w)? 0 : RNK(w); 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); } 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) M_HARR(r, cam); diff --git a/src/builtins/sfns.c b/src/builtins/sfns.c index e0e9789b..f50fb4ce 100644 --- a/src/builtins/sfns.c +++ b/src/builtins/sfns.c @@ -444,7 +444,7 @@ B drop_c1(B t, B x) { return affixes(x, 1); } extern B rt_take, rt_drop; B take_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? "↑" : "↓") if (!isArr(w)) goto nonint; ur wr = RNK(w);