-/// ordering decisions. It uses ButterflyBoards as backing store.
-struct ButterflyHistory : public ButterflyBoards {
-
- void update(Color c, Move m, int bonus) {
- StatBoards::update((*this)[c][from_to(m)], bonus, 324);
- }
-};
-
-/// PieceToHistory is like ButterflyHistory, but is based on PieceToBoards
-struct PieceToHistory : public PieceToBoards {
-
- void update(Piece pc, Square to, int bonus) {
- StatBoards::update((*this)[pc][to], bonus, 936);
- }
-};
-
-/// CapturePieceToHistory is like PieceToHistory, but is based on CapturePieceToBoards
-struct CapturePieceToHistory : public CapturePieceToBoards {
-
- void update(Piece pc, Square to, PieceType captured, int bonus) {
- StatCubes::update((*this)[pc][to][captured], bonus, 324, 2);
- }
-};
+/// ordering decisions. It uses 2 tables (one for each color) indexed by
+/// the move's from and to squares, see chessprogramming.wikispaces.com/Butterfly+Boards
+typedef Stats<int16_t, 10368, COLOR_NB, int(SQUARE_NB) * int(SQUARE_NB)> ButterflyHistory;