mirror of
https://github.com/sockspls/badfish
synced 2025-07-11 19:49:14 +00:00
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
This commit is contained in:
parent
feeafb0a50
commit
da98a45bcb
1 changed files with 19 additions and 1 deletions
20
src/tt.h
20
src/tt.h
|
@ -59,22 +59,40 @@ 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; }
|
||||
|
||||
uint32_t key() const { return key32; }
|
||||
|
|
Loading…
Add table
Reference in a new issue