Test list
=========

Make eval symmetric (e.g. get rid of computer/computerplays).

Problems
============

(*) Some weird fail lows in "wrong_bishop_polgar.fen",

Debug stuff
===========

(*) Perft, perftdiv (see http://www.rocechess.ch/perft.html).
(*) Search dump for certain positions (the current full dump is too big
and slow). 

Architecture stuff
==================

(*) Fractional plies.

Search stuff
============

(*) Perhaps allow extra checks in quiescence search after nullmove or razoring?
Although greatly improved, gnuchess is still blind to some mates in quiescence search.
(*) Implement single reply extension.
(*) Easy move (1 move which is constantly better by a certain margin).

Eval
====

(*) Perhaps reimplement PST? GnuChess 4 had them I believe.

(*) Use different eval parameter for middle and endgame and take the weighted average 
(a la fruit).

(*) In general: implement Kauffman. 
(*) Implement Fine's endgame rules. 
(*) Make Eval symmetric and test for it (partially done, not tested). 

By far the biggest weakness of GnuChess is pawn evaluation!
(*) More aggressive passed pawn evaluation (5,6,7 rank should be more than linear I think).
(*) Connected passed pawns.
(*) Candidate passers.
(*) Outside passer.
(*) King should attack or defend weak pawns in endgame (how to implement?).
(*) Pawn islands.
(*) Pawn mobility.

(*) Implement KBKP wrong color recognizer (done but ugly)
(*) Implement KPK bitbase.
(*) Implement KQPK recognizer. 
(*) Implement KRKP recognizer.
(Rules: If the king can be cut off horizontally: lost
        If the winning king is in the square of the pawn: lost
        Corner pawn is worse for the losing side). 

(*) Something is wrong with knight mobility. GnuChess will park a knight happily
somewhere it is completely useless. 

General "quality" stuff.
=======================

(*) Gaviota.
(*) MultiPV.
(*) Multi core. 

Interface stuff
===============

(*) Ponder move instead of position. In case of ponderhit reduce
search time (done in uci mode). 


