Cleanup steps 12, 14
authorJoona Kiiski <joona.kiiski@gmail.com>
Thu, 25 Feb 2010 16:59:16 +0000 (18:59 +0200)
committerMarco Costalba <mcostalba@gmail.com>
Thu, 25 Feb 2010 23:39:08 +0000 (00:39 +0100)
No functional change

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

index b269962f9558f006899b5aca06d8973b1153e1c6..f3e9c15d58776c8b79ae5e1565469763ab3bfd50 100644 (file)
@@ -195,31 +195,34 @@ namespace {
   // remaining ones we will extend it.
   const Value SingularExtensionMargin = Value(0x20);
 
   // remaining ones we will extend it.
   const Value SingularExtensionMargin = Value(0x20);
 
+  // Step 12. Futility pruning
 
 
+  const Value FutilityMarginQS = Value(0x80);
 
 
-  // Search depth at iteration 1
-  const Depth InitialDepth = OnePly;
+  // Futility lookup tables (initialized at startup) and their getter functions
+  int32_t FutilityMarginsMatrix[14][64]; // [depth][moveNumber]
+  int FutilityMoveCountArray[32]; // [depth]
 
 
-  // Easy move margin. An easy move candidate must be at least this much
-  // better than the second best move.
-  const Value EasyMoveMargin = Value(0x200);
+  inline Value futility_margin(Depth d, int mn) { return Value(d < 7*OnePly ? FutilityMarginsMatrix[Max(d, 0)][Min(mn, 63)] : 2 * VALUE_INFINITE); }
+  inline int futility_move_count(Depth d) { return d < 16*OnePly ? FutilityMoveCountArray[d] : 512; }
 
 
-  /// Lookup tables initialized at startup
+  // Step 14. Reduced search
 
 
-  // Reduction lookup tables and their getter functions
+  // Reduction lookup tables (initialized at startup) and their getter functions
   int8_t    PVReductionMatrix[64][64]; // [depth][moveNumber]
   int8_t NonPVReductionMatrix[64][64]; // [depth][moveNumber]
 
   inline Depth    pv_reduction(Depth d, int mn) { return (Depth)    PVReductionMatrix[Min(d / 2, 63)][Min(mn, 63)]; }
   inline Depth nonpv_reduction(Depth d, int mn) { return (Depth) NonPVReductionMatrix[Min(d / 2, 63)][Min(mn, 63)]; }
 
   int8_t    PVReductionMatrix[64][64]; // [depth][moveNumber]
   int8_t NonPVReductionMatrix[64][64]; // [depth][moveNumber]
 
   inline Depth    pv_reduction(Depth d, int mn) { return (Depth)    PVReductionMatrix[Min(d / 2, 63)][Min(mn, 63)]; }
   inline Depth nonpv_reduction(Depth d, int mn) { return (Depth) NonPVReductionMatrix[Min(d / 2, 63)][Min(mn, 63)]; }
 
-  // Futility lookup tables and their getter functions
-  const Value FutilityMarginQS = Value(0x80);
-  int32_t FutilityMarginsMatrix[14][64]; // [depth][moveNumber]
-  int FutilityMoveCountArray[32]; // [depth]
 
 
-  inline Value futility_margin(Depth d, int mn) { return Value(d < 7*OnePly ? FutilityMarginsMatrix[Max(d, 0)][Min(mn, 63)] : 2 * VALUE_INFINITE); }
-  inline int futility_move_count(Depth d) { return d < 16*OnePly ? FutilityMoveCountArray[d] : 512; }
+
+  // Search depth at iteration 1
+  const Depth InitialDepth = OnePly;
+
+  // Easy move margin. An easy move candidate must be at least this much
+  // better than the second best move.
+  const Value EasyMoveMargin = Value(0x200);
 
   /// Variables initialized by UCI options
 
 
   /// Variables initialized by UCI options
 
@@ -1492,7 +1495,7 @@ namespace {
               continue;
 
           // Value based pruning
               continue;
 
           // Value based pruning
-          Depth predictedDepth = newDepth - nonpv_reduction(depth, moveCount); //FIXME: We are ignoring condition: depth >= 3*OnePly, BUG??
+          Depth predictedDepth = newDepth - nonpv_reduction(depth, moveCount); // We illogically ignore reduction condition depth >= 3*OnePly
           futilityValueScaled =  ss[ply].eval + futility_margin(predictedDepth, moveCount)
                                + H.gain(pos.piece_on(move_from(move)), move_to(move)) + 45;
 
           futilityValueScaled =  ss[ply].eval + futility_margin(predictedDepth, moveCount)
                                + H.gain(pos.piece_on(move_from(move)), move_to(move)) + 45;