No functional change.
Closes #1111
S(-20,-12), S( 1, -8), S( 2, 10), S( 9, 10)
};
- // KingProtector[PieceType-2] * "distance to own king" determines a bonus for each piece.
- const Score KingProtector[] = {S(-3, -5), S(-4, -3), S(-3, 0), S(-1, 1) };
+ // KingProtector[PieceType-2] contains a bonus according to distance from king
+ const Score KingProtector[] = { S(-3, -5), S(-4, -3), S(-3, 0), S(-1, 1) };
// Assorted bonuses and penalties used by evaluation
const Score MinorBehindPawn = S( 16, 0);
int mob = popcount(b & ei.mobilityArea[Us]);
- mobility[Us] += MobilityBonus[Pt-2][mob];
+ mobility[Us] += MobilityBonus[Pt - 2][mob];
- score += KingProtector[Pt-2] * distance(s, pos.square<KING>(Us));
+ // Bonus for this piece as a king protector
+ score += KingProtector[Pt - 2] * distance(s, pos.square<KING>(Us));
if (Pt == BISHOP || Pt == KNIGHT)
{
move = pick_best(cur++, endMoves);
if (move != ttMove)
{
- if (pos.see_ge(move, VALUE_ZERO))
+ if (pos.see_ge(move))
return move;
// Losing capture, move it to the beginning of the array
&& popcount(phalanx) >= popcount(leverPush))
e->passedPawns[Us] |= s;
- else if ( stoppers == SquareBB[s + Up]
- && relative_rank(Us, s) >= RANK_5
- && (b = (shift<Up>(supported) & ~theirPawns)))
- while(b)
- if(!more_than_one(theirPawns & PawnAttacks[Us][pop_lsb(&b)]))
+ else if ( stoppers == SquareBB[s + Up]
+ && relative_rank(Us, s) >= RANK_5)
+ {
+ b = shift<Up>(supported) & ~theirPawns;
+ while (b)
+ if (!more_than_one(theirPawns & PawnAttacks[Us][pop_lsb(&b)]))
e->passedPawns[Us] |= s;
+ }
// Score this pawn
if (!neighbours)
score += Connected[opposed][!!phalanx][more_than_one(supported)][relative_rank(Us, s)];
if (doubled && !supported)
- score -= Doubled;
+ score -= Doubled;
if (lever)
score += Lever[relative_rank(Us, s)];
Bitboard b = stmAttackers & bb[Pt];
if (!b)
- return min_attacker<Pt+1>(bb, to, stmAttackers, occupied, attackers);
+ return min_attacker<Pt + 1>(bb, to, stmAttackers, occupied, attackers);
occupied ^= b & ~(b - 1);
void undo_null_move();
// Static Exchange Evaluation
- bool see_ge(Move m, Value value) const;
+ bool see_ge(Move m, Value value = VALUE_ZERO) const;
// Accessing hash keys
Key key() const;
// Step 1. Initialize node
Thread* thisThread = pos.this_thread();
inCheck = pos.checkers();
- moveCount = quietCount = ss->moveCount = 0;
+ moveCount = quietCount = ss->moveCount = 0;
ss->history = 0;
bestValue = -VALUE_INFINITE;
ss->ply = (ss-1)->ply + 1;
}
else if ( givesCheck
&& !moveCountPruning
- && pos.see_ge(move, VALUE_ZERO))
+ && pos.see_ge(move))
extension = ONE_PLY;
// Calculate new depth for this move
// Decrease reduction for moves that escape a capture. Filter out
// castling moves, because they are coded as "king captures rook" and
// hence break make_move().
- else if ( type_of(move) == NORMAL
- && !pos.see_ge(make_move(to_sq(move), from_sq(move)), VALUE_ZERO))
+ else if ( type_of(move) == NORMAL
+ && !pos.see_ge(make_move(to_sq(move), from_sq(move))))
r -= 2 * ONE_PLY;
ss->history = cmh[moved_piece][to_sq(move)]
: inCheck ? mated_in(ss->ply) : DrawValue[pos.side_to_move()];
else if (bestMove)
{
-
// Quiet best move: update move sorting heuristics
if (!pos.capture_or_promotion(bestMove))
update_stats(pos, ss, bestMove, quietsSearched, quietCount, stat_bonus(depth));
// Don't search moves with negative SEE values
if ( (!InCheck || evasionPrunable)
&& type_of(move) != PROMOTION
- && !pos.see_ge(move, VALUE_ZERO))
+ && !pos.see_ge(move))
continue;
// Speculative prefetch as early as possible