mirror of
https://github.com/sockspls/badfish
synced 2025-04-29 16:23:09 +00:00
Another attempt at evaluation shortcut
In this case we try a rather drastic approach: we simply don't futility prune in qsearch when arriving from a null move. So we save evaluating and also save to mess with eval margins at all because margin is used only in futility. Also accuracy should not be affected, actually it improves because we don't prune anything anymore. bench: 5404066
This commit is contained in:
parent
a5b1f4774f
commit
c581b7ea36
1 changed files with 9 additions and 2 deletions
|
@ -1102,11 +1102,12 @@ split_point_start: // At split points actual search starts from here
|
|||
Key posKey;
|
||||
Move ttMove, move, bestMove;
|
||||
Value bestValue, value, ttValue, futilityValue, futilityBase;
|
||||
bool givesCheck, enoughMaterial, evasionPrunable;
|
||||
bool givesCheck, enoughMaterial, evasionPrunable, fromNull;
|
||||
Depth ttDepth;
|
||||
|
||||
ss->currentMove = bestMove = MOVE_NONE;
|
||||
ss->ply = (ss-1)->ply + 1;
|
||||
fromNull = (ss-1)->currentMove == MOVE_NULL;
|
||||
|
||||
// Check for an instant draw or maximum ply reached
|
||||
if (pos.is_draw<false, false>() || ss->ply > MAX_PLY)
|
||||
|
@ -1144,7 +1145,12 @@ split_point_start: // At split points actual search starts from here
|
|||
}
|
||||
else
|
||||
{
|
||||
if (tte)
|
||||
if (fromNull)
|
||||
{
|
||||
ss->staticEval = bestValue = -(ss-1)->staticEval;
|
||||
ss->evalMargin = VALUE_ZERO;
|
||||
}
|
||||
else if (tte)
|
||||
{
|
||||
assert(tte->static_value() != VALUE_NONE || Threads.size() > 1);
|
||||
|
||||
|
@ -1192,6 +1198,7 @@ split_point_start: // At split points actual search starts from here
|
|||
if ( !PvNode
|
||||
&& !InCheck
|
||||
&& !givesCheck
|
||||
&& !fromNull
|
||||
&& move != ttMove
|
||||
&& enoughMaterial
|
||||
&& type_of(move) != PROMOTION
|
||||
|
|
Loading…
Add table
Reference in a new issue