stockfish
8 years agoFurther tweak movecount pruning
Leonid Pechenik [Sun, 18 Aug 2013 07:11:44 +0000 (09:11 +0200)]
Further tweak movecount pruning

Passed both short TC
LLR: 2.95 (-2.94,2.94)
Total: 15140 W: 3125 L: 2976 D: 9039

And long TC
LLR: 2.95 (-2.94,2.94)
Total: 17118 W: 3165 L: 2974 D: 10979

bench: 4132374

8 years agoNormalize "pawn in front of minor" patch
Marco Costalba [Sat, 17 Aug 2013 09:05:55 +0000 (11:05 +0200)]
Normalize "pawn in front of minor" patch

No functional change.

8 years agoUse constants arguments where possible
homoSapiensSapiens [Fri, 16 Aug 2013 07:57:16 +0000 (09:57 +0200)]
Use constants arguments where possible

No functional changes.

8 years agoRevert using exceptions
Marco Costalba [Thu, 15 Aug 2013 07:36:26 +0000 (09:36 +0200)]
Revert using exceptions

Due to crashes. It will be reapplied once
we understand what's happening.

No functional change.

8 years agoSimplify DistanceRingsBB init
homoSapiensSapiens [Wed, 14 Aug 2013 08:17:22 +0000 (11:17 +0300)]
Simplify DistanceRingsBB init

Verified by same benchmark and picking some random values.

No functional change.

8 years agoSome renaming in TT store()
homoSapiensSapiens [Wed, 14 Aug 2013 05:33:33 +0000 (08:33 +0300)]
Some renaming in TT store()

No functional change.

8 years agoUse exceptions to stop the search
Marco Costalba [Wed, 14 Aug 2013 06:29:57 +0000 (08:29 +0200)]
Use exceptions to stop the search

Instead of classical flags, throw an
exception when we want to immediately halt
the search. Currently only one type
is used for both UCI stop and threads
cut off.

No functional change.

8 years agoBonus for a pawn in front of knight/bishop
Tom Vijlbrief [Tue, 13 Aug 2013 12:19:42 +0000 (14:19 +0200)]
Bonus for a pawn in front of knight/bishop

Idea originated from a post of Don Dailey
on talkchess and reported by Eelco.

This is the last succesful attempt of a long
series of trials (as usually happens, the
'idea' alone is not enough).

Passed both short 15secs TC
LLR: 2.97 (-2.94,2.94)
Total: 7629 W: 1645 L: 1515 D: 4469

And long 60secs TC
LLR: 2.96 (-2.94,2.94)
Total: 10218 W: 1932 L: 1775 D: 6511

bench: 4944581

8 years agoRemove Now Unneeded Help Text
Ryan Takker [Tue, 13 Aug 2013 05:36:01 +0000 (07:36 +0200)]
Remove Now Unneeded Help Text

With the new automatic setting of split depth
instead of a default, the user no longer needs
guidance on setting the split point.

Also threads now defaults to one.

No functional change.

8 years agoDon't set Search::RootColor in Eval::trace
Marco Costalba [Sun, 11 Aug 2013 05:02:50 +0000 (07:02 +0200)]
Don't set Search::RootColor in Eval::trace

Search::RootColor is a global parameter set
before to start a search, it is not something
trace() should change.

This patch allows to add trace() calls, for
debugging, inside search itself without altering
the bench, and also ensures that the values
returned by trace() and evaluate() are fully
equivalent.

No functional change.

8 years agoFix GrainSize rounding error
Marco Costalba [Sat, 10 Aug 2013 15:11:13 +0000 (17:11 +0200)]
Fix GrainSize rounding error

The rounding formula is different between
positive and negative scores due to the
GrainSize/2 term that is asymmetric.

So use truncation instead of rounding. This
guarantees that evaluation is rounded to zero
in the same way for both positive and negative
scores.

Found with position's flip

bench: 4634244

8 years agoFix 'improving' condition
Marco Costalba [Fri, 9 Aug 2013 06:21:55 +0000 (08:21 +0200)]
Fix 'improving' condition

Because VALUE_NONE is 30002, it happens that
after a check the next move is never an improving
one.

After this patch bench signature is independent from
VALUE_NONE actual value.

bench: 4303194

8 years agoIncrease LMR when not improving
Marco Costalba [Thu, 8 Aug 2013 08:28:48 +0000 (10:28 +0200)]
Increase LMR when not improving

Apply to LMR the same Eelco's idea
applied to move count pruning.

This is the result of a series of
attempts started by Thomas Kolarik.

Passed both short TC
LLR: 2.95 (-2.94, 2.94)
Total: 5675 W: 1241 L: 1117 D: 3317

And long TC:
LLR: 2.95 (-2.94, 2.94)
Total: 8748 W: 1689 L: 1539 D: 5520

bench: 4356801

8 years agoFurther tweak Position::flip
Marco Costalba [Mon, 5 Aug 2013 11:25:21 +0000 (13:25 +0200)]
Further tweak Position::flip

No functional change.

8 years agoRewrite flip() to use FEN string manipulation
Marco Costalba [Mon, 5 Aug 2013 09:06:23 +0000 (11:06 +0200)]
Rewrite flip() to use FEN string manipulation

Instead of dealing directly with internal parameters
just "flip" the FEN string and set the position from
that.

No functional change.

8 years agoStreamline time computation
Marco Costalba [Sat, 3 Aug 2013 16:30:43 +0000 (18:30 +0200)]
Streamline time computation

No functional change.

8 years agoUpdate polyglot.ini with new "Min Split Depth" default
Marco Costalba [Sat, 3 Aug 2013 14:41:18 +0000 (16:41 +0200)]
Update polyglot.ini with new "Min Split Depth" default

No functional change.

8 years agoRefactor do_castle()
Dan Schmidt [Sat, 3 Aug 2013 12:42:58 +0000 (08:42 -0400)]
Refactor do_castle()

Not a real functional change, but bench changed due to different piecelist
reordering. To verify it a temporary my canonicalize_rooks function was
written as follows. It just ensures that the rook on the "smaller" square
is listed first.

void Position::canonicalize_rooks(Color c)
{
   if (pieceCount[c][ROOK] == 2)
   {
      Square s0 = pieceList[c][ROOK][0];
      Square s1 = pieceList[c][ROOK][1];
      if (s0 > s1)
      {
         pieceList[c][ROOK][0] = s1;
         pieceList[c][ROOK][1] = s0;
         index[s0] = 1;
         index[s1] = 0;
      }
   }
}

With this both bench and the test on Chess960 positions

./stockfish bench 128 1 8 Chess960.epd file > /dev/null

Gives same result.

bench: 4424151

8 years agoRetire cpu_count()
Joona Kiiski [Thu, 1 Aug 2013 21:12:58 +0000 (22:12 +0100)]
Retire cpu_count()

Set threads number always to 1 at startup and let the
user explicitly to chose the number of threads.

Also preserve the useful behavior of automatically set
"Min Split Depth" according to the requested threads,
indeed this parameter is too technical for a casual user,
so, when left to zero, we set it on a sensible value.

No functional change

8 years agoFurther factor out position update code
Marco Costalba [Thu, 1 Aug 2013 13:58:38 +0000 (15:58 +0200)]
Further factor out position update code

Along the lines of previous patch.

No functional change

8 years agoFactor out pieceList updating code
Dan Schmidt [Mon, 29 Jul 2013 15:44:58 +0000 (11:44 -0400)]
Factor out pieceList updating code

The new Position methods add_piece, move_piece, and remove_piece
now manage the member variables pieceList, pieceCount, and index,
and 9 blocks of code in Position that used to manipulate those
data structures by hand now call the new methods.

There is a slightly slowdown (< 1%) on Clang and on perft,
but the cleanup compensates the little speed loss.

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
8 years agoRework Thread hierarchy
Marco Costalba [Wed, 31 Jul 2013 07:33:26 +0000 (09:33 +0200)]
Rework Thread hierarchy

Introduce ThreadBase struct that is search
agnostic and just handles low level stuff,
and derive all the other specialized classes
form here.

In particular TimerThread does not hinerits
anymore all the search related stuff from Thread.

Also some renaming while there.

Suggested by Steven Edwards

No functional change.

8 years agoFix a race at thread creation
Marco Costalba [Wed, 31 Jul 2013 04:59:24 +0000 (06:59 +0200)]
Fix a race at thread creation

At thread creation start_routine() is called
and from there the virtual function idle_loop()
because we do this inside Thread c'tor, where the
virtual mechanism is disabled, it could happen that
the base class idle_loop() is called instead.

The issue happens with TimerThread and MainThread
where, at launch, start_routine calls
Thread::idle_loop instead of the derived ones.

Normally this bug is hidden because c'tor finishes
before start_routine() is actually called in the
just created execution thread, but on some platforms
and in some cases this is not guaranteed and the
engine hangs.

Reported by Ted Wong on talkchess

No functional change.

8 years agoTidy up Position::pretty
Marco Costalba [Mon, 29 Jul 2013 17:33:30 +0000 (19:33 +0200)]
Tidy up Position::pretty

No functional change.

8 years agoSmall renaming
Marco Costalba [Mon, 29 Jul 2013 17:32:59 +0000 (19:32 +0200)]
Small renaming

No functional change.

8 years agoSpeed up move generation
Marco Costalba [Mon, 29 Jul 2013 17:01:50 +0000 (19:01 +0200)]
Speed up move generation

Pass the color as template parameter
to generate_all()

Speedup of 1,3% in perft and 2,5% in bench !

No functional change.

8 years agoIncrease pruning if evaluation is not improving
Eelco de Groot [Sun, 28 Jul 2013 23:16:25 +0000 (01:16 +0200)]
Increase pruning if evaluation is not improving

Add an additional set of margins to movecount pruning
to be used when static evaluation is getting worse
than previous move.

Here are the margins table with changing
depth (fm0 not improving, fm1 improving):

    d: 0, fm0: 3, fm1: 3
    d: 1, fm0: 4, fm1: 4
    d: 2, fm0: 6, fm1: 6
    d: 3, fm0: 7, fm1: 10
    d: 4, fm0: 11, fm1: 15
    d: 5, fm0: 15, fm1: 21
    d: 6, fm0: 21, fm1: 29
    d: 7, fm0: 27, fm1: 37
    d: 8, fm0: 35, fm1: 47
    d: 9, fm0: 42, fm1: 57
    d: 10, fm0: 51, fm1: 68
    d: 11, fm0: 60, fm1: 81
    d: 12, fm0: 70, fm1: 94
    d: 13, fm0: 81, fm1: 108
    d: 14, fm0: 92, fm1: 123
    d: 15, fm0: 104, fm1: 139

Good at both short TC

LLR: 2.97 (-2.94,2.94)
Total: 11502 W: 2503 L: 2361 D: 6638

And long TC

LLR: 2.98 (-2.94,2.94)
Total: 7189 W: 1421 L: 1277 D: 4491

bench: 4364793

8 years agoAnnotate an unlikely condition
Marco Costalba [Sat, 27 Jul 2013 09:34:15 +0000 (11:34 +0200)]
Annotate an unlikely condition

No functional change.

8 years agoFix an assert in KBK endgame
Marco Costalba [Sat, 27 Jul 2013 06:22:12 +0000 (08:22 +0200)]
Fix an assert in KBK endgame

The endgame king + minor vs king is erroneusly
detected as king + minor vs king + minor

Here the fix is to detect king + minor earlier,
in particular to add these trivial cases to
endgame evaluation functions.

Spotted by Reuven Peleg

bench: 4727133

8 years agoRewrite pawn shield and storm code
Tom Vijlbrief [Thu, 25 Jul 2013 20:23:15 +0000 (22:23 +0200)]
Rewrite pawn shield and storm code

Passes quickly both short TC:
LLR: 2.95 (-2.94,2.94)
Total: 5755 W: 1349 L: 1222 D: 3184

And long TC:
LLR: 2.95 (-2.94,2.94)
Total: 2744 W: 628 L: 505 D: 1611

bench: 4727133

8 years agoFix a typo in bitboard.h
Marco Costalba [Thu, 25 Jul 2013 05:44:27 +0000 (07:44 +0200)]
Fix a typo in bitboard.h

Introduced by previous patch.

Spotted by Joerg Oster

No functional change.

8 years agoUse #ifndef instead of #if !defined
homoSapiensSapiens [Tue, 23 Jul 2013 13:31:57 +0000 (16:31 +0300)]
Use #ifndef instead of #if !defined

And #ifdef instead of #if defined

This is more standard form (see for example iostream file).

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
8 years agoSimplify captures ordering
Marco Costalba [Sat, 20 Jul 2013 23:45:47 +0000 (01:45 +0200)]
Simplify captures ordering

A big simplification and removing of useless code.

Finished at 50% both at short TC (with SPRT) than
at long TC at fixed number of games:
ELO: -0.14 +-3.4 (95%) LOS: 46.8%
Total: 15206 W: 2836 L: 2842 D: 9528

bench: 5059948

8 years agoRevert "Halve king eval margin"
Marco Costalba [Wed, 24 Jul 2013 05:43:40 +0000 (07:43 +0200)]
Revert "Halve king eval margin"

This reverts commit 4b3a0fdab03a7529ede42891963d3036712a0bd5.

As Gary says: " It failed when I tried it at long TC previously, and only
barely passed this time.  Some anecdotal evidence is that it hurts vs other
engines as well (the Lightspeed rating list showed a 16 elo drop from previous
best version - still +- 5 error bars on both, but that's still significant)"

I also agree that if we have some doubts (like in this case) it is better to
be safe than sorry.

bench: 4615572

8 years agoTune pawn PSQT values
Ryan Schmitt [Fri, 19 Jul 2013 17:15:42 +0000 (10:15 -0700)]
Tune pawn PSQT values

Reduces the influence of PSQT for entries such as
the extended center and the h-file.

Passed both short TC test:
LLR: 2.95 (-2.94,2.94)
Total: 23919 W: 5207 L: 5029 D: 13683

And long TC one:
LLR: 2.96 (-2.94,2.94)
Total: 5762 W: 1108 L: 974 D: 3680

Bench: 4617880

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
8 years agoUse arrow operator instead of * and .
Reuven Peleg [Mon, 22 Jul 2013 18:05:03 +0000 (21:05 +0300)]
Use arrow operator instead of * and .

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
8 years agoBetter condition in is_pseudo_legal()
Reuven Peleg [Mon, 22 Jul 2013 10:47:59 +0000 (13:47 +0300)]
Better condition in is_pseudo_legal()

Simplify occupied destination condition.

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
8 years agoSmall touches in move generation
Marco Costalba [Sun, 21 Jul 2013 09:01:24 +0000 (11:01 +0200)]
Small touches in move generation

No functional change.

8 years agoSome renaming in MovePicker
Marco Costalba [Sun, 21 Jul 2013 07:54:56 +0000 (09:54 +0200)]
Some renaming in MovePicker

No functional change.

8 years agoRewrite and simplify SEE
Marco Costalba [Sat, 20 Jul 2013 17:11:03 +0000 (19:11 +0200)]
Rewrite and simplify SEE

This very speed critical code was full of clever (!)
tricks and subtle details.

So I have rewritten it in a more straithforward way
and, as very often happens, result is even faster
than original.

No functional change.

8 years agoRevert "Fix critical SEE bug (take 2)"
Marco Costalba [Sat, 20 Jul 2013 13:26:52 +0000 (15:26 +0200)]
Revert "Fix critical SEE bug (take 2)"

This reverts commit 3e95800814d

For some reason it fails the short TC test:
LLR: -2.96 (-2.94,2.94)
Total: 20033 W: 4214 L: 4265 D: 11554

bench: 4769737

8 years agoRevert "Yet another attempt at signature-build"
Marco Costalba [Sat, 20 Jul 2013 13:15:03 +0000 (15:15 +0200)]
Revert "Yet another attempt at signature-build"

Still broken on OS X

No functional change.

8 years agoFix critical SEE bug (take 2)
Marco Costalba [Sat, 20 Jul 2013 12:24:23 +0000 (14:24 +0200)]
Fix critical SEE bug (take 2)

It is somewhat unbilievable but our SEE is broken !

    If the first SEE move is a king capture and square is
    defended then SEE continues instead of breaking.

    The bug shows only on normal SEE, not see_sign() so
    probing with a:

    dbg_hit_on_c(slIndex==1, captured == KING);

    reports just a tiny:

    Total 3465656 Hits 6646 hit rate (%) 0

    Bug was there since Retire seeValues[] and move PieceValue[] out of Position of 26/6/2011 (!)
    although for some reason didn't show immediately, indeed the
    bougous patch was a "No functional change" (!!)

    bench: 4699504

8 years agoRevert all the SEE stuff
Marco Costalba [Sat, 20 Jul 2013 12:20:17 +0000 (14:20 +0200)]
Revert all the SEE stuff

The speed up seems to introduce some
functionality change.

Revert to original master for now.

bench: 4769737

8 years agoYet another attempt at signature-build
Marco Costalba [Sat, 20 Jul 2013 12:05:04 +0000 (14:05 +0200)]
Yet another attempt at signature-build

This one should work on all flavours of sed

Suggested by by Louis Zulli

No functional change.

8 years agoFix critical SEE bug
Marco Costalba [Sat, 20 Jul 2013 11:03:45 +0000 (13:03 +0200)]
Fix critical SEE bug

It is somewhat unbilievable but our SEE is broken !

If the first SEE move is a king capture and square is
defended then SEE continues instead of breaking.

The bug shows only on normal SEE, not see_sign() so
probing with a:

dbg_hit_on_c(slIndex==1, captured == KING);

reports just a tiny:

Total 3465656 Hits 6646 hit rate (%) 0

Bug was there since 351ef5c85b6d4b9c71e9da of 26/6/2011 (!)
although for some reason didn't show immediately, indeed the
bougous patch was a "No functional change" (!!)

bench: 4793754

8 years agoSpeedup see()
Marco Costalba [Sat, 20 Jul 2013 09:44:55 +0000 (11:44 +0200)]
Speedup see()

And rename next_attacker() SEE helper

This very simple patch is able to speed up
bench run of almost 2% !

No functional change.

8 years agoFix signature-build under OSX
Marco Costalba [Fri, 19 Jul 2013 15:20:26 +0000 (17:20 +0200)]
Fix signature-build under OSX

On OS X when you use -i an extension for the in-place
substitution a backup files is required.

http://stackoverflow.com/questions/4247068/sed-command-failing-on-mac-but-works-on-linux

So rewrite to make sed flushing sign.txt in one go and avoid
using -i option.

Reported by Louis Zulli

No functional change.

8 years agoMicroptimize gives_check() for castling case
Reuven Peleg [Fri, 19 Jul 2013 15:01:07 +0000 (17:01 +0200)]
Microptimize gives_check() for castling case

Without patch we have 333198 nps, with patch 334249.

A very small +0.3%, not a lot manily becuase this is a
side path that is taken very few times.

Anyhow idea is correct becuase first 'quick' condition
has an hit rate of about 95%.

No functional change.

8 years agoSmall simplification in space eval scoring
Marco Costalba [Fri, 19 Jul 2013 09:00:31 +0000 (11:00 +0200)]
Small simplification in space eval scoring

No functional change.

8 years agoRename MoveStack to ExtMove
Marco Costalba [Fri, 19 Jul 2013 08:27:15 +0000 (10:27 +0200)]
Rename MoveStack to ExtMove

Stack has no meaning here, while ExtMove (extended move),
better clarifies that we have a move + a score.

No functional change.

8 years agoBetter document what we skip when in check
Marco Costalba [Fri, 19 Jul 2013 07:37:31 +0000 (09:37 +0200)]
Better document what we skip when in check

No functional change.

8 years agoHalve king eval margin
homoSapiensSapiens [Tue, 16 Jul 2013 15:52:55 +0000 (18:52 +0300)]
Halve king eval margin

But still keep the same original
margin for score.

Passed both short TC test
LR: 2.95 (-2.94,2.94)
Total: 3710 W: 845 L: 726 D: 2139

And long TC
LLR: 2.95 (-2.94,2.94)
Total: 57859 W: 10939 L: 10532 D: 36388

bench: 4769737

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
8 years agoDrop grep and tr dependency in Makefile
Marco Costalba [Mon, 15 Jul 2013 19:39:06 +0000 (21:39 +0200)]
Drop grep and tr dependency in Makefile

Use only sed to get the bench signature.

No functional change.

8 years agoDon't use __builtin_expect
Marco Costalba [Mon, 15 Jul 2013 19:09:06 +0000 (21:09 +0200)]
Don't use __builtin_expect

Partially revert previous patch and use
unlikey() just as code annotation.

Actually it is better to rely on a profiler for branch prediction:

http://blog.man7.org/2012/10/how-much-do-builtinexpect-likely-and.html

"In fact, even when only one in ten thousand values is nonzero,
we're still at only roughly the break-even point"

No functional change,

8 years agoBetter annotate unlikely conditions
Marco Costalba [Mon, 15 Jul 2013 18:50:24 +0000 (20:50 +0200)]
Better annotate unlikely conditions

And in case of gcc we win also a small
speed optimization due to better branch
prediction.

No functional change.

8 years agoSimplify a condition in refutes()
Reuven Peleg [Mon, 15 Jul 2013 13:14:30 +0000 (16:14 +0300)]
Simplify a condition in refutes()

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
8 years agoUpdate 'make help'
Marco Costalba [Sun, 14 Jul 2013 10:23:28 +0000 (12:23 +0200)]
Update 'make help'

No functional change.

8 years agoAdd signature-profile-build make target
Marco Costalba [Sun, 14 Jul 2013 09:57:06 +0000 (11:57 +0200)]
Add signature-profile-build make target

Extend patch 3f64a2af6a7dac4 to profile builds.

here the make command is:

make signature-profile-build ARCH=xxx COMP=xxx

No functional change.

8 years agoRetire engine Tag
Marco Costalba [Sun, 14 Jul 2013 09:07:24 +0000 (11:07 +0200)]
Retire engine Tag

It is somewhat redundant and could make SF
name too long, so use just Version, in case
of a signature build Version will be set to
'sig-xxx' otherwise, if left empty, we fall
back on usual date stamp.

No functional change.

8 years agoAdd signature-build make target
Marco Costalba [Sun, 14 Jul 2013 07:00:19 +0000 (09:00 +0200)]
Add signature-build make target

When compiling with:

make signature-build ARCH=xxx COMP=xxx

After binary has been roduced, it will be run to
get the signature 'stockfish bench' and this
number will be used as Version, so that it
will be easy to track the original sources
from a binary.

No functinal change.

8 years agoFix build on Intel compiler
Marco Costalba [Sat, 13 Jul 2013 21:07:24 +0000 (23:07 +0200)]
Fix build on Intel compiler

Due to a strange issue (bug?) the ternary
operator does not return a BitCountType for
icc, so revert to the expression used
before bcbc9bfd1f5efeaa3

No functional change.

8 years agoFully qualify memset and memcpy
Marco Costalba [Sat, 13 Jul 2013 15:21:24 +0000 (17:21 +0200)]
Fully qualify memset and memcpy

And other trivial touches.

Ispired by Lucas's DiscoCheck

No functional change.

8 years agoRetire enoughMaterial + lower trapped rook threshold
Tom Vijlbrief [Sat, 13 Jul 2013 09:46:59 +0000 (11:46 +0200)]
Retire enoughMaterial + lower trapped rook threshold

Here speed up is the name of the game.

Speed up is gained:

- Removing the useless enoughMaterial code

- Limiting trapped rook evaluation to where it counts

Tested at long TC:
LLR: 2.97 (-2.94,2.94)
Total: 10061 W: 1948 L: 1790 D: 6323

bench: 4558173

8 years agoA useless assignment found by Clang’s static analyzer
Marco Costalba [Sat, 13 Jul 2013 11:27:22 +0000 (13:27 +0200)]
A useless assignment found by Clang’s static analyzer

Warning is: "Value stored to 'xxx' is never read" and
it is raised in SpNode case.

No functional change.

8 years agoFix build with MSVC 2013
Marco Costalba [Sat, 13 Jul 2013 11:02:40 +0000 (13:02 +0200)]
Fix build with MSVC 2013

Also add an assert hinted by MSVC code analysis tool.

No functional change.

8 years agoFix printing of PV info: take 2
Marco Costalba [Sat, 13 Jul 2013 05:43:50 +0000 (07:43 +0200)]
Fix printing of PV info: take 2

Now last PV line is printed twice, fix that.

No functional change.

8 years agoFix printing of PV info
Marco Costalba [Fri, 12 Jul 2013 21:42:42 +0000 (23:42 +0200)]
Fix printing of PV info

It was erroneusly skipped after the
aspiration window rework.

Reported by Eelco.

No functional change.

8 years agoRename some UCI options
Marco Costalba [Thu, 11 Jul 2013 14:01:33 +0000 (16:01 +0200)]
Rename some UCI options

Thanks to Don, Miguel, Louis and the other people
of talkchess forum for the suggestion:

http://www.talkchess.com/forum/viewtopic.php?t=48612

Also sync polyglot.ini with current UCI options

No functional change.

8 years agoFix a crash with depth 1 perft
Marco Costalba [Thu, 11 Jul 2013 05:22:26 +0000 (07:22 +0200)]
Fix a crash with depth 1 perft

Bug recently introduced in e215a88cddd16e09

No functional change.

8 years agoDon't IID when in check also in PvNodes
Marco Costalba [Sun, 7 Jul 2013 11:45:46 +0000 (13:45 +0200)]
Don't IID when in check also in PvNodes

This tiny functional change allows to
nicely simplify things.

Performed at 50% in short TC:
LLR: -0.43 (-2.94,2.94)
Total: 46406 W: 9681 L: 9565 D: 27160

And succesfully passed long TC reverse test:
LLR: -2.95 (-2.94,2.94)
Total: 4945 W: 858 L: 937 D: 3150

bench: 4507230

8 years agoRevert previous patch
Marco Costalba [Tue, 9 Jul 2013 06:01:51 +0000 (08:01 +0200)]
Revert previous patch

Unfortunatly a reverse test at long TC failed:

master^ vs master
LLR: 1.37 (-2.94,2.94)
Total: 33682 W: 6294 L: 6071 D: 21317

So becuase short TC score is 50% there is a good
possibility patch is not scalable.

So revert it.

bench: 4507288

8 years agoSimplify "fail high upon reduction" in null search
Marco Costalba [Mon, 8 Jul 2013 05:23:30 +0000 (07:23 +0200)]
Simplify "fail high upon reduction" in null search

Do not use threat move to detect the condition. This
let us to retire the big allows() function.

Test at short TC was within 50% score:
LLR: -2.95 (-2.94,2.94)
Total: 38272 W: 7941 L: 7940 D: 22391

To be verified with reverse long TC

bench: 4191565

8 years agoSkip node-level cut-off tests when in check
Marco Costalba [Sun, 7 Jul 2013 11:27:31 +0000 (13:27 +0200)]
Skip node-level cut-off tests when in check

No functional change.

8 years agoSimplify aspiration window code
Marco Costalba [Wed, 3 Jul 2013 16:58:49 +0000 (18:58 +0200)]
Simplify aspiration window code

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

8 years agoWorkaround github issue
Marco Costalba [Wed, 3 Jul 2013 16:58:23 +0000 (18:58 +0200)]
Workaround github issue

Temporary revert aspiration window patch
so to be visible to everybody: it will be
re-applied with next patch

No functional change (together with next one)

8 years agoSimplify aspiration window code
Marco Costalba [Wed, 3 Jul 2013 06:54:44 +0000 (08:54 +0200)]
Simplify aspiration window code

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

8 years agoDisable flto when debugging
Marco Costalba [Wed, 3 Jul 2013 06:21:21 +0000 (08:21 +0200)]
Disable flto when debugging

Link-time optimization does not work well with
generation of debugging information:

http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html

Reported by Louis Zulli

No functional change.

8 years agoRevert "Remove confusing optimization"
Marco Costalba [Tue, 2 Jul 2013 18:06:24 +0000 (20:06 +0200)]
Revert "Remove confusing optimization"

This reverts commit e05c80a08859f6c4f0f599ca0b262ced00ad66fe.

we gain a speed up of 1.5% under gcc !

No functional change.

8 years agoMerge branch 'master' into aspiration
Marco Costalba [Tue, 2 Jul 2013 05:25:47 +0000 (07:25 +0200)]
Merge branch 'master' into aspiration

bench: 4507288

8 years agoRevert "Increase earlier aspiration window size"
Marco Costalba [Tue, 2 Jul 2013 05:25:39 +0000 (07:25 +0200)]
Revert "Increase earlier aspiration window size"

This reverts commit b88bc7b7667fc6ddbfc7412fb2c0bfc13e3bf11c.

8 years agoEntering a pawn endgame is no more dangerous
Marco Costalba [Tue, 2 Jul 2013 05:24:17 +0000 (07:24 +0200)]
Entering a pawn endgame is no more dangerous

A simplification of the 'dangerous' definition.

Seems neutral at reverse test at long TC

master vs patch
LLR: -2.96 (-2.94,2.94)
Total: 16974 W: 3122 L: 3139 D: 10713

bench: 4689029

8 years agoIncrease earlier aspiration window size
Marco Costalba [Mon, 1 Jul 2013 17:29:23 +0000 (19:29 +0200)]
Increase earlier aspiration window size

bench: 4377851

8 years agoMerge branch 'master' into aspiration
Marco Costalba [Mon, 1 Jul 2013 17:25:23 +0000 (19:25 +0200)]
Merge branch 'master' into aspiration

8 years agoFix a stale comment
Marco Costalba [Sun, 30 Jun 2013 11:12:04 +0000 (13:12 +0200)]
Fix a stale comment

No functional change.

8 years agoSimplify search results update
Marco Costalba [Sun, 30 Jun 2013 10:30:57 +0000 (12:30 +0200)]
Simplify search results update

Also some rename while there.

No functional change.

8 years agoReorder conditions according to their frequency
Marco Costalba [Sun, 30 Jun 2013 09:35:03 +0000 (11:35 +0200)]
Reorder conditions according to their frequency

This should minimize useless tests.

No functional change.

8 years agoCenter aspiration window on last returned score
Marco Costalba [Sun, 30 Jun 2013 09:00:19 +0000 (11:00 +0200)]
Center aspiration window on last returned score

bench: 4428212

8 years agoSimplify aspiration window loop
Marco Costalba [Sun, 30 Jun 2013 08:32:09 +0000 (10:32 +0200)]
Simplify aspiration window loop

Don't open the window in case we find a mate score: this
will be takes care with next patch.

No functional change.

8 years agoUse calloc() in TranspositionTable::set_size()
Marco Costalba [Sat, 29 Jun 2013 08:23:43 +0000 (10:23 +0200)]
Use calloc() in TranspositionTable::set_size()

Function calloc() already initializes memory to
zero, so avoid calling clear() afterwards.

Also some renaming while there (inspired by DiscoCheck).

No functional change.

8 years agoFix some stale comments
Marco Costalba [Sun, 23 Jun 2013 11:19:03 +0000 (13:19 +0200)]
Fix some stale comments

No functional change.

8 years agoMove SquareDistance[] to bitboard.cpp
Marco Costalba [Sun, 23 Jun 2013 11:08:10 +0000 (13:08 +0200)]
Move SquareDistance[] to bitboard.cpp

No functional change.

8 years agoDon't explicitize enum values when not needed
Marco Costalba [Sun, 23 Jun 2013 09:15:58 +0000 (11:15 +0200)]
Don't explicitize enum values when not needed

Compiler will chose the correct values in sequential
order for you.

Also move file and rank bitboards definitions to
bitboard.h

No functional change.

8 years agoRetire in_front_bb(Color c, Square s) overload
Marco Costalba [Sun, 23 Jun 2013 08:16:43 +0000 (10:16 +0200)]
Retire in_front_bb(Color c, Square s) overload

Explciitly call rank_of() in the few places where
it is used.

No functional change.

8 years agoRetire ThisAndAdjacentFilesBB[]
Marco Costalba [Sun, 23 Jun 2013 08:03:48 +0000 (10:03 +0200)]
Retire ThisAndAdjacentFilesBB[]

It is unused. Also renamed attack_span_mask to
pawn_attack_span

No functional change.

8 years agoSimplify hidden_checkers()
Marco Costalba [Sun, 23 Jun 2013 06:08:16 +0000 (08:08 +0200)]
Simplify hidden_checkers()

De-templetize and pass color as function argument.
No speed change.

No functional change.

8 years agoName functions along corresponding UCI commands
Marco Costalba [Sat, 22 Jun 2013 10:45:14 +0000 (12:45 +0200)]
Name functions along corresponding UCI commands

No functional change.

8 years agoMicro-optimize perft
Marco Costalba [Fri, 21 Jun 2013 07:10:03 +0000 (09:10 +0200)]
Micro-optimize perft

Avoid to call perft function when we just need to count
moves, at leaf nodes.

Speed up of almost 2%

No functional change.

8 years agoInclude file attacks in 'major on pawn'
Ryan Schmitt [Mon, 17 Jun 2013 16:55:00 +0000 (18:55 +0200)]
Include file attacks in 'major on pawn'

Passed both short TC:
LLR: 2.97 (-2.94,2.94)
Total: 57846 W: 12248 L: 11974 D: 33624

And long one:
LLR: 2.95 (-2.94,2.94)
Total: 9181 W: 1732 L: 1581 D: 5868

bench: 4609948

8 years agoRemove confusing optimization
Reuven Peleg [Mon, 17 Jun 2013 10:49:11 +0000 (13:49 +0300)]
Remove confusing optimization

Here we skip the call to pos.attacks_from<ROOK>(s) in the 98%
of cases, testing the first 2 members first. Unfortunatly
code is a bit triky and not clear. So we give up to the
speed optimization in exchange of more code clarity.

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>