introduce bitloops
This commit is contained in:
@@ -114,8 +114,14 @@ public class SwedishGenerator {
|
||||
x = y;
|
||||
return y;
|
||||
}
|
||||
public int randint2bit() { return nextU32() & 3; }
|
||||
public byte randint2bitByte() { return (byte) (nextU32() & 3); }
|
||||
public int randint2bit() { return nextU32() & 3; }
|
||||
public byte randint2bitByte() {
|
||||
var b = (byte) (nextU32() & 3);
|
||||
/*if (b == 3) {
|
||||
return 1;
|
||||
}*/
|
||||
return b;
|
||||
}
|
||||
public int randint(int max) { return (int) (((nextU32() & 0xFFFFFFFFL) % ((long) max - 0L + 1L))); }
|
||||
public int randint0_SIZE() { return (int) (((nextU32() & 0xFFFFFFFFL) % RANGE_0_SIZE)); }
|
||||
public int randint0_624() { return (int) (((nextU32() & 0xFFFFFFFFL) % RANGE_0_624)); }
|
||||
@@ -166,9 +172,10 @@ public class SwedishGenerator {
|
||||
static class Assign {
|
||||
|
||||
long w;
|
||||
int shardIdx;
|
||||
}
|
||||
|
||||
static record Slotinfo(int key, long lo, long hi, int score, Assign assign, DictEntry entry) {
|
||||
public static record Slotinfo(int key, long lo, long hi, int score, Assign assign, DictEntry entry) {
|
||||
|
||||
public static int wordCount(int k, Slotinfo[] arr) {
|
||||
for (var n = 1; n < arr.length; n++) if (arr[n].assign.w != X) k++;
|
||||
@@ -380,15 +387,17 @@ public class SwedishGenerator {
|
||||
for (var t = 0; t < tries; t++) {
|
||||
var r = rng.nextFloat();
|
||||
//int idxInArray = rng.biasedIndexPow3(L - 1);
|
||||
var w = entry.words[idxs[(int) (r * r * r * (L - 1))]];
|
||||
var lemIdx = Lemma.unpackIndex(w);
|
||||
var arrIndex = (int) (r * r * r * (L - 1));
|
||||
var w = entry.words[idxs[arrIndex]];
|
||||
var lemIdx = Lemma.unpackIndex(w);
|
||||
if (Bit1029.get(used, lemIdx)) continue;
|
||||
low = glo;
|
||||
top = ghi;
|
||||
if (!placeWord(k, slo, shi, w)) continue;
|
||||
|
||||
Bit1029.set(used, lemIdx);
|
||||
s.assign.w = w;
|
||||
s.assign.w = w;
|
||||
s.assign.shardIdx = arrIndex;
|
||||
if (backtrack(depth + 1)) return true;
|
||||
s.assign.w = X;
|
||||
Bit1029.clear(used, lemIdx);
|
||||
@@ -403,16 +412,18 @@ public class SwedishGenerator {
|
||||
|
||||
var tries = Math.min(MAX_TRIES_PER_SLOT, N);
|
||||
for (var t = 0; t < tries; t++) {
|
||||
double r = rng.nextFloat();
|
||||
var w = entry.words[(int) (r * r * r * (N - 1))];
|
||||
var lemIdx = Lemma.unpackIndex(w);
|
||||
double r = rng.nextFloat();
|
||||
var shardIndx = (int) (r * r * r * (N - 1));
|
||||
var w = entry.words[shardIndx];
|
||||
var lemIdx = Lemma.unpackIndex(w);
|
||||
if (Bit1029.get(used, lemIdx)) continue;
|
||||
low = glo;
|
||||
top = ghi;
|
||||
if (!placeWord(k, slo, shi, w)) continue;
|
||||
|
||||
Bit1029.set(used, lemIdx);
|
||||
s.assign.w = w;
|
||||
s.assign.w = w;
|
||||
s.assign.shardIdx = shardIndx;
|
||||
if (backtrack(depth + 1)) return true;
|
||||
s.assign.w = X;
|
||||
Bit1029.clear(used, lemIdx);
|
||||
|
||||
Reference in New Issue
Block a user