X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fhistory.h;fp=src%2Fhistory.h;h=9206cdf4bc7d8a45ad34612e12244ec23a55dcc2;hp=bbe2aab3fffb8302d81f90afbda1c7eb71786814;hb=7faeab08785f59b3a506681957813ff3bd38ff18;hpb=20524070901db89bd6e97b54d28dc3a2f717b0e3 diff --git a/src/history.h b/src/history.h index bbe2aab3..9206cdf4 100644 --- a/src/history.h +++ b/src/history.h @@ -20,6 +20,8 @@ #if !defined(HISTORY_H_INCLUDED) #define HISTORY_H_INCLUDED +#include + #include "depth.h" #include "move.h" #include "piece.h" @@ -36,25 +38,41 @@ class History { public: - History(); + History() { clear(); } void clear(); - void success(Piece p, Square to, Depth d); - void failure(Piece p, Square to, Depth d); int value(Piece p, Square to) const; - void set_gain(Piece p, Square to, Value delta); + void update(Piece p, Square to, Value delta); Value gain(Piece p, Square to) const; + void update_gain(Piece p, Square to, Value delta); private: - int history[16][64]; // [piece][square] - int maxStaticValueDelta[16][64]; // [piece][from_square][to_square] + Value history[16][64]; // [piece][to_square] + Value maxGains[16][64]; // [piece][to_square] }; +inline void History::clear() { + memset(history, 0, 16 * 64 * sizeof(int)); + memset(maxGains, 0, 16 * 64 * sizeof(int)); +} + inline int History::value(Piece p, Square to) const { return history[p][to]; } +inline void History::update(Piece p, Square to, Value bonus) { + history[p][to] += bonus; +} + inline Value History::gain(Piece p, Square to) const { - return Value(maxStaticValueDelta[p][to]); + return maxGains[p][to]; +} + +inline void History::update_gain(Piece p, Square to, Value gain) { + + if (gain >= maxGains[p][to]) + maxGains[p][to] = gain; + else + maxGains[p][to]--; } #endif // !defined(HISTORY_H_INCLUDED)