Optimize for king moves in see_sign()
authorMarco Costalba <mcostalba@gmail.com>
Sat, 19 Jun 2010 14:44:03 +0000 (15:44 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Sat, 19 Jun 2010 14:58:14 +0000 (15:58 +0100)
Because we only test legal moves, a king move
cannot have negative SEE.

No functional change.

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

index a069cf404be6d012a7ac129c4386b0c3a1721586..5026ed761f02a96ba9b564b0ee15d814e879cef2 100644 (file)
@@ -1307,11 +1307,11 @@ int Position::see_sign(Move m) const {
   Square from = move_from(m);
   Square to = move_to(m);
 
-  // Early return if SEE cannot be negative because capturing piece value
-  // is not bigger then captured one.
-  if (   midgame_value_of_piece_on(from) <= midgame_value_of_piece_on(to)
-      && type_of_piece_on(from) != KING)
-         return 1;
+  // Early return if SEE cannot be negative because captured piece value
+  // is not less then capturing one. Note that king moves always return
+  // here because king midgame value is set to 0.
+  if (midgame_value_of_piece_on(to) >= midgame_value_of_piece_on(from))
+      return 1;
 
   return see(from, to);
 }