Simplify aspiration window code
authorMarco Costalba <mcostalba@gmail.com>
Wed, 3 Jul 2013 06:54:44 +0000 (08:54 +0200)
committerMarco Costalba <mcostalba@gmail.com>
Wed, 3 Jul 2013 07:06:03 +0000 (09:06 +0200)
Here the main difference is that now we center
aspiration window on last returned score. This allows
to simplify handling of mate scores.

We have done a reversed SPRT tests, where we wanted to
verify if master is stronger than this patch.

Long TC: master vs this patch (reverse test)
LLR: -2.95 (-2.94,2.94)
Total: 37992 W: 7012 L: 6920 D: 24060

bench: 4507288

src/Makefile
src/evaluate.cpp

index b23d671f07600388a87a3956fc211980f1659352..7ddb643c11710713b2b782d4a4dfc8203577c928 100644 (file)
@@ -231,7 +231,7 @@ ifeq ($(COMP),clang)
 endif
 
 ### 3.2 General compiler settings
-CXXFLAGS = -g -Wall -Wcast-qual -fno-exceptions -fno-rtti $(EXTRACXXFLAGS)
+CXXFLAGS = -Wall -Wcast-qual -fno-exceptions -fno-rtti $(EXTRACXXFLAGS)
 
 ifeq ($(comp),gcc)
        CXXFLAGS += -ansi -pedantic -Wno-long-long -Wextra -Wshadow
@@ -275,6 +275,8 @@ endif
 ### 3.4 Debugging
 ifeq ($(debug),no)
        CXXFLAGS += -DNDEBUG
+else
+       CXXFLAGS += -g 
 endif
 
 ### 3.5 Optimization
@@ -354,6 +356,7 @@ endif
 ### needs access to the optimization flags.
 ifeq ($(comp),gcc)
        ifeq ($(optimize),yes)
+       ifeq ($(debug),no)
                GCC_MAJOR := `$(CXX) -dumpversion | cut -f1 -d.`
                GCC_MINOR := `$(CXX) -dumpversion | cut -f2 -d.`
                ifeq (1,$(shell expr \( $(GCC_MAJOR) \> 4 \) \| \( $(GCC_MAJOR) \= 4 \& $(GCC_MINOR) \>= 5 \)))
@@ -361,6 +364,7 @@ ifeq ($(comp),gcc)
                        LDFLAGS += $(CXXFLAGS)
                endif
        endif
+       endif
 endif
 
 ### ==========================================================================
index 68984802e5193185aae5b3f648173563948bd94d..c5af2f89524e5f9c04b89bb5c1780d8caa105911 100644 (file)
@@ -821,7 +821,8 @@ Value do_evaluate(const Position& pos, Value& margin) {
                 // If there is an enemy rook or queen attacking the pawn from behind,
                 // add all X-ray attacks by the rook or queen. Otherwise consider only
                 // the squares in the pawn's path attacked or occupied by the enemy.
-                if (forward_bb(Them, s) & pos.pieces(Them, ROOK, QUEEN) & pos.attacks_from<ROOK>(s))
+                if (   (forward_bb(Them, s) & pos.pieces(Them, ROOK, QUEEN)) // Unlikely
+                    && (forward_bb(Them, s) & pos.pieces(Them, ROOK, QUEEN) & pos.attacks_from<ROOK>(s)))
                     unsafeSquares = squaresToQueen;
                 else
                     unsafeSquares = squaresToQueen & (ei.attackedBy[Them][ALL_PIECES] | pos.pieces(Them));