From 0589d63cc5f0c9cb8f41b3ad154046f10693e5ba Mon Sep 17 00:00:00 2001 From: dzaima Date: Thu, 29 Dec 2022 22:57:52 +0200 Subject: [PATCH] =?UTF-8?q?fast=20v=CB=99=CB=98arr,=20fix=20arr=CB=98arr?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/builtins/md1.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/builtins/md1.c b/src/builtins/md1.c index 9a206a88..786d5212 100644 --- a/src/builtins/md1.c +++ b/src/builtins/md1.c @@ -318,13 +318,24 @@ B cell_c1(Md1D* d, B x) { B f = d->f; B xf = getFillR(x); if (!noFill(xf)) return shift_cells(xf, x, TI(x,elType), rtid); } + if (v(f)->type == t_md1D) { + Md1D* fd = c(Md1D,f); + u8 rtid = fd->m1->flags-1; + if (rtid == n_const) { f=fd->f; goto const_f; } + } } } else if (!isMd(f)) { + const_f: usz cam = SH(x)[0]; decG(x); B fv = inc(f); - if (!isAtm(fv)) fv = m_unit(fv); - return C2(shape, m_f64(cam), fv); + if (isAtm(fv)) return C2(shape, m_f64(cam), fv); + usz vr = RNK(fv); + f64* shp; B sh = m_f64arrv(&shp, vr+1); + shp[0] = cam; + usz* fsh = SH(fv); + PLAINLOOP for (usz i = 0; i < vr; i++) shp[i+1] = fsh[i]; + return C2(shape, sh, fv); } usz cam = SH(x)[0];