// Look for a book move, only during games, not tests
if (UseTimeManagement && Options["OwnBook"].value<bool>())
{
- if (Options["Book File"].value<std::string>() != OpeningBook.file_name())
+ if (Options["Book File"].value<std::string>() != OpeningBook.name())
OpeningBook.open(Options["Book File"].value<std::string>());
Move bookMove = OpeningBook.get_move(pos, Options["Best Book Move"].value<bool>());
// Step 1. Initialize node (polling is omitted at root)
ss->currentMove = ss->bestMove = MOVE_NONE;
+ (ss+2)->killers[0] = (ss+2)->killers[1] = (ss+2)->mateKiller = MOVE_NONE;
// Step 2. Check for aborted search (omitted at root)
// Step 3. Mate distance pruning (omitted at root)
void update_history(const Position& pos, Move move, Depth depth,
Move movesSearched[], int moveCount) {
Move m;
+ Value bonus = Value(int(depth) * int(depth));
- H.success(pos.piece_on(move_from(move)), move_to(move), depth);
+ H.update(pos.piece_on(move_from(move)), move_to(move), bonus);
for (int i = 0; i < moveCount - 1; i++)
{
assert(m != move);
if (!pos.move_is_capture_or_promotion(m))
- H.failure(pos.piece_on(move_from(m)), move_to(m), depth);
+ H.update(pos.piece_on(move_from(m)), move_to(m), -bonus);
}
}
&& after != VALUE_NONE
&& pos.captured_piece_type() == PIECE_TYPE_NONE
&& !move_is_special(m))
- H.set_gain(pos.piece_on(move_to(m)), move_to(m), -(before + after));
+ H.update_gain(pos.piece_on(move_to(m)), move_to(m), -(before + after));
}