Add new superlinear interpolator
authorMarco Costalba <mcostalba@gmail.com>
Sat, 20 Sep 2008 18:55:52 +0000 (19:55 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Sat, 20 Sep 2008 19:56:46 +0000 (21:56 +0200)
Faster transition and between phases and
more persistent during mid and ending game.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
src/evaluate.cpp

index 46ddfe5c80046933bc018bf5c26ff92ba2d8e927..74ee58f412e2e127497be66eb7341039b8e6c3d1 100644 (file)
@@ -1156,7 +1156,12 @@ namespace {
     else
       ev = apply_scale_factor(ev, sf[BLACK]);
 
-    Value result = Value(int((mv * ph + ev * (128 - ph)) / 128));
+    // Superlinear interpolator
+    int sli_ph = int(ph);
+    sli_ph -= (64 - sli_ph) / 4;
+    sli_ph = Min(PHASE_MIDGAME, Max(PHASE_ENDGAME, sli_ph)); // ceiling
+
+    Value result = Value(int((mv * sli_ph + ev * (128 - sli_ph)) / 128));
     return Value(int(result) & ~(GrainSize - 1));
   }