From 15c405e7bf8cb7433af6402704075761b64aa66e Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Mon, 26 Sep 2022 11:15:37 -0400 Subject: [PATCH] Factorize constant replicate lengths under 32 --- src/builtins/slash.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/builtins/slash.c b/src/builtins/slash.c index 8a662231..a36f2be5 100644 --- a/src/builtins/slash.c +++ b/src/builtins/slash.c @@ -717,6 +717,13 @@ B slash_c2(B t, B w, B x) { else { BOOL_REP_OVER(wv, xlen) } goto decX_ret; } else { + #if SINGELI + static const u8 factors[] = {4, 3, 5, 1, 6, 1, 7, 5, 4, 1, 6, 1, 5, 7, 2, 1, 6, 5, 2, 3, 7, 1, 6, 1, 4}; + u8 fa; + if (xlen>=12 && wv>=8 && wv<32 && (fa=factors[wv-8])>1) { + return slash_c2(m_f64(0), m_f64(fa), slash_c2(m_f64(0), m_f64(wv/fa), x)); + } + #endif u8 xk = xl-3; void* rv = m_tyarrv(&r, 1<