- //std::cout << std::endl;
- //for (int d = 2; d < 14; d++)
- // std::cout << d << ", " << 64*(1+bitScanReverse32(d*d)) << std::endl;
-
- //std::cout << std::endl;
-/*
- 64*(1+bitScanReverse32(d*d))
-
- 2 -> 256 - 256
- 3 -> 288 - 320
- 4 -> 512 - 384
- 5 -> 544 - 384
- 6 -> 592 - 448
- 7 -> 624 - 448
- 8 -> 672 - 512
- 9 -> 704 - 512
- 10 -> 832 - 512
- 11 -> 864 - 512
- 12 -> 928 - 576
- 13 -> 960 - 576
-
- 300 + 2*(1 << (3*d/4))
-
- 2 -> 256 - 304
- 3 -> 288 - 308
- 4 -> 512 - 316
- 5 -> 544 - 316
- 6 -> 592 - 332
- 7 -> 624 - 364
- 8 -> 672 - 428
- 9 -> 704 - 428
- 10 -> 832 - 556
- 11 -> 864 - 812
- 12 -> 928 - 1324
- 13 -> 960 - 1324
-
-
- 3 + (1 << (3*int(depth)/8))
-
- 1 * onePly - > moveCount >= 4
- 2 * onePly - > moveCount >= 5
- 3 * onePly - > moveCount >= 7
- 4 * onePly - > moveCount >= 11
- 5 * onePly - > moveCount >= 11
- 6 * onePly - > moveCount >= 19
- 7 * onePly - > moveCount >= 35
-*/
- // History pruning. See ok_to_prune() definition
- if ( moveCount >= MCLimit
- && ok_to_prune(pos, move, ss[ply].threatMove, depth)
+ // Move count based pruning
+ if ( moveCount >= FutilityMoveCountMargin
+ && ok_to_prune(pos, move, ss[ply].threatMove)