Project

General

Profile

« Previous | Next » 

Revision 0049d37c

Added by Leszek Koltunski about 1 year ago

progress with PruningTable.

View differences:

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