1
0
Fork 0
mirror of https://github.com/sockspls/badfish synced 2025-04-29 16:23:09 +00:00

Revert "Pass evalMargin through SearchStack as eval"

Restore full no functional change also in Faked Split mode.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
Marco Costalba 2010-10-16 11:54:44 +01:00
parent 141caf1d5b
commit 3b7bf34b02
2 changed files with 11 additions and 12 deletions

View file

@ -700,7 +700,7 @@ namespace {
int64_t nodes; int64_t nodes;
Move move; Move move;
Depth depth, ext, newDepth; Depth depth, ext, newDepth;
Value value, alpha, beta; Value value, evalMargin, alpha, beta;
bool isCheck, moveIsCheck, captureOrPromotion, dangerous; bool isCheck, moveIsCheck, captureOrPromotion, dangerous;
int researchCountFH, researchCountFL; int researchCountFH, researchCountFL;
@ -719,8 +719,7 @@ namespace {
// Step 5. Evaluate the position statically // Step 5. Evaluate the position statically
// At root we do this only to get reference value for child nodes // At root we do this only to get reference value for child nodes
ss->evalMargin = VALUE_NONE; ss->eval = isCheck ? VALUE_NONE : evaluate(pos, evalMargin);
ss->eval = isCheck ? VALUE_NONE : evaluate(pos, ss->evalMargin);
// Step 6. Razoring (omitted at root) // Step 6. Razoring (omitted at root)
// Step 7. Static null move pruning (omitted at root) // Step 7. Static null move pruning (omitted at root)
@ -966,7 +965,7 @@ namespace {
Key posKey; Key posKey;
Move ttMove, move, excludedMove, threatMove; Move ttMove, move, excludedMove, threatMove;
Depth ext, newDepth; Depth ext, newDepth;
Value bestValue, value, oldAlpha; Value bestValue, value, evalMargin, oldAlpha;
Value refinedValue, nullValue, futilityBase, futilityValueScaled; // Non-PV specific Value refinedValue, nullValue, futilityBase, futilityValueScaled; // Non-PV specific
bool isCheck, singleEvasion, singularExtensionNode, moveIsCheck, captureOrPromotion, dangerous; bool isCheck, singleEvasion, singularExtensionNode, moveIsCheck, captureOrPromotion, dangerous;
bool mateThreat = false; bool mateThreat = false;
@ -981,6 +980,7 @@ namespace {
{ {
sp = ss->sp; sp = ss->sp;
tte = NULL; tte = NULL;
evalMargin = VALUE_ZERO;
ttMove = excludedMove = MOVE_NONE; ttMove = excludedMove = MOVE_NONE;
threatMove = sp->threatMove; threatMove = sp->threatMove;
mateThreat = sp->mateThreat; mateThreat = sp->mateThreat;
@ -1041,19 +1041,19 @@ namespace {
// Step 5. Evaluate the position statically and // Step 5. Evaluate the position statically and
// update gain statistics of parent move. // update gain statistics of parent move.
if (isCheck) if (isCheck)
ss->eval = ss->evalMargin = VALUE_NONE; ss->eval = evalMargin = VALUE_NONE;
else if (tte) else if (tte)
{ {
assert(tte->static_value() != VALUE_NONE); assert(tte->static_value() != VALUE_NONE);
ss->eval = tte->static_value(); ss->eval = tte->static_value();
ss->evalMargin = tte->static_value_margin(); evalMargin = tte->static_value_margin();
refinedValue = refine_eval(tte, ss->eval, ply); refinedValue = refine_eval(tte, ss->eval, ply);
} }
else else
{ {
refinedValue = ss->eval = evaluate(pos, ss->evalMargin); refinedValue = ss->eval = evaluate(pos, evalMargin);
TT.store(posKey, VALUE_NONE, VALUE_TYPE_NONE, DEPTH_NONE, MOVE_NONE, ss->eval, ss->evalMargin); TT.store(posKey, VALUE_NONE, VALUE_TYPE_NONE, DEPTH_NONE, MOVE_NONE, ss->eval, evalMargin);
} }
// Save gain for the parent non-capture move // Save gain for the parent non-capture move
@ -1179,7 +1179,7 @@ split_point_start: // At split points actual search starts from here
CheckInfo ci(pos); CheckInfo ci(pos);
ss->bestMove = MOVE_NONE; ss->bestMove = MOVE_NONE;
singleEvasion = !SpNode && isCheck && mp.number_of_evasions() == 1; singleEvasion = !SpNode && isCheck && mp.number_of_evasions() == 1;
futilityBase = ss->eval + ss->evalMargin; futilityBase = ss->eval + evalMargin;
singularExtensionNode = !SpNode singularExtensionNode = !SpNode
&& depth >= SingularExtensionDepth[PvNode] && depth >= SingularExtensionDepth[PvNode]
&& tte && tte
@ -1421,7 +1421,7 @@ split_point_start: // At split points actual search starts from here
ValueType vt = (bestValue <= oldAlpha ? VALUE_TYPE_UPPER : bestValue >= beta ? VALUE_TYPE_LOWER : VALUE_TYPE_EXACT); ValueType vt = (bestValue <= oldAlpha ? VALUE_TYPE_UPPER : bestValue >= beta ? VALUE_TYPE_LOWER : VALUE_TYPE_EXACT);
move = (bestValue <= oldAlpha ? MOVE_NONE : ss->bestMove); move = (bestValue <= oldAlpha ? MOVE_NONE : ss->bestMove);
TT.store(posKey, value_to_tt(bestValue, ply), vt, depth, move, ss->eval, ss->evalMargin); TT.store(posKey, value_to_tt(bestValue, ply), vt, depth, move, ss->eval, evalMargin);
// Update killers and history only for non capture moves that fails high // Update killers and history only for non capture moves that fails high
if ( bestValue >= beta if ( bestValue >= beta
@ -2576,7 +2576,7 @@ split_point_start: // At split points actual search starts from here
// Initialize search stack // Initialize search stack
init_ss_array(ss, PLY_MAX_PLUS_2); init_ss_array(ss, PLY_MAX_PLUS_2);
ss[0].eval = ss[0].evalMargin = VALUE_NONE; ss[0].eval = VALUE_NONE;
count = 0; count = 0;
// Generate all legal moves // Generate all legal moves

View file

@ -57,7 +57,6 @@ struct SearchStack {
Move killers[2]; Move killers[2];
Depth reduction; Depth reduction;
Value eval; Value eval;
Value evalMargin;
bool skipNullMove; bool skipNullMove;
SplitPoint* sp; SplitPoint* sp;
}; };