return see(m);
}
-int Position::see(Move m, int asymmThreshold) const {
+int Position::see(Move m) const {
Square from, to;
Bitboard occupied, attackers, stmAttackers;
} while (stmAttackers);
- // If we are doing asymmetric SEE evaluation and the same side does the first
- // and the last capture, it loses a tempo and gain must be at least worth
- // 'asymmThreshold', otherwise we replace the score with a very low value,
- // before negamaxing.
- if (asymmThreshold)
- for (int i = 0; i < slIndex; i += 2)
- if (swapList[i] < asymmThreshold)
- swapList[i] = - QueenValueMg * 16;
-
// Having built the swap list, we negamax through it to find the best
// achievable score from the point of view of the side to move.
while (--slIndex)
void undo_null_move();
// Static exchange evaluation
- int see(Move m, int asymmThreshold = 0) const;
+ int see(Move m) const;
int see_sign(Move m) const;
// Accessing hash keys
continue;
}
- // Prune moves with negative or equal SEE and also moves with positive
- // SEE where capturing piece loses a tempo and SEE < beta - futilityBase.
- if ( futilityBase < beta
- && pos.see(move, beta - futilityBase) <= 0)
+ if (futilityBase < beta && pos.see(move) <= 0)
{
bestValue = std::max(bestValue, futilityBase);
continue;