mirror of
https://github.com/opelly27/Stockfish.git
synced 2026-05-20 02:47:45 +00:00
Simplify away SEE verification
After 4 simplificatons over PR#4453 the idea does not yield significant improvement anymore. Maybe also https://tests.stockfishchess.org/tests/view/640c88092644b62c3394c1c5 was a fluke. Passed non-regression bounds: STC: https://tests.stockfishchess.org/tests/view/64705389c079b6583146d873 LLR: 2.93 (-2.94,2.94) <-1.75,0.25> Total: 131936 W: 35040 L: 34930 D: 61966 Ptnml(0-2): 336, 14559, 36035, 14735, 303 LTC: https://tests.stockfishchess.org/tests/view/6471a2ade549d9cf2fb213cd LLR: 2.95 (-2.94,2.94) <-1.75,0.25> Total: 407700 W: 109999 L: 110164 D: 187537 Ptnml(0-2): 279, 39913, 123689, 39632, 337 closes https://github.com/official-stockfish/Stockfish/pull/4595 bench: 2675974
This commit is contained in:
committed by
Joost VandeVondele
parent
6cf8d938c5
commit
5930c0defb
+7
-12
@@ -1061,7 +1061,7 @@ Key Position::key_after(Move m) const {
|
||||
/// SEE value of move is greater or equal to the given threshold. We'll use an
|
||||
/// algorithm similar to alpha-beta pruning with a null window.
|
||||
|
||||
bool Position::see_ge(Move m, Bitboard& occupied, Value threshold) const {
|
||||
bool Position::see_ge(Move m, Value threshold) const {
|
||||
|
||||
assert(is_ok(m));
|
||||
|
||||
@@ -1080,7 +1080,7 @@ bool Position::see_ge(Move m, Bitboard& occupied, Value threshold) const {
|
||||
return true;
|
||||
|
||||
assert(color_of(piece_on(from)) == sideToMove);
|
||||
occupied = pieces() ^ from ^ to; // xoring to is important for pinned piece logic
|
||||
Bitboard occupied = pieces() ^ from ^ to; // xoring to is important for pinned piece logic
|
||||
Color stm = sideToMove;
|
||||
Bitboard attackers = attackers_to(to, occupied);
|
||||
Bitboard stmAttackers, bb;
|
||||
@@ -1111,43 +1111,43 @@ bool Position::see_ge(Move m, Bitboard& occupied, Value threshold) const {
|
||||
// the bitboard 'attackers' any X-ray attackers behind it.
|
||||
if ((bb = stmAttackers & pieces(PAWN)))
|
||||
{
|
||||
occupied ^= least_significant_square_bb(bb);
|
||||
if ((swap = PawnValueMg - swap) < res)
|
||||
break;
|
||||
occupied ^= least_significant_square_bb(bb);
|
||||
|
||||
attackers |= attacks_bb<BISHOP>(to, occupied) & pieces(BISHOP, QUEEN);
|
||||
}
|
||||
|
||||
else if ((bb = stmAttackers & pieces(KNIGHT)))
|
||||
{
|
||||
occupied ^= least_significant_square_bb(bb);
|
||||
if ((swap = KnightValueMg - swap) < res)
|
||||
break;
|
||||
occupied ^= least_significant_square_bb(bb);
|
||||
}
|
||||
|
||||
else if ((bb = stmAttackers & pieces(BISHOP)))
|
||||
{
|
||||
occupied ^= least_significant_square_bb(bb);
|
||||
if ((swap = BishopValueMg - swap) < res)
|
||||
break;
|
||||
occupied ^= least_significant_square_bb(bb);
|
||||
|
||||
attackers |= attacks_bb<BISHOP>(to, occupied) & pieces(BISHOP, QUEEN);
|
||||
}
|
||||
|
||||
else if ((bb = stmAttackers & pieces(ROOK)))
|
||||
{
|
||||
occupied ^= least_significant_square_bb(bb);
|
||||
if ((swap = RookValueMg - swap) < res)
|
||||
break;
|
||||
occupied ^= least_significant_square_bb(bb);
|
||||
|
||||
attackers |= attacks_bb<ROOK>(to, occupied) & pieces(ROOK, QUEEN);
|
||||
}
|
||||
|
||||
else if ((bb = stmAttackers & pieces(QUEEN)))
|
||||
{
|
||||
occupied ^= least_significant_square_bb(bb);
|
||||
if ((swap = QueenValueMg - swap) < res)
|
||||
break;
|
||||
occupied ^= least_significant_square_bb(bb);
|
||||
|
||||
attackers |= (attacks_bb<BISHOP>(to, occupied) & pieces(BISHOP, QUEEN))
|
||||
| (attacks_bb<ROOK >(to, occupied) & pieces(ROOK , QUEEN));
|
||||
@@ -1162,11 +1162,6 @@ bool Position::see_ge(Move m, Bitboard& occupied, Value threshold) const {
|
||||
return bool(res);
|
||||
}
|
||||
|
||||
bool Position::see_ge(Move m, Value threshold) const {
|
||||
Bitboard occupied;
|
||||
return see_ge(m, occupied, threshold);
|
||||
}
|
||||
|
||||
|
||||
/// Position::is_draw() tests whether the position is drawn by 50-move rule
|
||||
/// or by repetition. It does not detect stalemates.
|
||||
|
||||
Reference in New Issue
Block a user