From a0486ecb40513db8141fa27c026f64771b8ebb55 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Ste=CC=81phane=20Nicolet?= Date: Sat, 2 Jun 2018 17:41:37 +0200 Subject: [PATCH] Fix comments, rename variables Thanks everybody for the various hints in the perpetual renaming thread: https://github.com/official-stockfish/Stockfish/issues/1426 No functional change --- src/pawns.cpp | 10 ++----- src/position.cpp | 13 +++++---- src/position.h | 8 +++--- src/search.cpp | 64 +++++++++++++++++++++--------------------- src/search.h | 4 +-- src/syzygy/tbprobe.cpp | 10 +++---- src/thread.cpp | 4 +-- src/thread.h | 6 ++-- 8 files changed, 58 insertions(+), 61 deletions(-) diff --git a/src/pawns.cpp b/src/pawns.cpp index 448c1191..a65f2338 100644 --- a/src/pawns.cpp +++ b/src/pawns.cpp @@ -31,18 +31,14 @@ namespace { #define V Value #define S(mg, eg) make_score(mg, eg) - // Isolated pawn penalty + // Pawn penalties constexpr Score Isolated = S(13, 16); - - // Backward pawn penalty constexpr Score Backward = S(17, 11); + constexpr Score Doubled = S(13, 40); // Connected pawn bonus by opposed, phalanx, #support and rank Score Connected[2][2][3][RANK_NB]; - // Doubled pawn penalty - constexpr Score Doubled = S(13, 40); - // 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. constexpr Value ShelterStrength[int(FILE_NB) / 2][RANK_NB] = { @@ -53,7 +49,7 @@ namespace { }; // Danger of enemy pawns moving toward our king by [distance from edge][rank]. - // RANK_1 = 0 is used for files where the enemy has no pawn, or their pawn + // RANK_1 = 0 is used for files where the enemy has no pawn, or their pawn // is behind our king. constexpr Value UnblockedStorm[int(FILE_NB) / 2][RANK_NB] = { { V( 25), V( 79), V(107), V( 51), V( 27), V( 0), V( 0) }, diff --git a/src/position.cpp b/src/position.cpp index 00e673b2..8dedce41 100644 --- a/src/position.cpp +++ b/src/position.cpp @@ -1193,14 +1193,15 @@ bool Position::has_game_cycle(int ply) const { || (j = H2(moveKey), cuckoo[j] == moveKey)) { Move move = cuckooMove[j]; - Square from = from_sq(move); - Square to = to_sq(move); + Square s1 = from_sq(move); + Square s2 = to_sq(move); - if (!(between_bb(from, to) & pieces())) + if (!(between_bb(s1, s2) & pieces())) { - // Take care to reverse the move in the no-progress case (opponent to move) - if (empty(from)) - move = make_move(to, from); + // In the cuckoo table, both moves Rc1c5 and Rc5c1 are stored in the same + // location. We select the legal one by reversing the move variable if necessary. + if (empty(s1)) + move = make_move(s2, s1); if (ply > i) return true; diff --git a/src/position.h b/src/position.h index 06000e0f..a40687e7 100644 --- a/src/position.h +++ b/src/position.h @@ -407,10 +407,10 @@ inline void Position::move_piece(Piece pc, Square from, Square to) { // index[from] is not updated and becomes stale. This works as long as index[] // is accessed just by known occupied squares. - Bitboard from_to_bb = SquareBB[from] ^ SquareBB[to]; - byTypeBB[ALL_PIECES] ^= from_to_bb; - byTypeBB[type_of(pc)] ^= from_to_bb; - byColorBB[color_of(pc)] ^= from_to_bb; + Bitboard fromTo = SquareBB[from] ^ SquareBB[to]; + byTypeBB[ALL_PIECES] ^= fromTo; + byTypeBB[type_of(pc)] ^= fromTo; + byColorBB[color_of(pc)] ^= fromTo; board[from] = NO_PIECE; board[to] = pc; index[to] = index[from]; diff --git a/src/search.cpp b/src/search.cpp index 8415e24d..b87c6894 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -353,17 +353,17 @@ void Thread::search() { for (RootMove& rm : rootMoves) rm.previousScore = rm.score; - size_t PVFirst = 0; - PVLast = 0; + size_t pvFirst = 0; + pvLast = 0; // MultiPV loop. We perform a full root search for each PV line - for (PVIdx = 0; PVIdx < multiPV && !Threads.stop; ++PVIdx) + for (pvIdx = 0; pvIdx < multiPV && !Threads.stop; ++pvIdx) { - if (PVIdx == PVLast) + if (pvIdx == pvLast) { - PVFirst = PVLast; - for (PVLast++; PVLast < rootMoves.size(); PVLast++) - if (rootMoves[PVLast].TBRank != rootMoves[PVFirst].TBRank) + pvFirst = pvLast; + for (pvLast++; pvLast < rootMoves.size(); pvLast++) + if (rootMoves[pvLast].tbRank != rootMoves[pvFirst].tbRank) break; } @@ -373,7 +373,7 @@ void Thread::search() { // Reset aspiration window starting size if (rootDepth >= 5 * ONE_PLY) { - Value previousScore = rootMoves[PVIdx].previousScore; + Value previousScore = rootMoves[pvIdx].previousScore; delta = Value(18); alpha = std::max(previousScore - delta,-VALUE_INFINITE); beta = std::min(previousScore + delta, VALUE_INFINITE); @@ -398,7 +398,7 @@ void Thread::search() { // and we want to keep the same order for all the moves except the // new PV that goes to the front. Note that in case of MultiPV // search the already searched PV lines are preserved. - std::stable_sort(rootMoves.begin() + PVIdx, rootMoves.begin() + PVLast); + std::stable_sort(rootMoves.begin() + pvIdx, rootMoves.begin() + pvLast); // If search has been stopped, we break immediately. Sorting is // safe because RootMoves is still valid, although it refers to @@ -438,10 +438,10 @@ void Thread::search() { } // Sort the PV lines searched so far and update the GUI - std::stable_sort(rootMoves.begin() + PVFirst, rootMoves.begin() + PVIdx + 1); + std::stable_sort(rootMoves.begin() + pvFirst, rootMoves.begin() + pvIdx + 1); if ( mainThread - && (Threads.stop || PVIdx + 1 == multiPV || Time.elapsed() > 3000)) + && (Threads.stop || pvIdx + 1 == multiPV || Time.elapsed() > 3000)) sync_cout << UCI::pv(rootPos, rootDepth, alpha, beta) << sync_endl; } @@ -613,7 +613,7 @@ namespace { posKey = pos.key() ^ Key(excludedMove << 16); // Isn't a very good hash tte = TT.probe(posKey, ttHit); ttValue = ttHit ? value_from_tt(tte->value(), ss->ply) : VALUE_NONE; - ttMove = rootNode ? thisThread->rootMoves[thisThread->PVIdx].pv[0] + ttMove = rootNode ? thisThread->rootMoves[thisThread->pvIdx].pv[0] : ttHit ? tte->move() : MOVE_NONE; // At non-PV nodes we check for an early TT cutoff @@ -751,7 +751,7 @@ namespace { && ss->staticEval >= beta - 36 * depth / ONE_PLY + 225 && !excludedMove && pos.non_pawn_material(us) - && (ss->ply > thisThread->nmp_min_ply || us != thisThread->nmp_color)) + && (ss->ply > thisThread->nmpMinPly || us != thisThread->nmpColor)) { assert(eval - beta >= 0); @@ -773,19 +773,19 @@ namespace { if (nullValue >= VALUE_MATE_IN_MAX_PLY) nullValue = beta; - if (thisThread->nmp_min_ply || (abs(beta) < VALUE_KNOWN_WIN && depth < 12 * ONE_PLY)) + if (thisThread->nmpMinPly || (abs(beta) < VALUE_KNOWN_WIN && depth < 12 * ONE_PLY)) return nullValue; - assert(!thisThread->nmp_min_ply); // Recursive verification is not allowed + assert(!thisThread->nmpMinPly); // Recursive verification is not allowed // Do verification search at high depths, with null move pruning disabled - // for us, until ply exceeds nmp_min_ply. - thisThread->nmp_min_ply = ss->ply + 3 * (depth-R) / 4 - 1; - thisThread->nmp_color = us; + // for us, until ply exceeds nmpMinPly. + thisThread->nmpMinPly = ss->ply + 3 * (depth-R) / 4 - 1; + thisThread->nmpColor = us; Value v = search(pos, ss, beta-1, beta, depth-R, false); - thisThread->nmp_min_ply = 0; + thisThread->nmpMinPly = 0; if (v >= beta) return nullValue; @@ -870,8 +870,8 @@ moves_loop: // When in check, search starts from here // Move List. As a consequence any illegal move is also skipped. In MultiPV // mode we also skip PV moves which have been already searched and those // of lower "TB rank" if we are in a TB root position. - if (rootNode && !std::count(thisThread->rootMoves.begin() + thisThread->PVIdx, - thisThread->rootMoves.begin() + thisThread->PVLast, move)) + if (rootNode && !std::count(thisThread->rootMoves.begin() + thisThread->pvIdx, + thisThread->rootMoves.begin() + thisThread->pvLast, move)) continue; ss->moveCount = ++moveCount; @@ -879,7 +879,7 @@ moves_loop: // When in check, search starts from here if (rootNode && thisThread == Threads.main() && Time.elapsed() > 3000) sync_cout << "info depth " << depth / ONE_PLY << " currmove " << UCI::move(move, pos.is_chess960()) - << " currmovenumber " << moveCount + thisThread->PVIdx << sync_endl; + << " currmovenumber " << moveCount + thisThread->pvIdx << sync_endl; if (PvNode) (ss+1)->pv = nullptr; @@ -995,11 +995,11 @@ moves_loop: // When in check, search starts from here if (captureOrPromotion) // (~5 Elo) { - //Increase reduction by comparing opponent's stat score - if ( (ss-1)->statScore >= 0 + // Increase reduction by comparing opponent's stat score + if ( (ss-1)->statScore >= 0 && thisThread->captureHistory[movedPiece][to_sq(move)][type_of(pos.captured_piece())] < 0) r += ONE_PLY; - + r -= r ? ONE_PLY : DEPTH_ZERO; } else @@ -1576,14 +1576,14 @@ string UCI::pv(const Position& pos, Depth depth, Value alpha, Value beta) { std::stringstream ss; TimePoint elapsed = Time.elapsed() + 1; const RootMoves& rootMoves = pos.this_thread()->rootMoves; - size_t PVIdx = pos.this_thread()->PVIdx; + size_t pvIdx = pos.this_thread()->pvIdx; size_t multiPV = std::min((size_t)Options["MultiPV"], rootMoves.size()); uint64_t nodesSearched = Threads.nodes_searched(); uint64_t tbHits = Threads.tb_hits() + (TB::RootInTB ? rootMoves.size() : 0); for (size_t i = 0; i < multiPV; ++i) { - bool updated = (i <= PVIdx && rootMoves[i].score != -VALUE_INFINITE); + bool updated = (i <= pvIdx && rootMoves[i].score != -VALUE_INFINITE); if (depth == ONE_PLY && !updated) continue; @@ -1592,7 +1592,7 @@ string UCI::pv(const Position& pos, Depth depth, Value alpha, Value beta) { Value v = updated ? rootMoves[i].score : rootMoves[i].previousScore; bool tb = TB::RootInTB && abs(v) < VALUE_MATE - MAX_PLY; - v = tb ? rootMoves[i].TBScore : v; + v = tb ? rootMoves[i].tbScore : v; if (ss.rdbuf()->in_avail()) // Not at first line ss << "\n"; @@ -1603,7 +1603,7 @@ string UCI::pv(const Position& pos, Depth depth, Value alpha, Value beta) { << " multipv " << i + 1 << " score " << UCI::value(v); - if (!tb && i == PVIdx) + if (!tb && i == pvIdx) ss << (v >= beta ? " lowerbound" : v <= alpha ? " upperbound" : ""); ss << " nodes " << nodesSearched @@ -1686,16 +1686,16 @@ void Tablebases::rank_root_moves(Position& pos, Search::RootMoves& rootMoves) { { // Sort moves according to TB rank std::sort(rootMoves.begin(), rootMoves.end(), - [](const RootMove &a, const RootMove &b) { return a.TBRank > b.TBRank; } ); + [](const RootMove &a, const RootMove &b) { return a.tbRank > b.tbRank; } ); // Probe during search only if DTZ is not available and we are winning - if (dtz_available || rootMoves[0].TBScore <= VALUE_DRAW) + if (dtz_available || rootMoves[0].tbScore <= VALUE_DRAW) Cardinality = 0; } else { // Assign the same rank to all moves for (auto& m : rootMoves) - m.TBRank = 0; + m.tbRank = 0; } } diff --git a/src/search.h b/src/search.h index 2ef53b4c..26ec6f01 100644 --- a/src/search.h +++ b/src/search.h @@ -69,8 +69,8 @@ struct RootMove { Value score = -VALUE_INFINITE; Value previousScore = -VALUE_INFINITE; int selDepth = 0; - int TBRank; - Value TBScore; + int tbRank; + Value tbScore; std::vector pv; }; diff --git a/src/syzygy/tbprobe.cpp b/src/syzygy/tbprobe.cpp index 2b7f4497..da6dc49f 100644 --- a/src/syzygy/tbprobe.cpp +++ b/src/syzygy/tbprobe.cpp @@ -973,7 +973,7 @@ uint8_t* set_sizes(PairsData* d, uint8_t* data) { d->symlen.resize(number(data)); data += sizeof(uint16_t); d->btree = (LR*)data; - // The comrpession scheme used is "Recursive Pairing", that replaces the most + // The compression scheme used is "Recursive Pairing", that replaces the most // frequent adjacent pair of symbols in the source message by a new symbol, // reevaluating the frequencies of all of the symbol pairs with respect to // the extended alphabet, and then repeating the process. @@ -1491,12 +1491,12 @@ bool Tablebases::root_probe(Position& pos, Search::RootMoves& rootMoves) { int r = dtz > 0 ? (dtz + cnt50 <= 99 && !rep ? 1000 : 1000 - (dtz + cnt50)) : dtz < 0 ? (-dtz * 2 + cnt50 < 100 ? -1000 : -1000 + (-dtz + cnt50)) : 0; - m.TBRank = r; + m.tbRank = r; // Determine the score to be displayed for this move. Assign at least // 1 cp to cursed wins and let it grow to 49 cp as the positions gets // closer to a real win. - m.TBScore = r >= bound ? VALUE_MATE - MAX_PLY - 1 + m.tbScore = r >= bound ? VALUE_MATE - MAX_PLY - 1 : r > 0 ? Value((std::max( 3, r - 800) * int(PawnValueEg)) / 200) : r == 0 ? VALUE_DRAW : r > -bound ? Value((std::min(-3, r + 800) * int(PawnValueEg)) / 200) @@ -1532,12 +1532,12 @@ bool Tablebases::root_probe_wdl(Position& pos, Search::RootMoves& rootMoves) { if (result == FAIL) return false; - m.TBRank = WDL_to_rank[wdl + 2]; + m.tbRank = WDL_to_rank[wdl + 2]; if (!rule50) wdl = wdl > WDLDraw ? WDLWin : wdl < WDLDraw ? WDLLoss : WDLDraw; - m.TBScore = WDL_to_value[wdl + 2]; + m.tbScore = WDL_to_value[wdl + 2]; } return true; diff --git a/src/thread.cpp b/src/thread.cpp index 43a38e80..f9809275 100644 --- a/src/thread.cpp +++ b/src/thread.cpp @@ -118,7 +118,7 @@ void Thread::idle_loop() { } /// ThreadPool::set() creates/destroys threads to match the requested number. -/// Created and launched threads wil go immediately to sleep in idle_loop. +/// Created and launched threads will go immediately to sleep in idle_loop. /// Upon resizing, threads are recreated to allow for binding if necessary. void ThreadPool::set(size_t requested) { @@ -191,7 +191,7 @@ void ThreadPool::start_thinking(Position& pos, StateListPtr& states, for (Thread* th : *this) { - th->nodes = th->tbHits = th->nmp_min_ply = 0; + th->nodes = th->tbHits = th->nmpMinPly = 0; th->rootDepth = th->completedDepth = DEPTH_ZERO; th->rootMoves = rootMoves; th->rootPos.set(pos.fen(), pos.is_chess960(), &setupStates->back(), th); diff --git a/src/thread.h b/src/thread.h index 45124d02..341bb9af 100644 --- a/src/thread.h +++ b/src/thread.h @@ -60,9 +60,9 @@ public: Pawns::Table pawnsTable; Material::Table materialTable; Endgames endgames; - size_t PVIdx, PVLast; - int selDepth, nmp_min_ply; - Color nmp_color; + size_t pvIdx, pvLast; + int selDepth, nmpMinPly; + Color nmpColor; std::atomic nodes, tbHits; Position rootPos; -- 2.39.2