Skip to content
Browse files

Update SEE to return a Value

It seems more natural because the actual returned
value is from PieceValue[] array.

No functional change.
  • Loading branch information...
1 parent 17ffc22 commit 7b0a2f2a90b63d9e5e092786fbfb54cd8ad3d8e5 @mcostalba committed
Showing with 17 additions and 15 deletions.
  1. +3 −3 src/movepick.cpp
  2. +2 −1 src/movepick.h
  3. +6 −5 src/position.cpp
  4. +2 −2 src/position.h
  5. +4 −4 src/search.cpp
View
6 src/movepick.cpp
@@ -193,12 +193,12 @@ void MovePicker::score<EVASIONS>() {
// is not under attack, ordered by history value, then bad-captures and quiet
// moves with a negative SEE. This last group is ordered by the SEE score.
Move m;
- int seeScore;
+ Value seeScore;
for (ExtMove* it = moves; it != end; ++it)
{
m = it->move;
- if ((seeScore = pos.see_sign(m)) < 0)
+ if ((seeScore = pos.see_sign(m)) < VALUE_ZERO)
it->score = seeScore - HistoryStats::Max; // At the bottom
else if (pos.capture(m))
@@ -317,7 +317,7 @@ Move MovePicker::next_move<false>() {
move = pick_best(cur++, end)->move;
if (move != ttMove)
{
- if (pos.see_sign(move) >= 0)
+ if (pos.see_sign(move) >= VALUE_ZERO)
return move;
// Losing capture, move it to the tail of the array
View
3 src/movepick.h
@@ -103,7 +103,8 @@ class MovePicker {
Move ttMove;
ExtMove killers[6];
Square recaptureSquare;
- int captureThreshold, stage;
+ Value captureThreshold;
+ int stage;
ExtMove *cur, *end, *endQuiets, *endBadCaptures;
ExtMove moves[MAX_MOVES];
};
View
11 src/position.cpp
@@ -1013,7 +1013,7 @@ void Position::undo_null_move() {
/// Position::see() is a static exchange evaluator: It tries to estimate the
/// material gain or loss resulting from a move.
-int Position::see_sign(Move m) const {
+Value Position::see_sign(Move m) const {
assert(is_ok(m));
@@ -1021,16 +1021,17 @@ int Position::see_sign(Move m) const {
// is not less then capturing one. Note that king moves always return
// here because king midgame value is set to 0.
if (PieceValue[MG][moved_piece(m)] <= PieceValue[MG][piece_on(to_sq(m))])
- return 1;
+ return VALUE_KNOWN_WIN;
return see(m);
}
-int Position::see(Move m) const {
+Value Position::see(Move m) const {
Square from, to;
Bitboard occupied, attackers, stmAttackers;
- int swapList[32], slIndex = 1;
+ Value swapList[32];
+ int slIndex = 1;
PieceType captured;
Color stm;
@@ -1046,7 +1047,7 @@ int Position::see(Move m) const {
// handled correctly. Simply return 0 that is always the correct value
// unless in the rare case the rook ends up under attack.
if (type_of(m) == CASTLING)
- return 0;
+ return VALUE_ZERO;
if (type_of(m) == ENPASSANT)
{
View
4 src/position.h
@@ -141,8 +141,8 @@ class Position {
void undo_null_move();
// Static exchange evaluation
- int see(Move m) const;
- int see_sign(Move m) const;
+ Value see(Move m) const;
+ Value see_sign(Move m) const;
// Accessing hash keys
Key key() const;
View
8 src/search.cpp
@@ -779,7 +779,7 @@ namespace {
|| pos.advanced_pawn_push(move);
// Step 12. Extend checks
- if (givesCheck && pos.see_sign(move) >= 0)
+ if (givesCheck && pos.see_sign(move) >= VALUE_ZERO)
ext = ONE_PLY;
// Singular extension search. If all moves but one fail low on a search of
@@ -850,7 +850,7 @@ namespace {
}
// Prune moves with negative SEE at low depths
- if (predictedDepth < 4 * ONE_PLY && pos.see_sign(move) < 0)
+ if (predictedDepth < 4 * ONE_PLY && pos.see_sign(move) < VALUE_ZERO)
{
if (SpNode)
splitPoint->mutex.lock();
@@ -1175,7 +1175,7 @@ namespace {
continue;
}
- if (futilityBase < beta && pos.see(move) <= 0)
+ if (futilityBase < beta && pos.see(move) <= VALUE_ZERO)
{
bestValue = std::max(bestValue, futilityBase);
continue;
@@ -1193,7 +1193,7 @@ namespace {
&& (!InCheck || evasionPrunable)
&& move != ttMove
&& type_of(move) != PROMOTION
- && pos.see_sign(move) < 0)
+ && pos.see_sign(move) < VALUE_ZERO)
continue;
// Check for legality just before making the move

0 comments on commit 7b0a2f2

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