mirror of
https://github.com/sockspls/badfish
synced 2025-04-29 16:23:09 +00:00
Fix some asserts raised by is_ok()
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>
This commit is contained in:
parent
e9aa20ad13
commit
95af1e28be
2 changed files with 9 additions and 2 deletions
|
@ -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());
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
||||
////
|
||||
|
|
Loading…
Add table
Reference in a new issue