This tiny functional change allows to
nicely simplify things.
Performed at 50% in short TC:
LLR: -0.43 (-2.94,2.94)
Total: 46406 W: 9681 L: 9565 D: 27160
And succesfully passed long TC reverse test:
LLR: -2.95 (-2.94,2.94)
Total: 4945 W: 858 L: 937 D: 3150
bench:
4507230
assert(splitPoint->bestValue > -VALUE_INFINITE && splitPoint->moveCount > 0);
assert(splitPoint->bestValue > -VALUE_INFINITE && splitPoint->moveCount > 0);
- goto split_point_start;
}
bestValue = -VALUE_INFINITE;
}
bestValue = -VALUE_INFINITE;
if (inCheck)
{
ss->staticEval = ss->evalMargin = eval = VALUE_NONE;
if (inCheck)
{
ss->staticEval = ss->evalMargin = eval = VALUE_NONE;
-iid_start: // When in check we skip early cut tests
-
// Step 10. Internal iterative deepening
if ( depth >= (PvNode ? 5 * ONE_PLY : 8 * ONE_PLY)
&& ttMove == MOVE_NONE
// Step 10. Internal iterative deepening
if ( depth >= (PvNode ? 5 * ONE_PLY : 8 * ONE_PLY)
&& ttMove == MOVE_NONE
- && (PvNode || (!inCheck && ss->staticEval + Value(256) >= beta)))
+ && (PvNode || ss->staticEval + Value(256) >= beta))
{
Depth d = depth - 2 * ONE_PLY - (PvNode ? DEPTH_ZERO : depth / 4);
{
Depth d = depth - 2 * ONE_PLY - (PvNode ? DEPTH_ZERO : depth / 4);
ttMove = tte ? tte->move() : MOVE_NONE;
}
ttMove = tte ? tte->move() : MOVE_NONE;
}
-split_point_start: // At split points actual search starts from here
+moves_loop: // When in check and at SpNode search starts from here
Square prevMoveSq = to_sq((ss-1)->currentMove);
Move countermoves[] = { Countermoves[pos.piece_on(prevMoveSq)][prevMoveSq].first,
Square prevMoveSq = to_sq((ss-1)->currentMove);
Move countermoves[] = { Countermoves[pos.piece_on(prevMoveSq)][prevMoveSq].first,