I just noticed something I do not really understand in the Stockfish 1.5 sources, in the quiescence search definition, and in the definition of search(), you want to determine if you can use the TT result again, but instead of asking whether tte->type() == VALUE_TYPE_EVAL
as was done in Stockfish 1.3 and 1.4, now in Stockfish 1.5 you use the bitwise AND operator '&' as follows:
Code: Select all
else if (tte && (tte->type() & VALUE_TYPE_EVAL))
{
// Use the cached evaluation score if possible
assert(ei.futilityMargin == Value(0));
Does this mean something like that tte->type() can be 4 or larger than 4?
Values smaller than 4 will not have the same bits set as VALUE_TYPE_EVAL when this is I presume 100 in bits, but larger values will. Am I understanding this correctly, and do you have an idea if this makes much difference?
Regards,
Eelco
I looked up the definition of the & operator here in the MSDN C++ Language reference, after some Googling: http://msdn.microsoft.com/en-us/library ... S.71).aspx
The board software does not like the (VS.71).aspx end of the URL it seems.