bool givesCheck, improving, didLMR, priorCapture;
bool capture, doFullDepthSearch, moveCountPruning, ttCapture;
Piece movedPiece;
- int moveCount, captureCount, quietCount, bestMoveCount, improvement, complexity;
+ int moveCount, captureCount, quietCount, improvement, complexity;
// Step 1. Initialize node
Thread* thisThread = pos.this_thread();
ss->inCheck = pos.checkers();
priorCapture = pos.captured_piece();
Color us = pos.side_to_move();
- moveCount = bestMoveCount = captureCount = quietCount = ss->moveCount = 0;
+ moveCount = captureCount = quietCount = ss->moveCount = 0;
bestValue = -VALUE_INFINITE;
maxValue = VALUE_INFINITE;
{
Depth r = reduction(improving, depth, moveCount, delta, thisThread->rootDelta);
- // Decrease reduction at some PvNodes (~2 Elo)
- if ( PvNode
- && bestMoveCount <= 3)
- r--;
-
// Decrease reduction if position is or has been on the PV
// and node is not likely to fail low. (~3 Elo)
if ( ss->ttPv
if (PvNode && !ss->inCheck && abs(ss->staticEval - bestValue) > 250)
r--;
- // Increase depth based reduction if PvNode
+ // Decrease reduction for PvNodes based on depth
if (PvNode)
- r -= 15 / ( 3 + depth );
+ r -= 1 + 15 / ( 3 + depth );
ss->statScore = thisThread->mainHistory[us][from_to(move)]
+ (*contHist[0])[movedPiece][to_sq(move)]
update_pv(ss->pv, move, (ss+1)->pv);
if (PvNode && value < beta) // Update alpha! Always alpha < beta
- {
alpha = value;
- bestMoveCount++;
- }
else
{
assert(value >= beta); // Fail high