pv[ply] = pv[ply + 1] = MOVE_NONE;
currentMove = threatMove = MOVE_NONE;
reduction = Depth(0);
+ eval = VALUE_NONE;
}
void SearchStack::initKillers() {
const int FutilityValueMargin = 112 * bitScanReverse32(int(depth) * int(depth) / 2);
// Enhance score accuracy with TT value if possible
+ ss[ply].eval = staticValue;
futilityValue = staticValue + FutilityValueMargin;
staticValue = refine_eval(tte, staticValue, ply);
}
// Null move search not allowed, try razoring
else if ( !value_is_mate(beta)
+ && !isCheck
&& depth < RazorDepth
- && staticValue < beta - (depth > OnePly ? NullMoveMargin + 16 * depth : 2*NullMoveMargin)
+ && staticValue < beta - (NullMoveMargin + 16 * depth)
&& ss[ply - 1].currentMove != MOVE_NULL
&& ttMove == MOVE_NONE
&& !pos.has_pawn_on_7th(pos.side_to_move()))