Spotted by Alain Savard, Joost VandeVondele, Ronald de Man, Fabian Fichter, Chris Cain, xoto10
No functional change
braich
Brian Sheppard (SapphireBrand)
Bryan Cross (crossbr)
braich
Brian Sheppard (SapphireBrand)
Bryan Cross (crossbr)
Chris Cain (ceebo)
Dan Schmidt
Daniel Dugovic (ddugovic)
Chris Cain (ceebo)
Dan Schmidt
Daniel Dugovic (ddugovic)
Nathan Rugg (nmrugg)
Nicklas Persson (NicklasPersson)
Niklas Fiekas (niklasf)
Nathan Rugg (nmrugg)
Nicklas Persson (NicklasPersson)
Niklas Fiekas (niklasf)
Oskar Werkelin Ahlin
Pablo Vazquez
Pascal Romaret
Oskar Werkelin Ahlin
Pablo Vazquez
Pascal Romaret
} // w != 0
// Scale down bonus for candidate passers which need more than one
} // w != 0
// Scale down bonus for candidate passers which need more than one
- // pawn push to become passed or have a pawn in front of them.
+ // pawn push to become passed, or have a pawn in front of them.
if ( !pos.pawn_passed(Us, s + Up)
|| (pos.pieces(PAWN) & forward_file_bb(Us, s)))
bonus = bonus / 2;
if ( !pos.pawn_passed(Us, s + Up)
|| (pos.pieces(PAWN) & forward_file_bb(Us, s)))
bonus = bonus / 2;
if (pos.non_pawn_material() < SpaceThreshold)
return SCORE_ZERO;
if (pos.non_pawn_material() < SpaceThreshold)
return SCORE_ZERO;
- // Find the safe squares for our pieces inside the area defined by
- // SpaceMask. A square is unsafe if it is attacked by an enemy
- // pawn, or if it is undefended and attacked by an enemy piece.
+ // Find the available squares for our pieces inside the area defined by SpaceMask
Bitboard safe = SpaceMask
& ~pos.pieces(Us, PAWN)
& ~attackedBy[Them][PAWN];
Bitboard safe = SpaceMask
& ~pos.pieces(Us, PAWN)
& ~attackedBy[Them][PAWN];
operator TT() const { return entry; }
void operator<<(int bonus) {
operator TT() const { return entry; }
void operator<<(int bonus) {
- assert(abs(bonus) <= D); // Ensure range is [-D, D]
- assert(D < std::numeric_limits<T>::max()); // Ensure we don't overflow
+ assert(abs(bonus) <= D); // Ensure range is [-D, D]
+ static_assert(D <= std::numeric_limits<T>::max(), "D overflows T");
entry += bonus - entry * abs(bonus) / D;
entry += bonus - entry * abs(bonus) / D;
// Strength of pawn shelter for our king by [distance from edge][rank].
// RANK_1 = 0 is used for files where we have no pawn, or pawn is behind our king.
// Strength of pawn shelter for our king by [distance from edge][rank].
// RANK_1 = 0 is used for files where we have no pawn, or pawn is behind our king.
- Value ShelterStrength[int(FILE_NB) / 2][RANK_NB] = {
+ constexpr Value ShelterStrength[int(FILE_NB) / 2][RANK_NB] = {
{ V( -9), V(64), V(77), V( 44), V( 4), V( -1), V(-11) },
{ V(-15), V(83), V(51), V(-10), V( 1), V(-10), V(-28) },
{ V(-18), V(84), V(27), V(-12), V(21), V( -7), V(-36) },
{ V( -9), V(64), V(77), V( 44), V( 4), V( -1), V(-11) },
{ V(-15), V(83), V(51), V(-10), V( 1), V(-10), V(-28) },
{ V(-18), V(84), V(27), V(-12), V(21), V( -7), V(-36) },
const PieceToHistory* contHist[] = { (ss-1)->contHistory, (ss-2)->contHistory, nullptr, (ss-4)->contHistory };
Move countermove = thisThread->counterMoves[pos.piece_on(prevSq)][prevSq];
const PieceToHistory* contHist[] = { (ss-1)->contHistory, (ss-2)->contHistory, nullptr, (ss-4)->contHistory };
Move countermove = thisThread->counterMoves[pos.piece_on(prevSq)][prevSq];
- MovePicker mp(pos, ttMove, depth, &thisThread->mainHistory, &thisThread->captureHistory, contHist, countermove, ss->killers);
+ MovePicker mp(pos, ttMove, depth, &thisThread->mainHistory,
+ &thisThread->captureHistory,
+ contHist,
+ countermove,
+ ss->killers);
value = bestValue; // Workaround a bogus 'uninitialized' warning under gcc
skipQuiets = false;
value = bestValue; // Workaround a bogus 'uninitialized' warning under gcc
skipQuiets = false;
// to search the moves. Because the depth is <= 0 here, only captures,
// queen promotions and checks (only if depth >= DEPTH_QS_CHECKS) will
// be generated.
// to search the moves. Because the depth is <= 0 here, only captures,
// queen promotions and checks (only if depth >= DEPTH_QS_CHECKS) will
// be generated.
- MovePicker mp(pos, ttMove, depth, &pos.this_thread()->mainHistory, &pos.this_thread()->captureHistory, to_sq((ss-1)->currentMove));
+ MovePicker mp(pos, ttMove, depth, &pos.this_thread()->mainHistory,
+ &pos.this_thread()->captureHistory,
+ to_sq((ss-1)->currentMove));
// Loop through the moves until no moves remain or a beta cutoff occurs
while ((move = mp.next_move()) != MOVE_NONE)
// Loop through the moves until no moves remain or a beta cutoff occurs
while ((move = mp.next_move()) != MOVE_NONE)
}
/// ThreadPool::set() creates/destroys threads to match the requested number.
}
/// ThreadPool::set() creates/destroys threads to match the requested number.
-/// Created and launced threads wil go immediately to sleep in idle_loop.
+/// Created and launched threads wil go immediately to sleep in idle_loop.
/// Upon resizing, threads are recreated to allow for binding if necessary.
void ThreadPool::set(size_t requested) {
/// Upon resizing, threads are recreated to allow for binding if necessary.
void ThreadPool::set(size_t requested) {