Value value_to_tt(Value v, int ply);
Value value_from_tt(Value v, int ply);
bool check_is_dangerous(Position& pos, Move move, Value futilityBase, Value beta);
- bool allows_move(const Position& pos, Move first, Move second);
- bool prevents_move(const Position& pos, Move first, Move second);
+ bool allows(const Position& pos, Move first, Move second);
+ bool refutes(const Position& pos, Move first, Move second);
string uci_pv(const Position& pos, int depth, Value alpha, Value beta);
struct Skill {
// Sort the PV lines searched so far and update the GUI
sort<RootMove>(RootMoves.begin(), RootMoves.begin() + PVIdx + 1);
+
if (PVIdx + 1 == PVSize || Time::now() - SearchTime > 3000)
sync_cout << uci_pv(pos, depth, alpha, beta) << sync_endl;
}
if ( depth < 5 * ONE_PLY
&& (ss-1)->reduction
&& threatMove != MOVE_NONE
- && allows_move(pos, (ss-1)->currentMove, threatMove))
+ && allows(pos, (ss-1)->currentMove, threatMove))
return beta - 1;
}
}
// Move count based pruning
if ( depth < 16 * ONE_PLY
&& moveCount >= FutilityMoveCounts[depth]
- && (!threatMove || !prevents_move(pos, move, threatMove)))
+ && (!threatMove || !refutes(pos, move, threatMove)))
{
if (SpNode)
sp->mutex.lock();
&& !pvMove
&& !captureOrPromotion
&& !dangerous
- && ss->killers[0] != move
- && ss->killers[1] != move)
+ && move != ttMove
+ && move != ss->killers[0]
+ && move != ss->killers[1])
{
ss->reduction = reduction<PvNode>(depth, moveCount);
Depth d = std::max(newDepth - ss->reduction, ONE_PLY);
}
- // allows_move() tests whether the move at previous ply (first) somehow makes a
- // second move possible, for instance if the moving piece is the same in both
- // moves. Normally the second move is the threat move (the best move returned
+ // allows() tests whether the 'first' move at previous ply somehow makes the
+ // 'second' move possible, for instance if the moving piece is the same in
+ // both moves. Normally the second move is the threat (the best move returned
// from a null search that fails low).
- bool allows_move(const Position& pos, Move first, Move second) {
+ bool allows(const Position& pos, Move first, Move second) {
assert(is_ok(first));
assert(is_ok(second));
}
- // prevents_move() tests whether a move (first) is able to defend against an
- // opponent's move (second). In this case will not be pruned. Normally the
- // second move is the threat move (the best move returned from a null search
- // that fails low).
+ // refutes() tests whether a 'first' move is able to defend against a 'second'
+ // opponent's move. In this case will not be pruned. Normally the second move
+ // is the threat (the best move returned from a null search that fails low).
- bool prevents_move(const Position& pos, Move first, Move second) {
+ bool refutes(const Position& pos, Move first, Move second) {
assert(is_ok(first));
assert(is_ok(second));