return make_score(mg_value(s) / i, eg_value(s) / i);
}
-/// Weight score v by score w trying to prevent overflow
-inline Score apply_weight(Score v, Score w) {
- return make_score((int(mg_value(v)) * mg_value(w)) / 0x100,
- (int(eg_value(v)) * eg_value(w)) / 0x100);
-}
-
#undef ENABLE_OPERATORS_ON
#undef ENABLE_SAFE_OPERATORS_ON
void init();
}
-CACHE_LINE_ALIGNMENT
-
-extern Score pieceSquareTable[PIECE_NB][SQUARE_NB];
extern Value PieceValue[PHASE_NB][PIECE_NB];
extern int SquareDistance[SQUARE_NB][SQUARE_NB];
return Square(s ^ 56); // Vertical flip SQ_A1 -> SQ_A8
}
+inline Piece operator~(Piece c) {
+ return Piece(c ^ 8);
+}
+
inline Square operator|(File f, Rank r) {
return Square((r << 3) | f);
}