Skip to content
Browse files

qsearch: do not call evaluate when in check

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
  • Loading branch information...
1 parent a55b06d commit bfbfc24d07ecd9ad272175b0470e7cf207583b87 @mcostalba committed Dec 16, 2008
Showing with 5 additions and 5 deletions.
  1. +5 −5 src/search.cpp
View
10 src/search.cpp
@@ -1439,14 +1439,15 @@ namespace {
return value_from_tt(tte->value(), ply);
// Evaluate the position statically
- Value staticValue = evaluate(pos, ei, threadID);
+ bool isCheck = pos.is_check();
+ Value staticValue = (isCheck ? -VALUE_INFINITE : evaluate(pos, ei, threadID));
if (ply == PLY_MAX - 1)
- return staticValue;
+ return evaluate(pos, ei, threadID);
// Initialize "stand pat score", and return it immediately if it is
// at least beta.
- Value bestValue = (pos.is_check() ? -VALUE_INFINITE : staticValue);
+ Value bestValue = staticValue;
if (bestValue >= beta)
return bestValue;
@@ -1458,11 +1459,10 @@ namespace {
// to search the moves. Because the depth is <= 0 here, only captures,
// queen promotions and checks (only if depth == 0) will be generated.
bool pvNode = (beta - alpha != 1);
- MovePicker mp = MovePicker(pos, pvNode, MOVE_NONE, EmptySearchStack, depth, &ei);
+ MovePicker mp = MovePicker(pos, pvNode, MOVE_NONE, EmptySearchStack, depth, isCheck ? NULL : &ei);
Move move;
int moveCount = 0;
Bitboard dcCandidates = mp.discovered_check_candidates();
- bool isCheck = pos.is_check();
bool enoughMaterial = pos.non_pawn_material(pos.side_to_move()) > RookValueMidgame;
// Loop through the moves until no moves remain or a beta cutoff

0 comments on commit bfbfc24

Please sign in to comment.
Something went wrong with that request. Please try again.