diff --git a/src/builtins/selfsearch.c b/src/builtins/selfsearch.c index 2d3c0169..949e0936 100644 --- a/src/builtins/selfsearch.c +++ b/src/builtins/selfsearch.c @@ -24,45 +24,13 @@ B memberOf_c1(B t, B x) { u##T* xp = (u##T*)i##T##any_ptr(x); \ i8* rp; B r = m_i8arrv(&rp, n); \ TALLOC(u8, tab, tn); \ - for (usz j=0; j8 && n=256) { LOOKUP(16); } - // Radix-assisted lookup - usz rx = 256, tn = 256; // Radix; table length - u16* v0 = (u16*)i16any_ptr(x); - i8* r0; B r = m_i8arrv(&r0, n); - TALLOC(u8, alloc, 4*n+(tn+rx)); - u8 *c0 = alloc; - u8 *k0 = c0+rx; - u16 *v1 = (u16*)(k0+n); - u8 *r1 = (u8*)(v1+n); - u8 *tab= r1+n; - // Count keys - for (usz j=0; j>8)]++; - // Exclusive prefix sum - usz s=0; for (usz j=0; j>8); usz c=c0[k]++; v1[c]=v; } - // Table lookup - for (usz j=0; j>8; - for (usz i=0, e=0; i>8; - if (tv!=t0) { for (; e