]> git.sesse.net Git - stockfish/log
stockfish
11 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>
11 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>
11 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.

11 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.

11 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.

11 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

11 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.

11 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

11 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

11 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.

11 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

11 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.

11 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.

11 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.

11 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.

11 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.

11 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.

11 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>
11 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.

11 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,

11 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.

11 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>
11 years agoUpdate 'make help'
Marco Costalba [Sun, 14 Jul 2013 10:23:28 +0000 (12:23 +0200)]
Update 'make help'

No functional change.

11 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.

11 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.

11 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.

11 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.

11 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.

11 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

11 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.

11 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.

11 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.

11 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.

11 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.

11 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.

11 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

11 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

11 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

11 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.

11 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

11 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)

11 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

11 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.

11 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.

11 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

11 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.

11 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

11 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

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

11 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.

11 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.

11 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.

11 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

11 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.

11 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.

11 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.

11 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.

11 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.

11 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.

11 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.

11 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.

11 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.

11 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.

11 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

11 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>
11 years agoMerge some if statements in pos_is_ok()
Reuven Peleg [Mon, 17 Jun 2013 08:54:55 +0000 (11:54 +0300)]
Merge some if statements in pos_is_ok()

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
11 years agoRemove redundant condition in probcut
Marco Costalba [Mon, 17 Jun 2013 07:30:59 +0000 (09:30 +0200)]
Remove redundant condition in probcut

When !ss->skipNullMove it is assured that excludedMove == MOVE_NONE

No functional change.

11 years agoRename piece_count and piece_list
Marco Costalba [Sun, 16 Jun 2013 09:59:40 +0000 (11:59 +0200)]
Rename piece_count and piece_list

No functional change.

11 years agoDon't calculate pawnsOnSquares twice
Marco Costalba [Sun, 16 Jun 2013 08:51:17 +0000 (10:51 +0200)]
Don't calculate pawnsOnSquares twice

And reformat some code while there.

No functional change.

11 years agoUse move_pawns() in Pawns::probe
Marco Costalba [Sun, 16 Jun 2013 08:08:44 +0000 (10:08 +0200)]
Use move_pawns() in Pawns::probe

And rename some stuff.

No functional change.

11 years agoRevert "Reduce more CUT nodes only if parent node is reduced"
Marco Costalba [Fri, 14 Jun 2013 06:24:37 +0000 (08:24 +0200)]
Revert "Reduce more CUT nodes only if parent node is reduced"

This reverts commit d54e8a59551a7ebcbf2c2155dce46c7386b1742a.

It was not proved with SPRT this tweak is stronger. So revert it
for now to follow fishtest guidelines.

bench: 5108393

11 years agoFix description of TT entry
Marco Costalba [Fri, 14 Jun 2013 06:20:13 +0000 (08:20 +0200)]
Fix description of TT entry

It was way outdated and wrong !

No functional change.

11 years agoReduce more CUT nodes only if parent node is reduced
Marco Costalba [Thu, 13 Jun 2013 17:53:14 +0000 (19:53 +0200)]
Reduce more CUT nodes only if parent node is reduced

So when we are doing a LMR search at the parent ALL node.

This patch didn't prove stronger at 60" TC
LLR: -2.97 (-2.94,2.94)
Total: 22398 W: 4070 L: 4060 D: 14268

But, first, it scores at 50%, second (and most important for me) the opposite,
i.e. normal reduction when parent node is not reduced, seems very bad:
LLR: -2.95 (-2.94,2.94)
Total: 7036 W: 1446 L: 1534 D: 4056

According to Don, this idea of increased reduction of CUT nodes
works because if parent node is reduced, missing a cut-off due to
reduced depth search (meaning position is somehow tricky) forces
a full depth research at parent node, giving due insight in this
set of sensible positions.

IOW if we expect a node to fail-high at depth n, then we assume it
should fail-high also at depth n-1, if this doesn't happen it means
position is tricky enough to deserve a research at depth n+1.

bench: 4687419

11 years agoReduce more CUT nodes
Marco Costalba [Thu, 13 Jun 2013 17:50:32 +0000 (19:50 +0200)]
Reduce more CUT nodes

We got a good result from this tweak, in line with
what was already found by Don Dailey.

At short TC:
LLR: 2.95 (-2.94,2.94)
Total: 13097 W: 2742 L: 2598 D: 7757

At long TC:
LLR: 2.97 (-2.94,2.94)
Total: 7281 W: 1408 L: 1265 D: 4608

bench: 5108393

11 years agoIntroduce Cut/All node definitions
Marco Costalba [Sun, 9 Jun 2013 07:43:04 +0000 (09:43 +0200)]
Introduce Cut/All node definitions

Follow Don Dailey definition of cut/all node:

"If the previous node was a cut node, we consider this an ALL node.
The only exception is for PV nodes which are a special case of ALL nodes.
In the PVS framework, the first zero width window searched from a PV
node is by our definition a CUT node and if you have to do a re-search
then it is suddenly promoted to a PV nodes (as per PVS search) and only
then can the cut and all nodes swap positions. In other words, these
internal search failures can force the status of every node in the subtree
to swap if it propagates back to the last PV nodes."

http://talkchess.com/forum/viewtopic.php?topic_view=threads&p=519741&t=47577

With this definition we have an hit rate higher than 90% on:

    if (!PvNode && depth > 4 * ONE_PLY)
        dbg_hit_on_c(cutNode, (bestValue >= beta));

And an hit rate of just 28% on:

    if (!PvNode && depth > 4 * ONE_PLY)
        dbg_hit_on_c(!cutNode, (bestValue >= beta));

No functional change.

11 years agoDon't use std::vector::data()
Marco Costalba [Thu, 13 Jun 2013 05:42:43 +0000 (07:42 +0200)]
Don't use std::vector::data()

It is a C++11 only function.

Reported by Eelco.

No functional change.

11 years agoFix again early stop ss pointer
Marco Costalba [Sun, 9 Jun 2013 21:32:12 +0000 (23:32 +0200)]
Fix again early stop ss pointer

Fix was wrong becuase search starts from ss+1,
code is a bit tricky here, so rewrite in a way
to be more easy to read and understand.

Spotted by Eelco.

No functional change.

11 years agoDon't need to expose namespace Zobrist
Marco Costalba [Sun, 9 Jun 2013 21:24:36 +0000 (23:24 +0200)]
Don't need to expose namespace Zobrist

It can be local to position.cpp

No functional change.

11 years agoZobrist::init() should be Position::init()
Marco Costalba [Sun, 9 Jun 2013 11:43:30 +0000 (13:43 +0200)]
Zobrist::init() should be Position::init()

No functional change.

11 years agoConvert pieceSquareTable to 3 dimensions
Marco Costalba [Sun, 9 Jun 2013 11:05:41 +0000 (13:05 +0200)]
Convert pieceSquareTable to 3 dimensions

No functional change.

11 years agoMore consistent 'piece' variable naming
Marco Costalba [Sun, 9 Jun 2013 10:56:05 +0000 (12:56 +0200)]
More consistent 'piece' variable naming

No functional change.

11 years agoIntroduce operator~(Piece c)
Marco Costalba [Sun, 9 Jun 2013 10:43:12 +0000 (12:43 +0200)]
Introduce operator~(Piece c)

Small syntactic sugar to reverse piece color.

No functional change.

11 years agoRetire psq_delta()
Marco Costalba [Sun, 9 Jun 2013 10:24:43 +0000 (12:24 +0200)]
Retire psq_delta()

No functional change.

11 years agoUse alpha instead of beta-1
Marco Costalba [Sun, 9 Jun 2013 09:52:39 +0000 (11:52 +0200)]
Use alpha instead of beta-1

It is more directly related to a fail-low.

No functional change.

11 years agoFix incorrect 'ss' pointer in early stop check
Marco Costalba [Sun, 9 Jun 2013 08:58:24 +0000 (10:58 +0200)]
Fix incorrect 'ss' pointer in early stop check

The exclusion search used to verify one move is much
better than other shall be called with 'ss' and not
'ss+1'

No functional change.

11 years agoFix a typo
Dariusz Orzechowski [Tue, 4 Jun 2013 21:52:00 +0000 (23:52 +0200)]
Fix a typo

No functional change.

11 years agoFix search log when using skills
Marco Costalba [Sat, 8 Jun 2013 08:35:35 +0000 (10:35 +0200)]
Fix search log when using skills

In case of we pick a sub-optimal move be
sure to print this, and not the best one
on seach log file.

Bug spotted by Guenther Demetz.

No functional change.

11 years agoFix a crash when 'go' multiple times
Marco Costalba [Sat, 1 Jun 2013 13:45:46 +0000 (15:45 +0200)]
Fix a crash when 'go' multiple times

Search is started after setting a position and
issuing UCI 'go' command. Then if we stop the search
and call 'go' again without setting a new position it
is assumed that the previous setup is preserved, but
this is not the case because what happens is that
SetupStates is reset to NULL, leading to a crash as
soon as RootPos.is_draw() is called because st->previous
is now stale.

UCI protocol is not very clear about requiring that a
position is setup always before launching a search,
so here we easy the life of GUI developers assuming
that the current state is preserved after returning
from a 'stop' command.

Bug reported by Gregor Cramer.

No functional change.

11 years agoAssorted renaming in evaluation
Marco Costalba [Sat, 1 Jun 2013 09:48:38 +0000 (11:48 +0200)]
Assorted renaming in evaluation

And some reshuffle too.

No functional change.

11 years agoPassed pawn tuning
jundery [Thu, 30 May 2013 03:07:24 +0000 (21:07 -0600)]
Passed pawn tuning

A small number of tests with simulated
annealing at 15s indicated these values
may be better

And this is verified at long 60+0.05 TC
LLR: 2.95 (-2.94,2.94)
Total: 40658 W: 7821 L: 7501 D: 25336

bench: 4931544

11 years agoShrink engine UCI name
Marco Costalba [Mon, 27 May 2013 15:42:52 +0000 (17:42 +0200)]
Shrink engine UCI name

Some GUI have problems with long names.

Reported by George Speight.

No functional change.

11 years agoAdd Pawn Structure also to polyglot.ini
Marco Costalba [Sat, 25 May 2013 11:14:41 +0000 (13:14 +0200)]
Add Pawn Structure also to polyglot.ini

No functional change.

11 years agoRe-add "Pawn Structure" UCI option
Marco Costalba [Sat, 25 May 2013 10:18:58 +0000 (12:18 +0200)]
Re-add "Pawn Structure" UCI option

And reshuffle the code to not special case
this parameter.

No functional change.

11 years agoMore uniform tracing code
Marco Costalba [Sat, 25 May 2013 09:57:18 +0000 (11:57 +0200)]
More uniform tracing code

No functional change.

11 years agoBunch of 3 small patches
Uri Blass [Tue, 21 May 2013 22:58:52 +0000 (01:58 +0300)]
Bunch of 3 small patches

This patch is the sum of:

- Grainsize of 4 instead of 8

- Removing "depth < DEPTH_ZERO"

- Change DEPTH_QS_RECAPTURES = -5 to -7

All the patches individually failed to pass SPRT but scored
around 50%.

Together they pass easily short TC:
LLR: 2.96 (-2.94,2.94)
Total: 4429 W: 964 L: 844 D: 2621

And with some difficult long TC of 60+0.05:
LLR: 2.95 (-2.94,2.94)
Total: 64133 W: 11968 L: 11532 D: 40633

bench: 4821467

11 years agoMicroptimize MoveList loop
Marco Costalba [Sun, 19 May 2013 20:00:49 +0000 (22:00 +0200)]
Microptimize MoveList loop

Add MOVE_NONE at the tail, this allows to loop
across MoveList checking for *it != MOVE_NONE,
and because *it is used imediately after compiler
is able to reuse it.

With this small patch perft speed increased of 3%

And it is also a semplification !

No functional change.

11 years agoDelay killers[] initialization
Marco Costalba [Sat, 18 May 2013 10:49:31 +0000 (12:49 +0200)]
Delay killers[] initialization

Most of the time we cut-off earlier, at captures, so this
results in useless work.

There is a small functionality change becuase 'ss' can change
from MovePicker c'tor to when killers are tried due, for
instance, to singular search.

bench: 4603795

11 years agoReduce countermoves less in LMR
Marco Costalba [Sun, 19 May 2013 19:32:52 +0000 (21:32 +0200)]
Reduce countermoves less in LMR

Passed SPRT for both short TC 15+0.05:
LLR: 2.95 (-2.94,2.94)
Total: 17724 W: 3756 L: 3598 D: 10370

And long TC 60+0.05:
LLR: 2.95 (-2.94,2.94)
Total: 22672 W: 4232 L: 4011 D: 14429

bench: 4418832

11 years agoMimic an iterator for looping across MoveList
Marco Costalba [Sun, 19 May 2013 11:28:25 +0000 (13:28 +0200)]
Mimic an iterator for looping across MoveList

Seems more conventional.

No functional change.

11 years agoUse two counter moves instead of one
Joona Kiiski [Wed, 15 May 2013 19:31:45 +0000 (20:31 +0100)]
Use two counter moves instead of one

Very good at long 60"+0.05 TC
LLR: 2.95 (-2.94,2.94)
Total: 5954 W: 1151 L: 1016 D: 3787

[edit: slightly changed form original patch to avoid useless loop
 across killers when killer is MOVE_NONE]

bench: 4327405