From dea063cb7b271228f81e6789df577177e644d566 Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Thu, 23 Mar 2023 22:02:00 -0400 Subject: [PATCH] =?UTF-8?q?Easy=20optimizations:=20(1-=CB=9C=3D?= =?UTF-8?q?=F0=9D=95=A9)=E2=8D=89=F0=9D=95=A9=20to=20=E2=8D=89=F0=9D=95=A9?= =?UTF-8?q?=20and=20detect=20trailing=20unchanged=20axes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/builtins/transpose.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/builtins/transpose.c b/src/builtins/transpose.c index f6f8ce50..e1e04e81 100644 --- a/src/builtins/transpose.c +++ b/src/builtins/transpose.c @@ -190,6 +190,7 @@ B transp_c2(B t, B w, B x) { if (isAtm(w)) { usz a=o2s(w); if (a>=xr) thrF("ā‰: Axis %s does not exist (%i≔=š•©)", a, xr); + if (a==xr-1) { TFREE(p); return C1(transp, x); } p[0] = a; } else { SGetU(w) @@ -242,7 +243,8 @@ B transp_c2(B t, B w, B x) { // Number of axes that move ur ar = max+1+dup; - if (ar == 1) { r = x; goto ret; } + if (!dup) while (ar>1 && p[ar-1]==ar-1) ar--; // Unmoved trailing + if (ar <= 1) { r = x; goto ret; } // Add up stride for each axis TALLOC(u64, st, rr); for (usz j=0; j