Skip to content

Commit

Permalink
Use int16_t in History values
Browse files Browse the repository at this point in the history
Reduces memory footprint by ~1.2MB (per thread).

Strong pressure: small but mesurable gain
LLR: 2.96 (-2.94,2.94) [0.00,4.00]
Total: 258430 W: 46977 L: 45943 D: 165510

Low pressure: no regression
LLR: 2.95 (-2.94,2.94) [-3.00,1.00]
Total: 73542 W: 13058 L: 13026 D: 47458

Strong pressure + LTC: elo gain confirmed
LLR: 2.96 (-2.94,2.94) [0.00,4.00]
Total: 31489 W: 4532 L: 4295 D: 22662

Tested for crashing on overflow and after 70K
games at STC we have only 4 time losses,
possible candidate for an overflow.

No functional change.
  • Loading branch information
lucasart authored and mcostalba committed Aug 17, 2017
1 parent 232c50f commit ae6a4eb
Showing 1 changed file with 9 additions and 1 deletion.
10 changes: 9 additions & 1 deletion src/movepick.h
Expand Up @@ -28,7 +28,7 @@
#include "types.h"

/// StatBoards is a generic 2-dimensional array used to store various statistics
template<int Size1, int Size2, typename T = int>
template<int Size1, int Size2, typename T = int16_t>
struct StatBoards : public std::array<std::array<T, Size2>, Size1> {

void fill(const T& v) {
Expand All @@ -55,6 +55,10 @@ struct ButterflyHistory : public ButterflyBoards {
auto& entry = (*this)[c][from_to(m)];

assert(abs(bonus) <= D); // Consistency check for below formula
assert([&]{
int v = entry + bonus * 32 - entry * abs(bonus) / D;
return INT16_MIN < v && v < INT16_MAX;
}());

entry += bonus * 32 - entry * abs(bonus) / D;

Expand All @@ -71,6 +75,10 @@ struct PieceToHistory : public PieceToBoards {
auto& entry = (*this)[pc][to];

assert(abs(bonus) <= D); // Consistency check for below formula
assert([&]{
int v = entry + bonus * 32 - entry * abs(bonus) / D;
return INT16_MIN < v && v < INT16_MAX;
}());

entry += bonus * 32 - entry * abs(bonus) / D;

Expand Down

0 comments on commit ae6a4eb

Please sign in to comment.