// If the TT move is at least SingleReplyMargin better then the
// remaining ones we will extend it.
- const Value SingleReplyMargin = Value(0x64);
+ const Value SingleReplyMargin = Value(0x20);
// Margins for futility pruning in the quiescence search, and at frontier
// and near frontier nodes.
const Value FutilityMarginQS = Value(0x80);
// Each move futility margin is decreased
- const Value IncrementalFutilityMargin = Value(0x4);
+ const Value IncrementalFutilityMargin = Value(0x8);
// Razoring
const Depth RazorDepth = 4*OnePly;
Problem = false;
ExactMaxTime = maxTime;
+ if (button_was_pressed("New Game"))
+ loseOnTime = false; // reset at the beginning of a new game
+
// Read UCI option values
TT.set_size(get_option_value_int("Hash"));
if (button_was_pressed("Clear Hash"))
- {
TT.clear();
- loseOnTime = false; // reset at the beginning of a new game
- }
bool PonderingEnabled = get_option_value_bool("Ponder");
MultiPV = get_option_value_int("MultiPV");
continue;
// Value based pruning
- if (approximateEval < beta)
- {
- if (futilityValue == VALUE_NONE)
- futilityValue = evaluate(pos, ei, threadID) + FutilityValueMargin;
+ if (futilityValue == VALUE_NONE)
+ futilityValue = evaluate(pos, ei, threadID) + FutilityValueMargin;
- futilityValueScaled = futilityValue - moveCount * IncrementalFutilityMargin;
+ futilityValueScaled = futilityValue - moveCount * IncrementalFutilityMargin;
- if (futilityValueScaled < beta)
- {
- if (futilityValueScaled > bestValue)
- bestValue = futilityValueScaled;
- continue;
- }
+ if (futilityValueScaled < beta)
+ {
+ if (futilityValueScaled > bestValue)
+ bestValue = futilityValueScaled;
+ continue;
}
}
Value v = value_from_tt(tte->value(), ply);
return ( tte->depth() >= depth
- || v >= Max(value_mate_in(100), beta)
- || v < Min(value_mated_in(100), beta))
+ || v >= Max(value_mate_in(PLY_MAX), beta)
+ || v < Min(value_mated_in(PLY_MAX), beta))
&& ( (is_lower_bound(tte->type()) && v >= beta)
|| (is_upper_bound(tte->type()) && v < beta));