// in init_safety().
Value SafetyTable[100];
- // Pawn and material hash tables, indexed by the current thread id
- MaterialInfoTable* MaterialTable[8] = {0, 0, 0, 0, 0, 0, 0, 0};
- PawnInfoTable* PawnTable[8] = {0, 0, 0, 0, 0, 0, 0, 0};
+ // Pawn and material hash tables, indexed by the current thread id.
+ // Note that they will be initialized at 0 being global variables.
+ MaterialInfoTable* MaterialTable[THREAD_MAX];
+ PawnInfoTable* PawnTable[THREAD_MAX];
// Sizes of pawn and material hash tables
const int PawnTableSize = 16384;
} // namespace
-/// quick_evaluate() does a very approximate evaluation of the current position.
-/// It currently considers only material and piece square table scores. Perhaps
-/// we should add scores from the pawn and material hash tables?
-
-Value quick_evaluate(const Position &pos) {
-
- assert(pos.is_ok());
-
- static const ScaleFactor sf[2] = {SCALE_FACTOR_NORMAL, SCALE_FACTOR_NORMAL};
-
- Value v = scale_by_game_phase(pos.value(), MaterialInfoTable::game_phase(pos), sf);
- return (pos.side_to_move() == WHITE ? v : -v);
-}
-
-
/// init_eval() initializes various tables used by the evaluation function
void init_eval(int threads) {
// capturing a single attacking piece can therefore result in a score
// change far bigger than the value of the captured piece.
Score v = apply_weight(make_score(SafetyTable[attackUnits], 0), WeightKingSafety[Us]);
-
ei.value -= Sign[Us] * v;
-
- if (Us == pos.side_to_move())
- ei.futilityMargin += mg_value(v);
+ ei.futilityMargin[Us] += mg_value(v);
}
}