]> git.sesse.net Git - stockfish/commitdiff
Fix some asserts raised by is_ok()
authorMarco Costalba <mcostalba@gmail.com>
Thu, 20 Aug 2009 15:30:34 +0000 (16:30 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Thu, 20 Aug 2009 16:48:52 +0000 (17:48 +0100)
There were two asserts.

The first was raised because is_ok() was called at the
beginning of do_castle_move() and this is wrong after
the last code reformatting because at that point the state
is already modified by the caller do_move().

The second, raised by debugIncrementalEval, was due to a
rounding error in compute_value() that occurs because
TempoValueEndgame was updated in an odd number by patch

"Merge Joona Kiiski evaluation tweaks" (3ed603cd) of 13/3/2009

This line in compute_value() is the guilty one:

result += (side_to_move() == WHITE)? TempoValue / 2 : -TempoValue / 2;

The fix is to increment TempoValueEndgame so to be even.

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

index d37d35b4261fef1d8418f608e890d627c76e9c01..c5d057980c55fdf4320d088b308d307a6681e42b 100644 (file)
@@ -886,6 +886,8 @@ void Position::do_move(Move m, StateInfo& newSt, Bitboard dcCandidates) {
 
   st->mgValue += (sideToMove == WHITE)? TempoValueMidgame : -TempoValueMidgame;
   st->egValue += (sideToMove == WHITE)? TempoValueEndgame : -TempoValueEndgame;
+
+  assert(is_ok());
 }
 
 
@@ -953,7 +955,6 @@ void Position::do_capture_move(Bitboard& key, PieceType capture, Color them, Squ
 
 void Position::do_castle_move(Move m) {
 
-  assert(is_ok());
   assert(move_is_ok(m));
   assert(move_is_castle(m));
 
@@ -1042,6 +1043,8 @@ void Position::do_castle_move(Move m) {
 
   st->mgValue += (sideToMove == WHITE)? TempoValueMidgame : -TempoValueMidgame;
   st->egValue += (sideToMove == WHITE)? TempoValueEndgame : -TempoValueEndgame;
+
+  assert(is_ok());
 }
 
 
@@ -1146,6 +1149,8 @@ void Position::undo_move(Move m) {
 
   // Finally point our state pointer back to the previous state
   st = st->previous;
+
+  assert(is_ok());
 }
 
 
@@ -1210,6 +1215,8 @@ void Position::undo_castle_move(Move m) {
 
   // Finally point our state pointer back to the previous state
   st = st->previous;
+
+  assert(is_ok());
 }
 
 
index cec4a439320b28588ff8d4bd523f9fdf2e22da42..51517462b41d2690d60ada2a35cd961631e1b9a0 100644 (file)
@@ -96,7 +96,7 @@ const Value PieceValueEndgame[17] = {
 /// Bonus for having the side to move (modified by Joona Kiiski)
 
 const Value TempoValueMidgame = Value(48);
-const Value TempoValueEndgame = Value(21);
+const Value TempoValueEndgame = Value(22);
 
 
 ////