Simplify futility margins formula
authorChris Caino <chricainogithub@gmail.com>
Tue, 22 Oct 2013 21:05:15 +0000 (23:05 +0200)
committerMarco Costalba <mcostalba@gmail.com>
Tue, 22 Oct 2013 21:06:06 +0000 (23:06 +0200)
New formula mathces the old formula until d = 45

Test code:

int main() {

  for(int d=1; d<=45; d++)
  {
     int a = int(log(double(d * d) / 2) / log(2.0) + 1.001);
     int b = int(2.9 * log(double(d)));

     if (a != b) std::cout << d << std::endl;
  }

  return 0;
}

bench: 8455956

src/search.cpp

index 36a89d835411bcca9d797e3265a1a66b7fcf7590..442f7f5ddc3e4fda6592ac903407d3f4f04550a4 100644 (file)
@@ -150,7 +150,7 @@ void Search::init() {
 
   // Init futility margins array
   for (d = 1; d < 16; ++d) for (mc = 0; mc < 64; ++mc)
-      FutilityMargins[d][mc] = Value(112 * int(log(double(d * d) / 2) / log(2.0) + 1.001) - 8 * mc + 45);
+      FutilityMargins[d][mc] = Value(112 * int(2.9 * log(double(d))) - 8 * mc + 45);
 
   // Init futility move count array
   for (d = 0; d < 32; ++d)