+ // Sizes and phases of the skip-blocks, used for distributing search depths across the threads
+ constexpr int SkipSize[] = { 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4 };
+ constexpr int SkipPhase[] = { 0, 1, 0, 1, 2, 3, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6, 7 };
+
+ // Razor and futility margins
+ constexpr int RazorMargin[] = {0, 590, 604};
+ Value futility_margin(Depth d, bool improving) {
+ return Value((175 - 50 * improving) * d / ONE_PLY);
+ }
+
+ // Margin for pruning capturing moves: almost linear in depth
+ constexpr int CapturePruneMargin[] = { 0,
+ 1 * PawnValueEg * 1055 / 1000,
+ 2 * PawnValueEg * 1042 / 1000,
+ 3 * PawnValueEg * 963 / 1000,
+ 4 * PawnValueEg * 1038 / 1000,
+ 5 * PawnValueEg * 950 / 1000,
+ 6 * PawnValueEg * 930 / 1000
+ };