ct = Options["Contempt"] * PawnValueEg / 100; // From centipawns
// Adjust contempt based on current bestValue (dynamic contempt)
- int sign = (bestValue > 0) - (bestValue < 0);
- ct += bestValue > 500 ? 70 :
- bestValue < -500 ? -70 :
- bestValue / 10 + sign * int(std::round(3.22 * log(1 + abs(bestValue))));
+ ct += int(std::round(48 * atan(float(bestValue) / 128)));
Eval::Contempt = (us == WHITE ? make_score(ct, ct / 2)
: -make_score(ct, ct / 2));
if (inCheck)
{
ss->staticEval = eval = VALUE_NONE;
+ improving = true;
goto moves_loop;
}
else if (ttHit)
}
improving = ss->staticEval >= (ss-2)->staticEval
- /* || ss->staticEval == VALUE_NONE Already implicit in the previous condition */
||(ss-2)->staticEval == VALUE_NONE;
if (skipEarlyPruning || !pos.non_pawn_material(pos.side_to_move()))
MovePicker mp(pos, ttMove, depth, &thisThread->mainHistory, &thisThread->captureHistory, contHist, countermove, ss->killers);
value = bestValue; // Workaround a bogus 'uninitialized' warning under gcc
- improving = ss->staticEval >= (ss-2)->staticEval
- /* || ss->staticEval == VALUE_NONE Already implicit in the previous condition */
- ||(ss-2)->staticEval == VALUE_NONE;
singularExtensionNode = !rootNode
&& depth >= 8 * ONE_PLY