Revision 0049d37c
Added by Leszek Koltunski about 1 year ago
src/main/java/org/distorted/objectlib/tablebases/PruningTable.java | ||
---|---|---|
174 | 174 |
|
175 | 175 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
176 | 176 |
|
177 |
private int computeApproximateSize(int tableSize, int numBits) |
|
177 |
private int retNumPositions(Tablebase table, int level) |
|
178 |
{ |
|
179 |
int size=0, tableSize = table.getSize(); |
|
180 |
|
|
181 |
for(int i=0; i<tableSize; i++) |
|
182 |
if( table.retrieveUnpacked(i)==level ) size++; |
|
183 |
|
|
184 |
return size; |
|
185 |
} |
|
186 |
|
|
187 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
188 |
|
|
189 |
private int computeApproximateSize(int tableSize, int positionSize, int numBits) |
|
178 | 190 |
{ |
179 | 191 |
int entrySize = (1<<numBits); |
180 | 192 |
int numBuckets = (tableSize+entrySize-1)/entrySize; |
181 | 193 |
int overhang = (numBits==4 || numBits==12) ? numBuckets/4 : 0; |
182 |
int totalBytesForTable = (tableSize*numBits)/8 + overhang;
|
|
194 |
int totalBytesForTable = (positionSize*numBits)/8 + overhang;
|
|
183 | 195 |
int bucketBytes = numBytesForIndices(totalBytesForTable); |
184 | 196 |
int totalBytesForBuckets = numBuckets*bucketBytes; |
185 | 197 |
|
... | ... | |
239 | 251 |
|
240 | 252 |
PruningTable(Tablebase table, int level) |
241 | 253 |
{ |
242 |
int size = table.getSize(); |
|
243 | 254 |
int[] supported = {4,8,12,16}; |
244 |
int minimum = 0; |
|
245 |
int chosen = 0; |
|
255 |
int minimum = 0, chosen = 0; |
|
256 |
int size = retNumPositions(table,level); |
|
257 |
int tableSize = table.getSize(); |
|
246 | 258 |
|
247 | 259 |
for(int i=0; i<supported.length; i++) |
248 | 260 |
{ |
249 |
int approx = computeApproximateSize(size, supported[i]); |
|
261 |
int approx = computeApproximateSize( tableSize, size, supported[i]);
|
|
250 | 262 |
|
251 | 263 |
if( i==0 || approx<minimum ) |
252 | 264 |
{ |
Also available in: Unified diff
progress with PruningTable.