This is more correct because we let evaluate()
to be a pure dispatcher and also now evaluate
and tracing outputs are consistent.
No functional change.
// If we have a specialized evaluation function for the current material
// configuration, call it and return.
if (ei.mi->specialized_eval_exists())
// If we have a specialized evaluation function for the current material
// configuration, call it and return.
if (ei.mi->specialized_eval_exists())
- return ei.mi->evaluate(pos);
+ return ei.mi->evaluate(pos) + Eval::Tempo;
// Probe the pawn hash table
ei.pi = Pawns::probe(pos, thisThread->pawnsTable);
// Probe the pawn hash table
ei.pi = Pawns::probe(pos, thisThread->pawnsTable);
- return pos.side_to_move() == WHITE ? v : -v;
+ return (pos.side_to_move() == WHITE ? v : -v) + Eval::Tempo;
/// of the position always from the point of view of the side to move.
Value evaluate(const Position& pos) {
/// of the position always from the point of view of the side to move.
Value evaluate(const Position& pos) {
- return do_evaluate<false>(pos) + Tempo;
+ return do_evaluate<false>(pos);