- // Sizes and phases of the skip-blocks, used for distributing search depths across the threads
- const int skipSize[] = { 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4 };
- const int skipPhase[] = { 0, 1, 0, 1, 2, 3, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6, 7 };
-
- // Razoring and futility margin based on depth
- // razor_margin[0] is unused as long as depth >= ONE_PLY in search
- const int razor_margin[] = { 0, 570, 603, 554 };
- Value futility_margin(Depth d) { return Value(150 * d / ONE_PLY); }
-
- // Futility and reductions lookup tables, initialized at startup
- int FutilityMoveCounts[2][16]; // [improving][depth]
- int Reductions[2][2][64][64]; // [pv][improving][depth][moveNumber]
+ // Razor and futility margins
+ constexpr int RazorMargin = 600;
+ Value futility_margin(Depth d, bool improving) {
+ return Value((175 - 50 * improving) * d / ONE_PLY);
+ }