#include <algorithm>
#include <cassert>
#include <cmath>
-#include <cstring>
+#include <cstring> // For std::memset
#include <iostream>
#include <sstream>
pos.undo_move(*it);
}
if (Root)
- sync_cout << UCI::format_move(*it, pos.is_chess960()) << ": " << cnt << sync_endl;
+ sync_cout << UCI::move(*it, pos.is_chess960()) << ": " << cnt << sync_endl;
}
return nodes;
}
void Search::think() {
- TimeMgr.init(Limits, RootPos.game_ply(), RootPos.side_to_move());
+ TimeMgr.init(Limits, RootPos.side_to_move(), RootPos.game_ply());
int contempt = Options["Contempt"] * PawnValueEg / 100; // From centipawns
DrawValue[ RootPos.side_to_move()] = VALUE_DRAW - Value(contempt);
{
RootMoves.push_back(MOVE_NONE);
sync_cout << "info depth 0 score "
- << UCI::format_value(RootPos.checkers() ? -VALUE_MATE : VALUE_DRAW)
+ << UCI::value(RootPos.checkers() ? -VALUE_MATE : VALUE_DRAW)
<< sync_endl;
}
else
RootPos.this_thread()->wait_for(Signals.stop);
}
- sync_cout << "bestmove " << UCI::format_move(RootMoves[0].pv[0], RootPos.is_chess960());
+ sync_cout << "bestmove " << UCI::move(RootMoves[0].pv[0], RootPos.is_chess960());
if (RootMoves[0].pv.size() > 1)
- std::cout << " ponder " << UCI::format_move(RootMoves[0].pv[1], RootPos.is_chess960());
+ std::cout << " ponder " << UCI::move(RootMoves[0].pv[1], RootPos.is_chess960());
std::cout << sync_endl;
}
Move pv[MAX_PLY+1], quietsSearched[64];
StateInfo st;
TTEntry* tte;
- bool ttHit;
SplitPoint* splitPoint;
Key posKey;
Move ttMove, move, excludedMove, bestMove;
Depth extension, newDepth, predictedDepth;
Value bestValue, value, ttValue, eval, nullValue, futilityValue;
- bool inCheck, givesCheck, singularExtensionNode, improving;
+ bool ttHit, inCheck, givesCheck, singularExtensionNode, improving;
bool captureOrPromotion, dangerous, doFullDepthSearch;
int moveCount, quietCount;
tte->save(posKey, value_to_tt(value, ss->ply), BOUND_EXACT,
std::min(DEPTH_MAX - ONE_PLY, depth + 6 * ONE_PLY),
- MOVE_NONE, VALUE_NONE, TT.get_generation());
+ MOVE_NONE, VALUE_NONE, TT.generation());
return value;
}
eval = ss->staticEval =
(ss-1)->currentMove != MOVE_NULL ? evaluate(pos) : -(ss-1)->staticEval + 2 * Eval::Tempo;
- tte->save(posKey, VALUE_NONE, BOUND_NONE, DEPTH_NONE, MOVE_NONE, ss->staticEval, TT.get_generation());
+ tte->save(posKey, VALUE_NONE, BOUND_NONE, DEPTH_NONE, MOVE_NONE, ss->staticEval, TT.generation());
}
if (ss->skipEarlyPruning)
if (thisThread == Threads.main() && Time::now() - SearchTime > 3000)
sync_cout << "info depth " << depth / ONE_PLY
- << " currmove " << UCI::format_move(move, pos.is_chess960())
+ << " currmove " << UCI::move(move, pos.is_chess960())
<< " currmovenumber " << moveCount + PVIdx << sync_endl;
}
tte->save(posKey, value_to_tt(bestValue, ss->ply),
bestValue >= beta ? BOUND_LOWER :
PvNode && bestMove ? BOUND_EXACT : BOUND_UPPER,
- depth, bestMove, ss->staticEval, TT.get_generation());
+ depth, bestMove, ss->staticEval, TT.generation());
assert(bestValue > -VALUE_INFINITE && bestValue < VALUE_INFINITE);
Move pv[MAX_PLY+1];
StateInfo st;
TTEntry* tte;
- bool ttHit;
Key posKey;
Move ttMove, move, bestMove;
Value bestValue, value, ttValue, futilityValue, futilityBase, oldAlpha;
- bool givesCheck, evasionPrunable;
+ bool ttHit, givesCheck, evasionPrunable;
Depth ttDepth;
if (PvNode)
{
if (!ttHit)
tte->save(pos.key(), value_to_tt(bestValue, ss->ply), BOUND_LOWER,
- DEPTH_NONE, MOVE_NONE, ss->staticEval, TT.get_generation());
+ DEPTH_NONE, MOVE_NONE, ss->staticEval, TT.generation());
return bestValue;
}
else // Fail high
{
tte->save(posKey, value_to_tt(value, ss->ply), BOUND_LOWER,
- ttDepth, move, ss->staticEval, TT.get_generation());
+ ttDepth, move, ss->staticEval, TT.generation());
return value;
}
tte->save(posKey, value_to_tt(bestValue, ss->ply),
PvNode && bestValue > oldAlpha ? BOUND_EXACT : BOUND_UPPER,
- ttDepth, bestMove, ss->staticEval, TT.get_generation());
+ ttDepth, bestMove, ss->staticEval, TT.generation());
assert(bestValue > -VALUE_INFINITE && bestValue < VALUE_INFINITE);
ss << "info depth " << d / ONE_PLY
<< " seldepth " << selDepth
<< " multipv " << i + 1
- << " score " << ((!tb && i == PVIdx) ? UCI::format_value(v, alpha, beta) : UCI::format_value(v))
+ << " score " << ((!tb && i == PVIdx) ? UCI::value(v, alpha, beta) : UCI::value(v))
<< " nodes " << pos.nodes_searched()
<< " nps " << pos.nodes_searched() * 1000 / elapsed
<< " tbhits " << TB::Hits
<< " pv";
for (size_t j = 0; j < RootMoves[i].pv.size(); ++j)
- ss << " " << UCI::format_move(RootMoves[i].pv[j], pos.is_chess960());
+ ss << " " << UCI::move(RootMoves[i].pv[j], pos.is_chess960());
}
return ss.str();
TTEntry* tte = TT.probe(pos.key(), ttHit);
if (!ttHit || tte->move() != pv[idx]) // Don't overwrite correct entries
- tte->save(pos.key(), VALUE_NONE, BOUND_NONE, DEPTH_NONE, pv[idx], VALUE_NONE, TT.get_generation());
+ tte->save(pos.key(), VALUE_NONE, BOUND_NONE, DEPTH_NONE, pv[idx], VALUE_NONE, TT.generation());
assert(MoveList<LEGAL>(pos).contains(pv[idx]));