diff --git a/src/singeli/src/base.singeli b/src/singeli/src/base.singeli index d957d983..77ecb8a1 100644 --- a/src/singeli/src/base.singeli +++ b/src/singeli/src/base.singeli @@ -249,7 +249,7 @@ def truncBits{n, v if n==64} = cast_i{u64, v} # base-2 log of a constant power of two def lb{n if knum{n} and (n>>1<<1) == n and n>0} = lb{n>>1}+1 -def lb{(1)} = 0 +def lb{1} = 0 def zlow{n,x} = (x >> n) << n # zero out n least significant bits def tail{n,x} = x & ((1< { + {'∊'} => { has_maxh:u1 = 0 uniq:usz = 0 # Uniques inserted def dup = makelabel{} @@ -540,7 +540,7 @@ fn hashtab{T, name}(rpi:*rty{name}, iv:*void, mi:usz, fv:*void, ni:usz, links:it lookup_all{{found, j} => promote{i8, swap ^ (found & (j if (not swap) { + {'⊐', inds} => if (not swap) { has_maxh:u1 = 0 ind_maxh:u32 = 0 def dup = makelabel{} @@ -586,7 +586,7 @@ fn hashtab{T, name}(rpi:*rty{name}, iv:*void, mi:usz, fv:*void, ni:usz, links:it @for (r in rp over i to n) r = load{rp, min{i, u32~~r+n}} } - {('⊒'), inds, link} => { + {'⊒', inds, link} => { store{link,0,0} store{inds, maxh>>sh + cast_i{T,ext}, 0} def dup = makelabel{} diff --git a/src/singeli/src/selfsearch.singeli b/src/singeli/src/selfsearch.singeli index e5326dc6..ed56dafe 100644 --- a/src/singeli/src/selfsearch.singeli +++ b/src/singeli/src/selfsearch.singeli @@ -31,8 +31,8 @@ fn selfhashtab{T, name}(rpi:*rty{name}, xp:*T, n:usz) = { } def {output, write_res} = match (prim) { - {('∊')} => tup{{b}=>b, {j,h,k,x0} => { hash<-{j}h; promote{i8,k!=h} }} - {('⊒')} => { + {'∊'} => tup{{b}=>b, {j,h,k,x0} => { hash<-{j}h; promote{i8,k!=h} }} + {'⊒'} => { ctr0:u32 = 1; def {val} = vals def res{j,h,k,x0} = { e0:=promote{u32,h==x0}; vj:=val->j; c0:=ctr0 @@ -41,7 +41,7 @@ fn selfhashtab{T, name}(rpi:*rty{name}, xp:*T, n:usz) = { } tup{{b}=>b, res} } - {('⊐')} => { + {'⊐'} => { ctr:u32 = 1; def {val} = vals def res{j,h,k,x0} = { if (k!=h) { val<-{j}ctr; ++ctr; hash<-{j}h }