From 472e542ebd64e9547f5f69215b377abff32a418c Mon Sep 17 00:00:00 2001 From: dzaima Date: Tue, 17 Jan 2023 04:45:36 +0200 Subject: [PATCH] =?UTF-8?q?O(1)=20=E2=8D=89=F0=9D=95=A9=20when=20it=20does?= =?UTF-8?q?n't=20reorder=20elements?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/builtins/sfns.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/builtins/sfns.c b/src/builtins/sfns.c index 686b9637..ed754766 100644 --- a/src/builtins/sfns.c +++ b/src/builtins/sfns.c @@ -1257,7 +1257,17 @@ B transp_c1(B t, B x) { usz ia = IA(x); usz* xsh = SH(x); usz h = xsh[0]; + if (ia==0 || h==1) { + no_reorder:; + Arr* r = cpyWithShape(x); + ShArr* sh = m_shArr(xr); + shcpy(sh->a, xsh+1, xr-1); + sh->a[xr-1] = h; + arr_shReplace(r, xr, sh); + return taga(r); + } usz w = xsh[1] * shProd(xsh, 2, xr); + if (w==1) goto no_reorder; Arr* r; usz xi = 0;