cdani wrote:Your quiescence has hash? Maybe it works bad, for example if it does not find something.
Same problem without hash.
Also is possible a bug related to some initializations.
Maybe you can try to start with depth 3 and see if happens the same.
yeah it indeed only happens with depth 1 and 2
but:
Also at depth 3 there is already something to capture, for example e4 a6 Ba6, but not previously.
so depth 1/2 is directly the result of evaluate() while depth 3 sometimes hits the inner if () { } in that loop.
that makes it even more strange.
If I disable quiesce search, then the regular search does:
(shortened)
Code: Select all
int search(...) {
check_transposition_table()
MoveList *const moves = s.getMoveList(c);
long unsigned int nMoves = moves -> size();
if (nMoves == 0 || depthLeft == 0)
return evaluate(s, c, curMaxDepth - depthLeft);
So not much different there.
Also you can try with a different start position.
Yes, I'll compare that with the stockfish results.
Thanks.