Author: Stuart Cracraft
Date: 19:42:59 09/21/04
Hi -- trying to avoid doing a null move based on draft from the
hash table and R based on something some postings here from 1998.
Have a look and see if this is accurate. I tried the same flag ==
UBOUND code from the first block at (1) over at (2). Both separately showed
worse results in testing than having neither.
#ifdef TT
// Probe hash table. If seen before with equal or greater draft, return.
// Otherwise, set alpha and beta bounds if available.
// Last, if alpha exceeds or equals beta, return.
if (retrieve(&length, &score, &flag, &hashmv)) {
(1) if (flag == UBOUND && depth-R <= length && score < beta) donull = 0;
if (length >= sdepth) {
if (flag == VALID) {
if (!(flags&NOTHING)) {
savemove(&npv[ply][ply],hashmv);
for (j=ply+1;j<pvl[ply+1];++j) {
savemove(&npv[ply][j],npv[ply+1][j]);
}
pvl[ply]=pvl[ply+1];
}
return(score);
}
if (flag == LBOUND) alpha = MAX(alpha, score);
if (flag == UBOUND) {
(2) if (depth-R <= length && score < beta) donull = 0;
beta = MIN(beta, score);
}
if (alpha >= beta) return(score);
if (legalmove2(bd,hashmv)) hashed = 1;
}
}
#endif
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.