else
{
// Check Tablebases at root
- int piecesCnt = RootPos.total_piece_count();
+ int piecesCnt = RootPos.count<ALL_PIECES>(WHITE) + RootPos.count<ALL_PIECES>(BLACK);
TBCardinality = Options["SyzygyProbeLimit"];
TBProbeDepth = Options["SyzygyProbeDepth"] * ONE_PLY;
if (TBCardinality > Tablebases::TBLargest)
bool inCheck, givesCheck, singularExtensionNode, improving;
bool captureOrPromotion, dangerous, doFullDepthSearch;
int moveCount, quietCount;
+ int piecesCnt;
// Step 1. Initialize node
Thread* thisThread = pos.this_thread();
}
// Step 4a. Tablebase probe
+ piecesCnt = pos.count<ALL_PIECES>(WHITE) + pos.count<ALL_PIECES>(BLACK);
+
if ( !RootNode
- && pos.total_piece_count() <= TBCardinality
- && ( pos.total_piece_count() < TBCardinality || depth >= TBProbeDepth )
- && pos.rule50_count() == 0)
+ && piecesCnt <= TBCardinality
+ && (piecesCnt < TBCardinality || depth >= TBProbeDepth)
+ && pos.rule50_count() == 0)
{
int found, v = Tablebases::probe_wdl(pos, &found);
Depth d = updated ? depth : depth - ONE_PLY;
Value v = updated ? RootMoves[i].score : RootMoves[i].prevScore;
- bool tb = RootInTB;
- if (tb)
- {
- if (abs(v) >= VALUE_MATE - MAX_PLY)
- tb = false;
- else
- v = TBScore;
- }
+ bool tb = RootInTB && abs(v) < VALUE_MATE - MAX_PLY;
+ v = tb ? TBScore : v;
if (ss.rdbuf()->in_avail()) // Not at first line
ss << "\n";