Slightly better condition in update_hidden_checks()
authorMarco Costalba <mcostalba@gmail.com>
Sat, 28 Feb 2009 08:42:52 +0000 (09:42 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Sat, 28 Feb 2009 17:42:51 +0000 (18:42 +0100)
Use a more strict condition to check if we have captured
an opponent pinner or hidden checker.

With this patch the occurrence of checkerCaptured == true are
reduced of 50%.

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
src/position.cpp

index 05e093a8a6fc8b2bae8085d1d7f0eab1806ba324..81208ac2262b87b3a7113d1297ade6218e12c268 100644 (file)
@@ -713,7 +713,7 @@ void Position::update_hidden_checks(Square from, Square to) {
   }
 
   // It is possible that we have captured an opponent hidden checker?
-  Bitboard checkerCaptured = (st->dcCandidates[them] | st->pinners[us]) && st->capture;
+  Bitboard checkerCaptured = st->capture && (st->dcCandidates[them] || bit_is_set(st->pinners[us], to));
 
   // If we are moving from/to an our king attack direction and there was/is some possible
   // opponent hidden checker then calculate the position otherwise skip because opponent