From 606a3fe987a4b562892d40690c0152bbc3700973 Mon Sep 17 00:00:00 2001 From: Mike Gerwitz Date: Tue, 26 Jan 2021 14:24:13 -0500 Subject: [PATCH] m1v*s0 optimization --- src/current/compiler/js.xsl | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/src/current/compiler/js.xsl b/src/current/compiler/js.xsl index 24e51e65..05a0fdd5 100644 --- a/src/current/compiler/js.xsl +++ b/src/current/compiler/js.xsl @@ -693,17 +693,18 @@ - 0 and $ns = 0 and empty( $matrices[ not( @value or @anyOf or c:* ) ] ) and empty( $vectors[ not( @value or @anyOf or c:* ) ] )"> - - + + @@ -806,6 +807,8 @@ + @@ -875,7 +878,7 @@ - + @@ -1722,8 +1725,8 @@ return Math.round(x * p) / p; } - // one matrix, one vector, universal quantification - function m1v1u(m, v) + // apply vector to matrix + function vmu(m, v) { const result = m.map((mv, i) => (mv.length ? mv : [0]).map(ms => ms & v[i])); @@ -1733,9 +1736,7 @@ return result; } - - // one matrix, one vector, existential quantification - function m1v1e(m, v) + function vme(m, v) { const result = m.map((mv, i) => (mv.length ? mv : [0]).map(ms => ms | v[i])); @@ -1813,7 +1814,8 @@ function M(vs, f) { return vs.map(f); } function MM(ms, f) { return ms.map(vs => vs.map(f)); } var n = ceq(0); - function N(xs) { return xs.map(n); } + function N(vs) { return vs.map(n); } + function NN(ms) { return ms.map(vs => vs.map(n)); } function ceq(y) { return function (x) { return +(x === y); }; } function cne(y) { return function (x) { return +(x !== y); }; }