1
0
Fork 0

Extract a reliable PV line

Truncate the extracted PV from the point where
the score stored in hash starts to deviate from
the root score.

Idea from Ronald de Man.

bench: 8732553
sf_5_base
Marco Costalba 2014-05-17 12:49:52 +02:00
parent 5ec63eb6b6
commit e46a72dd1d
1 changed files with 3 additions and 0 deletions

View File

@ -1401,6 +1401,7 @@ void RootMove::extract_pv_from_tt(Position& pos) {
const TTEntry* tte;
int ply = 0;
Move m = pv[0];
Value expectedScore = score;
pv.clear();
@ -1411,8 +1412,10 @@ void RootMove::extract_pv_from_tt(Position& pos) {
pos.do_move(pv[ply++], *st++);
tte = TT.probe(pos.key());
expectedScore = -expectedScore;
} while ( tte
&& expectedScore == value_from_tt(tte->value(), ply)
&& pos.pseudo_legal(m = tte->move()) // Local copy, TT could change
&& pos.legal(m, pos.pinned_pieces(pos.side_to_move()))
&& ply < MAX_PLY