1
0
Fork 0

Ensure valueLower <= valueUpper

In case a TTEntry stores both an upper and a lower bound
ensure that upper bound is not smaller than lower bound.

bench 1813815
sf_3_base
Marco Costalba 2012-12-09 13:43:04 +01:00
parent feeafb0a50
commit da98a45bcb
1 changed files with 19 additions and 1 deletions

View File

@ -59,20 +59,38 @@ public:
void update(Value v, Bound b, Depth d, Move m, int g) {
move16 = (uint16_t)m;
bound |= (uint8_t)b;
generation8 = (uint8_t)g;
if (bound == BOUND_EXACT)
bound = BOUND_UPPER | BOUND_LOWER; // Drop 'EXACT' flag
if (b & BOUND_UPPER)
{
valueUpper = (int16_t)v;
depthUpper = (int16_t)d;
if ((bound & BOUND_LOWER) && v < valueLower)
{
bound ^= BOUND_LOWER;
valueLower = VALUE_NONE;
depthLower = DEPTH_NONE;
}
}
if (b & BOUND_LOWER)
{
valueLower = (int16_t)v;
depthLower = (int16_t)d;
if ((bound & BOUND_UPPER) && v > valueUpper)
{
bound ^= BOUND_UPPER;
valueUpper = VALUE_NONE;
depthUpper = DEPTH_NONE;
}
}
bound |= (uint8_t)b;
}
void set_generation(int g) { generation8 = (uint8_t)g; }