mirror of
https://github.com/sockspls/badfish
synced 2025-04-30 08:43:09 +00:00
Accurate PV: codying style
No functional change.
This commit is contained in:
parent
1a939cd8c8
commit
7f83a93558
2 changed files with 20 additions and 21 deletions
|
@ -466,10 +466,7 @@ namespace {
|
||||||
ss->ttMove = ttMove = RootNode ? RootMoves[PVIdx].pv[0] : tte ? tte->move() : MOVE_NONE;
|
ss->ttMove = ttMove = RootNode ? RootMoves[PVIdx].pv[0] : tte ? tte->move() : MOVE_NONE;
|
||||||
ttValue = tte ? value_from_tt(tte->value(), ss->ply) : VALUE_NONE;
|
ttValue = tte ? value_from_tt(tte->value(), ss->ply) : VALUE_NONE;
|
||||||
|
|
||||||
// At PV nodes we check for exact scores, whilst at non-PV nodes we check for
|
// At non-PV nodes we check for a fail high/low. We don't probe at PV nodes
|
||||||
// a fail high/low. The biggest advantage to probing at PV nodes is to have a
|
|
||||||
// smooth experience in analysis mode. We don't probe at Root nodes otherwise
|
|
||||||
// we should also update RootMoveList to avoid bogus output.
|
|
||||||
if ( !PvNode
|
if ( !PvNode
|
||||||
&& tte
|
&& tte
|
||||||
&& tte->depth() >= depth
|
&& tte->depth() >= depth
|
||||||
|
@ -865,7 +862,8 @@ moves_loop: // When in check and at SpNode search starts from here
|
||||||
// For PV nodes only, do a full PV search on the first move or after a fail
|
// For PV nodes only, do a full PV search on the first move or after a fail
|
||||||
// high (in the latter case search only if value < beta), otherwise let the
|
// high (in the latter case search only if value < beta), otherwise let the
|
||||||
// parent node fail low with value <= alpha and to try another move.
|
// parent node fail low with value <= alpha and to try another move.
|
||||||
if (PvNode && (moveCount == 1 || (value > alpha && (RootNode || value < beta)))) {
|
if (PvNode && (moveCount == 1 || (value > alpha && (RootNode || value < beta))))
|
||||||
|
{
|
||||||
pv.pv[0] = MOVE_NONE;
|
pv.pv[0] = MOVE_NONE;
|
||||||
(ss+1)->pv = &pv;
|
(ss+1)->pv = &pv;
|
||||||
value = newDepth < ONE_PLY ?
|
value = newDepth < ONE_PLY ?
|
||||||
|
@ -873,6 +871,7 @@ moves_loop: // When in check and at SpNode search starts from here
|
||||||
: -qsearch<PV, false>(pos, ss+1, -beta, -alpha, DEPTH_ZERO)
|
: -qsearch<PV, false>(pos, ss+1, -beta, -alpha, DEPTH_ZERO)
|
||||||
: - search<PV, false>(pos, ss+1, -beta, -alpha, newDepth, false);
|
: - search<PV, false>(pos, ss+1, -beta, -alpha, newDepth, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Step 17. Undo move
|
// Step 17. Undo move
|
||||||
pos.undo_move(move);
|
pos.undo_move(move);
|
||||||
|
|
||||||
|
@ -925,7 +924,8 @@ moves_loop: // When in check and at SpNode search starts from here
|
||||||
{
|
{
|
||||||
bestMove = SpNode ? splitPoint->bestMove = move : move;
|
bestMove = SpNode ? splitPoint->bestMove = move : move;
|
||||||
|
|
||||||
if (NT == PV) {
|
if (PvNode && !RootNode)
|
||||||
|
{
|
||||||
ss->pv->update(move, (ss+1)->pv);
|
ss->pv->update(move, (ss+1)->pv);
|
||||||
if (SpNode)
|
if (SpNode)
|
||||||
splitPoint->ss->pv->update(move, (ss+1)->pv);
|
splitPoint->ss->pv->update(move, (ss+1)->pv);
|
||||||
|
@ -1024,10 +1024,9 @@ moves_loop: // When in check and at SpNode search starts from here
|
||||||
bool givesCheck, evasionPrunable;
|
bool givesCheck, evasionPrunable;
|
||||||
Depth ttDepth;
|
Depth ttDepth;
|
||||||
|
|
||||||
if (PvNode) {
|
if (PvNode)
|
||||||
// To flag BOUND_EXACT a node with eval above alpha and no available moves
|
{
|
||||||
oldAlpha = alpha;
|
oldAlpha = alpha; // To flag BOUND_EXACT when eval above alpha and no available moves
|
||||||
|
|
||||||
(ss+1)->pv = &pv;
|
(ss+1)->pv = &pv;
|
||||||
ss->pv->pv[0] = MOVE_NONE;
|
ss->pv->pv[0] = MOVE_NONE;
|
||||||
}
|
}
|
||||||
|
@ -1371,15 +1370,17 @@ void RootMove::insert_pv_in_tt(Position& pos) {
|
||||||
|
|
||||||
StateInfo state[MAX_PLY], *st = state;
|
StateInfo state[MAX_PLY], *st = state;
|
||||||
const TTEntry* tte;
|
const TTEntry* tte;
|
||||||
int idx = 0;
|
size_t idx = 0;
|
||||||
|
|
||||||
for (; idx < int(pv.size()); ++idx) {
|
for ( ; idx < pv.size(); ++idx)
|
||||||
|
{
|
||||||
tte = TT.probe(pos.key());
|
tte = TT.probe(pos.key());
|
||||||
|
|
||||||
if (!tte || tte->move() != pv[idx]) // Don't overwrite correct entries
|
if (!tte || tte->move() != pv[idx]) // Don't overwrite correct entries
|
||||||
TT.store(pos.key(), VALUE_NONE, BOUND_NONE, DEPTH_NONE, pv[idx], VALUE_NONE);
|
TT.store(pos.key(), VALUE_NONE, BOUND_NONE, DEPTH_NONE, pv[idx], VALUE_NONE);
|
||||||
|
|
||||||
assert(MoveList<LEGAL>(pos).contains(pv[idx]));
|
assert(MoveList<LEGAL>(pos).contains(pv[idx]));
|
||||||
|
|
||||||
pos.do_move(pv[idx], *st++);
|
pos.do_move(pv[idx], *st++);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -36,10 +36,8 @@ struct PVEntry {
|
||||||
Move pv[MAX_PLY+1];
|
Move pv[MAX_PLY+1];
|
||||||
|
|
||||||
void update(Move move, PVEntry* child) {
|
void update(Move move, PVEntry* child) {
|
||||||
pv[0] = move;
|
|
||||||
|
|
||||||
int i = 1;
|
int i = 1;
|
||||||
for (; child && i < MAX_PLY && child->pv[i - 1] != MOVE_NONE; ++i)
|
for (pv[0] = move; child && i < MAX_PLY && child->pv[i - 1] != MOVE_NONE; ++i)
|
||||||
pv[i] = child->pv[i - 1];
|
pv[i] = child->pv[i - 1];
|
||||||
pv[i] = MOVE_NONE;
|
pv[i] = MOVE_NONE;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue