The depth returned by the search is now also hashed. This gives an
enormous speedup of tsume searches, as mates are assigned 'infinite' depth,
and thus forced distant mates also, so that they remain valid in
subsequent iterations without re-search. For safety the depth assigned to
repetitions was limited to the current iteration.
\r
if(flag & depth >= 0) printf("%2d:%d made %d/%d %s\n", depth, iterDep, curMove, msp, MoveToText(moveStack[curMove], 0));\r
for(i=2; i<=cnt50; i+=2) if(repStack[level-i+200] == hashKeyH) {\r
+ retDep = iterDep;\r
if(repDraws) { score = 0; goto repetition; }\r
if(!allowRep) {\r
moveStack[curMove] = 0; // erase forbidden move\r
#ifdef HASH\r
// hash store\r
hashTable[index].lock[hit] = hashKeyH;\r
- hashTable[index].depth[hit] = iterDep;\r
+ hashTable[index].depth[hit] = resDep;\r
hashTable[index].score[hit] = bestScore;\r
hashTable[index].flag[hit] = (bestScore < beta) * H_UPPER;\r
if(bestScore > alpha) {\r