Threat evaluation
General
- Disabled interprocedural optimisation for tests.
Search
- Adjusted parameters in the history heuristic.
- Removed
alphaparameter from search_zw. - LMR is now enabled for all moves, regardless of whether or not they are quiet.
- Even more aggressive LMR for quiet moves.
- Enabled recursive null move pruning.
- More aggressive razoring, null move pruning, and static null move pruning.
- Removed internal iterative deepening in zero window search.
- Bad captures are now pruned at low depths.
Evaluation
- Moved dynamic pawn evaluation from pawns.cpp to eval.cpp
- Fixed an asymmetry in king safety evaluation
- Rook and Bishop piece square tables now use 4-way symmetry instead of just 2-way symmetry.
- Replaced a bunch of repeated code with loops.
- Implemented evaluation of threats and undefended pieces.
- Decoupled game phase evaluation from material evaluation.
Estimated strength gain is around 30 elo based on self play.