Simplify fast attackers_to
authorFabian Fichter <ianfab@users.noreply.github.com>
Fri, 19 Feb 2021 16:20:04 +0000 (17:20 +0100)
committerFabian Fichter <ianfab@users.noreply.github.com>
Fri, 19 Feb 2021 16:20:34 +0000 (17:20 +0100)
dobutsu STC
LLR: -2.97 (-2.94,2.94) [0.00,10.00]
Total: 12830 W: 4730 L: 4640 D: 3460
http://www.variantfishtest.org:6543/tests/view/602c34f06e23db669974e914

standard STC
LLR: 3.01 (-2.94,2.94) [-10.00,5.00]
Total: 5190 W: 1157 L: 1138 D: 2895
http://www.variantfishtest.org:6543/tests/view/602cc4366e23db669974e91c

makruk STC
LLR: 3.02 (-2.94,2.94) [-10.00,5.00]
Total: 12761 W: 978 L: 966 D: 10817
http://www.variantfishtest.org:6543/tests/view/602d5ab46e23db669974e920

src/position.cpp
src/variant.h

index 7145145..0b3d7bf 100644 (file)
@@ -792,15 +792,14 @@ Bitboard Position::attackers_to(Square s, Bitboard occupied, Color c, Bitboard j
   // Use a faster version for variants with moderate rule variations
   if (var->fastAttacks)
   {
-      return  (pawn_attacks_bb(~c, s)          & pieces(c, PAWN))
+      return  (pawn_attacks_bb(~c, s)          & pieces(c, PAWN, GOLD))
             | (attacks_bb<KNIGHT>(s)           & pieces(c, KNIGHT))
             | (attacks_bb<  ROOK>(s, occupied) & pieces(c, ROOK, QUEEN, DRAGON))
             | (attacks_bb<BISHOP>(s, occupied) & pieces(c, BISHOP, QUEEN, DRAGON_HORSE))
-            | (attacks_bb<KING>(s)             & pieces(c, KING, COMMONER, DRAGON_HORSE))
-            | (attacks_bb<FERS>(s)             & pieces(c, FERS, DRAGON))
-            | (LeaperAttacks[~c][SILVER][s]    & pieces(c, SILVER))
-            | (LeaperAttacks[~c][GOLD][s]      & pieces(c, GOLD))
-            | (LeaperAttacks[~c][SHOGI_PAWN][s]& pieces(c, SHOGI_PAWN));
+            | (attacks_bb<KING>(s)             & pieces(c, KING, COMMONER))
+            | (attacks_bb<FERS>(s)             & pieces(c, FERS, DRAGON, SILVER))
+            | (attacks_bb<WAZIR>(s)            & pieces(c, WAZIR, DRAGON_HORSE, GOLD))
+            | (LeaperAttacks[~c][SHOGI_PAWN][s]& pieces(c, SHOGI_PAWN, SILVER));
   }
 
   Bitboard b = 0;
index 8cde421..c799eee 100644 (file)
@@ -157,8 +157,8 @@ struct Variant {
   Variant* conclude() {
       fastAttacks = std::all_of(pieceTypes.begin(), pieceTypes.end(), [this](PieceType pt) {
                                     return (   pt < FAIRY_PIECES
-                                            || pt == COMMONER || pt == FERS || pt == SILVER
-                                            || pt == SHOGI_PAWN || pt == GOLD
+                                            || pt == COMMONER || pt == FERS || pt == WAZIR
+                                            || pt == SHOGI_PAWN || pt == GOLD || pt == SILVER
                                             || pt == DRAGON || pt == DRAGON_HORSE
                                             || (pt == KING && kingType == KING))
                                           && !(mobilityRegion[WHITE][pt] || mobilityRegion[BLACK][pt]);