CheckInfo ci(pos);
const bool leaf = (depth == 2 * ONE_PLY);
- for (const ExtMove& ms : MoveList<LEGAL>(pos))
+ for (const auto& m : MoveList<LEGAL>(pos))
{
if (Root && depth <= ONE_PLY)
cnt = 1, nodes++;
else
{
- pos.do_move(ms.move, st, ci, pos.gives_check(ms.move, ci));
+ pos.do_move(m, st, ci, pos.gives_check(m, ci));
cnt = leaf ? MoveList<LEGAL>(pos).size() : perft<false>(pos, depth - ONE_PLY);
nodes += cnt;
- pos.undo_move(ms.move);
+ pos.undo_move(m);
}
if (Root)
- sync_cout << UCI::move(ms.move, pos.is_chess960()) << ": " << cnt << sync_endl;
+ sync_cout << UCI::move(m, pos.is_chess960()) << ": " << cnt << sync_endl;
}
return nodes;
}
if (RootMoves.empty())
{
- RootMoves.push_back(MOVE_NONE);
+ RootMoves.push_back(RootMove(MOVE_NONE));
sync_cout << "info depth 0 score "
<< UCI::value(RootPos.checkers() ? -VALUE_MATE : VALUE_DRAW)
<< sync_endl;
// then we choose the move with the resulting highest score.
for (size_t i = 0; i < multiPV; ++i)
{
- int score = RootMoves[i].score;
-
// This is our magic formula
- score += ( weakness * int(RootMoves[0].score - score)
- + variance * (rng.rand<unsigned>() % weakness)) / 128;
+ int push = ( weakness * int(RootMoves[0].score - RootMoves[i].score)
+ + variance * (rng.rand<unsigned>() % weakness)) / 128;
- if (score > maxScore)
+ if (RootMoves[i].score + push > maxScore)
{
- maxScore = score;
+ maxScore = RootMoves[i].score + push;
best = RootMoves[i].pv[0];
}
}
<< " nps " << pos.nodes_searched() * 1000 / elapsed;
if (elapsed > 1000) // Earlier makes little sense
- ss << " hashfull " << TT.hashfull();
+ ss << " hashfull " << TT.hashfull();
ss << " tbhits " << TB::Hits
<< " time " << elapsed