mirror of
https://github.com/sockspls/badfish
synced 2025-04-30 00:33: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:
parent
141caf1d5b
commit
3b7bf34b02
2 changed files with 11 additions and 12 deletions
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Reference in a new issue