fairystockfish.git
5 years agoFix Tsume mode speed regression
Fabian Fichter [Wed, 15 Jan 2020 20:06:22 +0000]
Fix Tsume mode speed regression

5 years agoFix attack bitboard for non-king royal pieces
Fabian Fichter [Sun, 12 Jan 2020 21:53:57 +0000]
Fix attack bitboard for non-king royal pieces

knightmate STC
LLR: 3.00 (-2.94,2.94) [-10.00,5.00]
Total: 308 W: 114 L: 67 D: 127
http://www.variantfishtest.org:6543/tests/view/5e1b95bd6e23db695c3fd2c2

knightmate LTC
LLR: 2.98 (-2.94,2.94) [-10.00,5.00]
Total: 343 W: 121 L: 75 D: 147
http://www.variantfishtest.org:6543/tests/view/5e1b963f6e23db695c3fd2c5

5 years agoAdjust rule configuration for Shogun
Fabian Fichter [Sun, 12 Jan 2020 21:15:51 +0000]
Adjust rule configuration for Shogun

5 years agoFix Betza notation for pawn drops
Fabian Fichter [Sun, 12 Jan 2020 21:07:46 +0000]
Fix Betza notation for pawn drops

5 years agoImplement XBoard Betza notation for castling
Fabian Fichter [Sun, 12 Jan 2020 20:35:03 +0000]
Implement XBoard Betza notation for castling

5 years agoFix handling of pawns in promotion zone
Fabian Fichter [Fri, 10 Jan 2020 23:18:20 +0000]
Fix handling of pawns in promotion zone

- Support shogi-style piece promotion for pawns
- Make pawn drops in promotion zone configurable via `promotionZonePawnDrops`
- Fix parsing of promotionPieceTypes option

5 years agoRewrite bughouse partner communication
Fabian Fichter [Sun, 12 Jan 2020 00:00:53 +0000]
Rewrite bughouse partner communication

- Support playing moves requested by partner.
- Extend help.

5 years agoRename firstRankDrops to firstRankPawnDrops
Fabian Fichter [Fri, 10 Jan 2020 19:15:25 +0000]
Rename firstRankDrops to firstRankPawnDrops

No functional change.

5 years agoSupport Supply chess
Fabian Fichter [Fri, 10 Jan 2020 17:15:33 +0000]
Support Supply chess

A four-player variant of Xiangqi similar to bughouse:
https://en.wikipedia.org/wiki/Xiangqi#Variations

5 years agoIncrease probcut margin for CTF variants
Fabian Fichter [Fri, 3 Jan 2020 12:39:05 +0000]
Increase probcut margin for CTF variants

racingkings STC
LLR: -2.95 (-2.94,2.94) [0.00,10.00]
Total: 10039 W: 3296 L: 3245 D: 3498
http://www.variantfishtest.org:6543/tests/view/5e0f364e6e23db1ffe4a296c

racingkings LTC
LLR: 2.98 (-2.94,2.94) [0.00,10.00]
Total: 9089 W: 2797 L: 2614 D: 3678
http://www.variantfishtest.org:6543/tests/view/5e11ade16e23db1ffe4a2983

kingofthehill STC
LLR: 2.95 (-2.94,2.94) [0.00,10.00]
Total: 12632 W: 5423 L: 5158 D: 2051
http://www.variantfishtest.org:6543/tests/view/5e0f36376e23db1ffe4a2969

kingofthehill LTC
LLR: -2.97 (-2.94,2.94) [0.00,10.00]
Total: 21444 W: 8849 L: 8638 D: 3957
http://www.variantfishtest.org:6543/tests/view/5e11add66e23db1ffe4a2981

5 years agoImplement sit and go commands for bughouse
Fabian Fichter [Fri, 10 Jan 2020 13:30:51 +0000]
Implement sit and go commands for bughouse

- Listen to `sit` and `go` commands
- Automatically sit when in a forced mate

5 years agoAdd knightmate to standard variants
Fabian Fichter [Sun, 5 Jan 2020 23:39:48 +0000]
Add knightmate to standard variants

5 years agoApply promotion limit to piece promotions
Fabian Fichter [Sun, 5 Jan 2020 22:59:03 +0000]
Apply promotion limit to piece promotions

Closes #61.

5 years agoSupport Knightmate chess
Fabian Fichter [Sun, 5 Jan 2020 21:02:38 +0000]
Support Knightmate chess

https://www.chessvariants.com/diffobjective.dir/knightmate.html

No functional change for other variants.

Closes #50.

5 years agoFix checkbox options for xboard protocol
Fabian Fichter [Sun, 5 Jan 2020 15:11:01 +0000]
Fix checkbox options for xboard protocol

Use 1/0 instead of true/false.

5 years agoSupport xboard ping command
Fabian Fichter [Sun, 5 Jan 2020 15:10:08 +0000]
Support xboard ping command

5 years agoRestart search on bughouse holding command
Fabian Fichter [Sun, 5 Jan 2020 12:42:04 +0000]
Restart search on bughouse holding command

Instead of moving instantly, update the board state and restart the search.

5 years agoCase-insensitive parsing of piece types
Fabian Fichter [Fri, 3 Jan 2020 21:14:31 +0000]
Case-insensitive parsing of piece types

Make parsing of piece types from variant configuration case-insensitive.

Fixes #63.

5 years agoSupport suicide chess
Fabian Fichter [Tue, 31 Dec 2019 12:47:18 +0000]
Support suicide chess

https://www.freechess.org/Help/HelpFiles/suicide_chess.html

5 years agoSupport nocastle chess
Fabian Fichter [Tue, 31 Dec 2019 12:29:56 +0000]
Support nocastle chess

5 years agoSupport bughouse-specific XBoard commands
Fabian Fichter [Thu, 26 Dec 2019 12:35:44 +0000]
Support bughouse-specific XBoard commands

5 years agoGeneralize sittuyin promotion
Fabian Fichter [Wed, 25 Dec 2019 11:33:00 +0000]
Generalize sittuyin promotion

No functional change.

5 years agoSupport bughouse
Fabian Fichter [Wed, 25 Dec 2019 08:42:30 +0000]
Support bughouse

Add basic support for bughouse without protocol extensions yet.

6 years agoSet variantTemplate for pocketknight
Fabian Fichter [Tue, 24 Dec 2019 13:39:22 +0000]
Set variantTemplate for pocketknight

6 years agoSend piece command in XBoard protocol
Fabian Fichter [Tue, 24 Dec 2019 13:01:42 +0000]
Send piece command in XBoard protocol

Use Betza notation to communicate piece movement options to GUI.
Improves compatibility with XBoard/WinBoard and allows to play
most variants with legality testing enabled.

Closes #56.

6 years agoAdd missing pieceToCharTable definitions
Fabian Fichter [Tue, 24 Dec 2019 12:03:26 +0000]
Add missing pieceToCharTable definitions

Fixes XBoard/WinBoard compatibility for placement and sittuyin.

6 years agoTweak piece values for drop variants
Fabian Fichter [Mon, 23 Dec 2019 12:13:27 +0000]
Tweak piece values for drop variants

and variants where check is prohibited.

crazyhouse STC (yellow)
LLR: -2.97 (-2.94,2.94) [0.00,10.00]
Total: 16416 W: 8023 L: 7887 D: 506
http://www.variantfishtest.org:6543/tests/view/5dfe8f2f6e23db1ffe4a28ee

crazyhouse LTC
LLR: 2.95 (-2.94,2.94) [0.00,10.00]
Total: 2507 W: 1275 L: 1140 D: 92
http://www.variantfishtest.org:6543/tests/view/5dff13b16e23db1ffe4a28f3

racingkings STC
LLR: 2.98 (-2.94,2.94) [-10.00,5.00]
Total: 4507 W: 1524 L: 1501 D: 1482
http://www.variantfishtest.org:6543/tests/view/5dffdcfe6e23db1ffe4a28fb

racingkings LTC
LLR: 2.97 (-2.94,2.94) [-10.00,5.00]
Total: 1150 W: 362 L: 320 D: 468
http://www.variantfishtest.org:6543/tests/view/5dffdcf26e23db1ffe4a28f9

6 years agoTweak piece value of Ai-Wok
Fabian Fichter [Mon, 23 Dec 2019 12:11:24 +0000]
Tweak piece value of Ai-Wok

ai-wok STC
LLR: 2.95 (-2.94,2.94) [0.00,10.00]
Total: 12183 W: 4264 L: 4029 D: 3890
http://www.variantfishtest.org:6543/tests/view/5dcc4d6e6e23db1ffe4a2731

ai-wok LTC
LLR: 2.95 (-2.94,2.94) [0.00,10.00]
Total: 27865 W: 9319 L: 8890 D: 9656
http://www.variantfishtest.org:6543/tests/view/5dce72436e23db1ffe4a274b

6 years agoIncrease aspiration window for drop variants
Fabian Fichter [Mon, 23 Dec 2019 12:10:14 +0000]
Increase aspiration window for drop variants

crazyhouse STC (failed)
LLR: -2.97 (-2.94,2.94) [0.00,10.00]
Total: 3614 W: 1727 L: 1775 D: 112
http://www.variantfishtest.org:6543/tests/view/5deec1876e23db1ffe4a28be

crazyhouse LTC
LLR: 2.95 (-2.94,2.94) [0.00,10.00]
Total: 3726 W: 1863 L: 1711 D: 152
http://www.variantfishtest.org:6543/tests/view/5deeca6e6e23db1ffe4a28ca

crazyhouse VLTC
LLR: 2.96 (-2.94,2.94) [0.00,10.00]
Total: 11893 W: 5810 L: 5541 D: 542
http://www.variantfishtest.org:6543/tests/view/5df095f66e23db1ffe4a28d8

6 years agoFix endgame evaluation for large-board version
Fabian Fichter [Sat, 7 Dec 2019 15:19:10 +0000]
Fix endgame evaluation for large-board version

Map squares to 8x8 board to retain endgame evaluation logic.
Allows to enable endgame evaluation for large-board variants.

capablanca STC
LLR: 2.99 (-2.94,2.94) [-10.00,5.00]
Total: 2512 W: 980 L: 941 D: 591
http://www.variantfishtest.org:6543/tests/view/5dea40ff6e23db1ffe4a289c

capablanca LTC
LLR: 2.98 (-2.94,2.94) [-10.00,5.00]
Total: 1443 W: 534 L: 490 D: 419
http://www.variantfishtest.org:6543/tests/view/5dea8b666e23db1ffe4a28a6

makruk STC
LLR: 3.00 (-2.94,2.94) [-10.00,5.00]
Total: 1810 W: 158 L: 124 D: 1528
http://www.variantfishtest.org:6543/tests/view/5dea3f546e23db1ffe4a289a

makruk LTC
LLR: 3.01 (-2.94,2.94) [-10.00,5.00]
Total: 795 W: 77 L: 41 D: 677
http://www.variantfishtest.org:6543/tests/view/5dea8b7a6e23db1ffe4a28a8

chess STC
LLR: 2.99 (-2.94,2.94) [-10.00,5.00]
Total: 4321 W: 959 L: 936 D: 2426
http://www.variantfishtest.org:6543/tests/view/5dea398f6e23db1ffe4a2896

chess LTC
LLR: 2.96 (-2.94,2.94) [-10.00,5.00]
Total: 3451 W: 667 L: 640 D: 2144
http://www.variantfishtest.org:6543/tests/view/5dea633a6e23db1ffe4a28a4

6 years agoConsider soldiers as pawn-like in evaluation
Fabian Fichter [Mon, 2 Dec 2019 22:10:15 +0000]
Consider soldiers as pawn-like in evaluation

minixiangqi
LLR: 2.97 (-2.94,2.94) [0.00,10.00]
Total: 398 W: 186 L: 101 D: 111

6 years agoFix endgame evaluation for KFsPs vs. K
Fabian Fichter [Mon, 2 Dec 2019 20:48:39 +0000]
Fix endgame evaluation for KFsPs vs. K

Example:
```
setoption name UCI_Variant value makruk
position fen 7k/8/5M2/5KMP/8/8/8/8 w - - 0 1
eval
```

6 years agoBoost piece value of strongest piece
Fabian Fichter [Sun, 1 Dec 2019 22:24:35 +0000]
Boost piece value of strongest piece

shatranj STC
LLR: 2.97 (-2.94,2.94) [0.00,10.00]
Total: 3168 W: 375 L: 300 D: 2493
http://www.variantfishtest.org:6543/tests/view/5de29de76e23db1ffe4a285e

shatranj LTC
LLR: 2.96 (-2.94,2.94) [0.00,10.00]
Total: 2416 W: 226 L: 160 D: 2030
http://www.variantfishtest.org:6543/tests/view/5de3007f6e23db1ffe4a2864

6 years agoConsider flying general rule in SEE
Fabian Fichter [Sun, 1 Dec 2019 18:14:32 +0000]
Consider flying general rule in SEE

Mitigates #59.

6 years agoSupport Tsume mode
Fabian Fichter [Sat, 30 Nov 2019 17:35:51 +0000]
Support Tsume mode

Allows to solve Tsume puzzles. Example:
```
setoption name TsumeMode value true
setoption name UCI_Variant value shogi
position fen 1kp6/2l6/2l6/2l6/2n6/2n6/1gn6/9/L8[SPPPPPPrrbbgggsssnlppp] w 0 1
d
go mate 20
```

6 years agoEnable endgame evaluation for S-Chess
Fabian Fichter [Sat, 30 Nov 2019 11:44:06 +0000]
Enable endgame evaluation for S-Chess

seirawan STC
LLR: 2.95 (-2.94,2.94) [0.00,10.00]
Total: 4672 W: 1609 L: 1473 D: 1590
http://www.variantfishtest.org:6543/tests/view/5dd852366e23db1ffe4a27a7

seirawan LTC
LLR: -0.69 (-2.94,2.94) [0.00,10.00]
Total: 12745 W: 3995 L: 3856 D: 4894
http://www.variantfishtest.org:6543/tests/view/5ddba1946e23db1ffe4a27cd

6 years agoTweak initiative for xiangqi
Fabian Fichter [Sat, 30 Nov 2019 01:03:46 +0000]
Tweak initiative for xiangqi

xiangqi
LLR: 3.02 (-2.94,2.94) [0.00,10.00]
Total: 828 W: 279 L: 196 D: 353

minixiangqi
LLR: 2.97 (-2.94,2.94) [0.00,10.00]
Total: 312 W: 156 L: 72 D: 84

losers STC
LLR: 2.97 (-2.94,2.94) [-10.00,5.00]
Total: 2266 W: 1013 L: 968 D: 285
http://www.variantfishtest.org:6543/tests/view/5de1105a6e23db1ffe4a2840

shatranj STC
LLR: 2.97 (-2.94,2.94) [-10.00,5.00]
Total: 3498 W: 376 L: 347 D: 2775
http://www.variantfishtest.org:6543/tests/view/5de10fc66e23db1ffe4a283c

6 years agoTweak piece value of amazon
Fabian Fichter [Fri, 29 Nov 2019 13:23:41 +0000]
Tweak piece value of amazon

amazon STC
LLR: 2.96 (-2.94,2.94) [0.00,10.00]
Total: 10420 W: 2230 L: 2067 D: 6123
http://www.variantfishtest.org:6543/tests/view/5dcc4d936e23db1ffe4a2736

amazon LTC
LLR: 2.97 (-2.94,2.94) [0.00,10.00]
Total: 7252 W: 1293 L: 1172 D: 4787
http://www.variantfishtest.org:6543/tests/view/5dce721a6e23db1ffe4a2749

6 years agoTweak piece values for drop variants
Fabian Fichter [Tue, 26 Nov 2019 19:06:05 +0000]
Tweak piece values for drop variants

as well as for racing kings.

crazyhouse STC
LLR: 2.97 (-2.94,2.94) [0.00,10.00]
Total: 4655 W: 2339 L: 2172 D: 144
http://www.variantfishtest.org:6543/tests/view/5ddaff406e23db1ffe4a27c1

crazyhouse LTC
LLR: 2.95 (-2.94,2.94) [0.00,10.00]
Total: 3075 W: 1550 L: 1407 D: 118
http://www.variantfishtest.org:6543/tests/view/5ddb15636e23db1ffe4a27c8

racingkings STC
LLR: 2.95 (-2.94,2.94) [0.00,10.00]
Total: 3311 W: 1177 L: 1057 D: 1077
http://www.variantfishtest.org:6543/tests/view/5ddaff586e23db1ffe4a27c4

racingkings LTC
LLR: 2.96 (-2.94,2.94) [-10.00,5.00]
Total: 824 W: 284 L: 239 D: 301
http://www.variantfishtest.org:6543/tests/view/5ddba21c6e23db1ffe4a27d4

6 years agoTweak fairy piece values
Fabian Fichter [Fri, 22 Nov 2019 23:13:13 +0000]
Tweak fairy piece values

centaur
LLR: 3.01 (-2.94,2.94) [0.00,10.00]
Total: 372 W: 208 L: 112 D: 52

shako
LLR: 2.96 (-2.94,2.94) [0.00,10.00]
Total: 722 W: 324 L: 231 D: 167

manchu
LLR: 2.95 (-2.94,2.94) [0.00,10.00]
Total: 1140 W: 593 L: 480 D: 67

6 years agoConsolidate evaluation of unpromoted soldiers
Fabian Fichter [Fri, 22 Nov 2019 15:50:36 +0000]
Consolidate evaluation of unpromoted soldiers

xiangqi
LLR: 2.96 (-2.94,2.94) [0.00,10.00]
Total: 1678 W: 615 L: 516 D: 547

6 years agoAdd more variant templates
Fabian Fichter [Fri, 22 Nov 2019 15:07:03 +0000]
Add more variant templates

6 years agoIncrease endgame king danger for xiangqi
Fabian Fichter [Thu, 21 Nov 2019 22:40:14 +0000]
Increase endgame king danger for xiangqi

minixiangqi
LLR: 2.96 (-2.94,2.94) [0.00,10.00]
Total: 508 W: 233 L: 145 D: 130

xiangqi
LLR: 0.25 (-2.94,2.94) [0.00,10.00]
Total: 2000 W: 602 L: 572 D: 826

6 years agoRestore development version
Fabian Fichter [Thu, 21 Nov 2019 19:33:43 +0000]
Restore development version

6 years agoFairy-Stockfish 10.4
Fabian Fichter [Tue, 19 Nov 2019 11:57:44 +0000]
Fairy-Stockfish 10.4

bench: 4756806

6 years agoAdd cambodian to perft tests
Fabian Fichter [Mon, 18 Nov 2019 20:14:16 +0000]
Add cambodian to perft tests

6 years agoAdd more links to readme
Fabian Fichter [Sun, 17 Nov 2019 20:28:49 +0000]
Add more links to readme

6 years agoMerge official-stockfish/master
Fabian Fichter [Sun, 17 Nov 2019 15:09:04 +0000]
Merge official-stockfish/master

bench: 4756806

6 years agoSpeed up move generation for xiangqi
Fabian Fichter [Sun, 17 Nov 2019 14:10:37 +0000]
Speed up move generation for xiangqi

Filter out invalid soldier and general moves early.

6 years agoFix perpetual check detection
Fabian Fichter [Sun, 17 Nov 2019 11:54:18 +0000]
Fix perpetual check detection

Consider also perpetual checks by side to move
in order to avoid wrong draw scores.

Closes #49.

6 years agoMore pieceToCharTable definitions
Fabian Fichter [Sat, 16 Nov 2019 22:04:26 +0000]
More pieceToCharTable definitions

6 years agoMerge official-stockfish/master
Fabian Fichter [Sat, 16 Nov 2019 20:00:42 +0000]
Merge official-stockfish/master

bench: 4552352

6 years agoAdd xiangqihouse to variants.ini
Fabian Fichter [Sat, 16 Nov 2019 17:00:58 +0000]
Add xiangqihouse to variants.ini

Enhance bitboard parsing to simplify definition.

6 years agoIntroduce king flank defenders
Vizvezdenec [Sat, 16 Nov 2019 11:53:11 +0000]
Introduce king flank defenders

This patch implements what we have been trying for quite some time -
dependance of kingdanger on balance of attackers and defenders of king
flank, to avoid overestimate attacking power if the opponent has enough
defenders of king position. We already have some form of it in bishop
and knight defenders - this is further work in this direction.

What to do based on this?

1) constant 4 is arbitrary, maybe it is not optimal
2) maybe we can use quadratic formula as in kingflankattack
3) simplification into alrealy existing terms is always a possibility :)
4) overall kingdanger tuning always can be done.

passed STC:
http://tests.stockfishchess.org/tests/view/5dcf40560ebc590256325f30
LLR: 2.96 (-2.94,2.94) [-1.50,4.50]
Total: 26298 W: 5819 L: 5632 D: 14847

passed LTC:
http://tests.stockfishchess.org/tests/view/5dcfa5760ebc590256326464
LLR: 2.96 (-2.94,2.94) [0.00,3.50]
Total: 30600 W: 5042 L: 4784 D: 20774

Closes https://github.com/official-stockfish/Stockfish/pull/2415

Bench: 4496847

6 years agoAdd pieceToCharTable for more variants
Fabian Fichter [Sat, 16 Nov 2019 11:03:38 +0000]
Add pieceToCharTable for more variants

Improve XBoard compatibility for more variants.

6 years agoTweak piece values for xiangqi
Fabian Fichter [Fri, 15 Nov 2019 21:40:52 +0000]
Tweak piece values for xiangqi

xiangqi
LLR: 2.97 (-2.94,2.94) [0.00,10.00]
Total: 1704 W: 506 L: 416 D: 782

6 years agoImprove displaying of position
Fabian Fichter [Fri, 15 Nov 2019 18:01:02 +0000]
Improve displaying of position

Add side to move and pockets to output of `d` command (#47).

6 years agoSupport Manchu chess
Fabian Fichter [Fri, 15 Nov 2019 15:31:44 +0000]
Support Manchu chess

https://en.wikipedia.org/wiki/Manchu_chess

bench: 4700464

6 years agoDefine variant template for minixiangqi
Fabian Fichter [Fri, 15 Nov 2019 00:11:08 +0000]
Define variant template for minixiangqi

6 years agoImprove XBoard compatibility
Fabian Fichter [Fri, 15 Nov 2019 00:03:52 +0000]
Improve XBoard compatibility

Support pieceToCharTable in setup command to improve compatibility (#54).

6 years agoImprove XBoard compatibility for makruk variants
Fabian Fichter [Thu, 14 Nov 2019 23:26:46 +0000]
Improve XBoard compatibility for makruk variants

6 years agoPrune before extension
Stefan Geschwentner [Tue, 12 Nov 2019 17:36:12 +0000]
Prune before extension

Switch execution order in search: do move pruning before extension detection.

STC:
LLR: 2.96 (-2.94,2.94) [-1.50,4.50]
Total: 5762 W: 1307 L: 1181 D: 3274
http://tests.stockfishchess.org/tests/view/5dcc56e90ebc59025bcbb833

LTC:
LLR: 2.96 (-2.94,2.94) [0.00,3.50]
Total: 72956 W: 11959 L: 11585 D: 49412
http://tests.stockfishchess.org/tests/view/5dcc62840ebc59025bcbb96f

Closes https://github.com/official-stockfish/Stockfish/pull/2413

Bench: 4532366

6 years agoSupport New Zealand chess
Fabian Fichter [Thu, 14 Nov 2019 16:19:48 +0000]
Support New Zealand chess

Allow castling with one non-rook piece type and add New Zealand chess (#52).

bench: 4470822

6 years agoSupport Centaur chess
Fabian Fichter [Thu, 14 Nov 2019 13:14:44 +0000]
Support Centaur chess

https://www.chessvariants.com/large.dir/contest/royalcourt.html

Closes #33.

bench: 4556696

6 years agoSupport debug commands also in XBoard protocol
Fabian Fichter [Thu, 14 Nov 2019 10:47:47 +0000]
Support debug commands also in XBoard protocol

Commands `d` and `eval` can now also be used in xboard protocol (#47).

6 years agoSeparate XBoard protocol code
Fabian Fichter [Thu, 14 Nov 2019 09:37:59 +0000]
Separate XBoard protocol code

Split UCI and XBoard protocol code for better maintainability.

No functional change.

6 years agoTweak piece values for hoppelpoppel
Fabian Fichter [Thu, 14 Nov 2019 09:25:40 +0000]
Tweak piece values for hoppelpoppel

hoppelpoppel STC
LLR: 2.95 (-2.94,2.94) [0.00,10.00]
Total: 159 W: 113 L: 25 D: 21
http://www.variantfishtest.org:6543/tests/view/5dcc4d846e23db1ffe4a2734

hoppelpoppel LTC
LLR: 2.95 (-2.94,2.94) [0.00,10.00]
Total: 136 W: 100 L: 16 D: 20
http://www.variantfishtest.org:6543/tests/view/5dcc61d96e23db1ffe4a2739

6 years agoRank-based outposts
SFisGOD [Tue, 12 Nov 2019 01:22:09 +0000]
Rank-based outposts

Introduce OutpostRank[RANK_NB] which contains a bonus according to
the rank of the outpost. We use it for the primary Outpost bonus.
The values are based on the trends of the SPSA tuning run with some
manual tweaks.

Passed STC:
LLR: 2.96 (-2.94,2.94) [-1.50,4.50]
Total: 27454 W: 6059 L: 5869 D: 15526
http://tests.stockfishchess.org/tests/view/5dcadba20ebc590256922f09

Passed LTC:
LLR: 2.94 (-2.94,2.94) [0.00,3.50]
Total: 57950 W: 9443 L: 9112 D: 39395
http://tests.stockfishchess.org/tests/view/5dcaea880ebc5902569230bc

Bench: 4778405

----------------------------

The inspiration for this patch came from Stefan Geschwentner's attempt
of modifying BishopPawns into a rank-based penalty. Michael Stembera
suggested that maybe the S(0, 0) ranks (3rd, 7th and also maybe 8th)
can still be tuned. This would expand our definition of Outpost and
OutpostRanks would be removed altogether. Special thanks to Mark Tenzer
for all the help and excellent suggestions.

6 years agoAvoid copying of pieceToChar string
Fabian Fichter [Tue, 12 Nov 2019 22:53:09 +0000]
Avoid copying of pieceToChar string

Small speed-up by using references.

6 years agoFix description of chancellor in variants.ini
Fabian Fichter [Tue, 12 Nov 2019 20:54:11 +0000]
Fix description of chancellor in variants.ini

6 years agoSupport perft command in xboard protocol
Fabian Fichter [Tue, 12 Nov 2019 19:59:03 +0000]
Support perft command in xboard protocol

6 years agoUpdate documentation in variants.ini
Fabian Fichter [Tue, 12 Nov 2019 19:25:01 +0000]
Update documentation in variants.ini

Describe recently added configuration options.

6 years agoShallow depth pruning on NonPV advanced pawn push
Miguel Lahoz [Sun, 10 Nov 2019 09:49:06 +0000]
Shallow depth pruning on NonPV advanced pawn push

Usually advanced pawn pushes are not considered in shallow depth pruning
because it is risky to do so with possible promotions near the horizon.
However, this heuristic is not also beneficial on NonPV nodes since we
can afford to take slightly more risk on less important nodes.

STC:
LLR: 2.95 (-2.94,2.94) [-1.50,4.50]
Total: 54530 W: 11955 L: 11686 D: 30889
http://tests.stockfishchess.org/tests/view/5dc7dda30ebc5902ea57efd0

LTC:
LLR: 2.95 (-2.94,2.94) [0.00,3.50]
Total: 77336 W: 12786 L: 12399 D: 52151
http://tests.stockfishchess.org/tests/view/5dc8050d0ebc5902ea57f491

Closes https://github.com/official-stockfish/Stockfish/pull/2408

Bench: 4422068

6 years agoRemove explicit moveCount pruning
Joost VandeVondele [Sat, 9 Nov 2019 05:56:18 +0000]
Remove explicit moveCount pruning

The removed lines approximately duplicate equivalent logic in the movePicker.
Adjust the futility_move_count to componsate for some difference
(the movePicker prunes one iteration of the move loop later).

Passed STC:
LLR: 2.95 (-2.94,2.94) [-3.00,1.00]
Total: 8114 W: 1810 L: 1663 D: 4641
http://tests.stockfishchess.org/tests/view/5dc6afe60ebc5902562bd318

Passed LTC:
LLR: 2.95 (-2.94,2.94) [-3.00,1.00]
Total: 89956 W: 14473 L: 14460 D: 61023
http://tests.stockfishchess.org/tests/view/5dc6bdcf0ebc5902562bd3c0

Closes https://github.com/official-stockfish/Stockfish/pull/2407

Bench: 4256440

---------------------

How to continue from there?

It would be interesting to see if we can extract some Elo gain
from the new futility_move_count formula, for instance by somehow
incorporating the final -1 in the 5 constant, or adding a linear
term to the quadratics...

```
   futility_move_count = (5 + depth * depth) * (1 + improving) / 2 - 1
```

6 years agoSequencing tweak in tbprobe()
Alain SAVARD [Sun, 27 Oct 2019 20:16:26 +0000]
Sequencing tweak in tbprobe()

Followup of "issue" #2372, which was in fact a small speed-up
proposal by user @d3vv for the probing code of tablebases.

See comments on this issue where it was proven by Alin Savard that the
proposed change is more efficient on average than master on all type of
sequences it will usually be called.

Note that on gcc 4.3, this will produce a bogus warning which was solved
with ulterior gcc versions: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43949

Closes https://github.com/official-stockfish/Stockfish/issues/2372
Closes https://github.com/official-stockfish/Stockfish/pull/2379

Non functional change

6 years agoFix incorrect mate score.
Joost VandeVondele [Sat, 26 Oct 2019 14:34:19 +0000]
Fix incorrect mate score.

Current master 648c7ec25db2040c0af34dd846dfa3f57af5ad0a will generate an
incorrect mate score for:

```
setoption name Hash value 8
setoption name Threads value 1
position fen 8/1p2KP2/1p4q1/1Pp5/2P5/N1Pp1k2/3P4/1N6 b - - 76 40
go depth 49
```
even though the position is a draw. Generally, SF tries to display only
proven mate scores, so this is a bug.

This was posted http://www.talkchess.com/forum3/viewtopic.php?f=2&t=72166
by Uri Blass, with the correct analysis that this must be related to the
50 moves draw rule being ignored somewhere.

Indeed, this is possible as positions and there eval are stored in the TT,
without reference to the 50mr counter. Depending on the search path followed
a position can thus be mate or draw in the TT (GHI or Graph history interaction).
Therefore, to prove mate lines, the TT content has to be used with care. Rather
than ignoring TT content in general or for mate scores (which impact search or
mate finding), it is possible to be more selective. In particular, @WOnder93
suggested to only ignore the TT if the 50mr draw ply is closer than the mate
ply. This patch implements this idea, by clamping the eval in the TT to
+-VALUE_MATED_IN_MAX_PLY. This retains the TTmove, but causes a research of
these lines (with the current 50mr counter) as needed.

This patch hardly ever affects search (as indicated by the unchanged
bench), but fixes the testcase. As the conditions are very specific,
also mate finding will almost never be less efficient (testing welcome).

It was also shown to pass STC and LTC non-regression testing, in a form
using if/then/else instead of ternary operators:

STC:
LLR: 2.96 (-2.94,2.94) [-3.00,1.00]
Total: 93605 W: 15346 L: 15340 D: 62919
http://tests.stockfishchess.org/tests/view/5db45bb00ebc5908127538d4

LTC:
LLR: 2.96 (-2.94,2.94) [-3.00,1.00]
Total: 33873 W: 7359 L: 7261 D: 19253
http://tests.stockfishchess.org/tests/view/5db4c8940ebc5902d6b146fc

closes https://github.com/official-stockfish/Stockfish/issues/2370

Bench: 4362323

6 years agoSet default variant based on protocol
Fabian Fichter [Mon, 11 Nov 2019 20:01:17 +0000]
Set default variant based on protocol

Improve compatibility with shogi and xiangqi GUIs
by setting suitable defaults for UCI_Variant:
UCI: chess
USI: shogi
UCCI: xiangqi
xboard: chess

6 years agoUpdate list of supported protocols in readme
Fabian Fichter [Mon, 11 Nov 2019 15:44:51 +0000]
Update list of supported protocols in readme

6 years agoFurther increase king danger for xiangqi
Fabian Fichter [Sun, 10 Nov 2019 22:03:11 +0000]
Further increase king danger for xiangqi

xiangqi
LLR: 2.97 (-2.94,2.94) [0.00,10.00]
Total: 564 W: 199 L: 121 D: 244

6 years agoFix king ring for non-standard board sizes
Fabian Fichter [Sun, 10 Nov 2019 21:51:26 +0000]
Fix king ring for non-standard board sizes

Adjust king danger for shogi variants to compensate for effect of fix.

6 years agoFix attackers calculation for xiangqi generals
Fabian Fichter [Sun, 10 Nov 2019 16:07:43 +0000]
Fix attackers calculation for xiangqi generals

xiangqi
LLR: 1.77 (-2.94,2.94) [0.00,10.00]
Total: 1000 W: 330 L: 274 D: 396

6 years agoMitigate perpetual check blindness
Fabian Fichter [Sun, 10 Nov 2019 16:05:07 +0000]
Mitigate perpetual check blindness

Improve handling of problematic positions in #49.

6 years agoIncrease king danger for xiangqi generals
Fabian Fichter [Sun, 10 Nov 2019 14:19:29 +0000]
Increase king danger for xiangqi generals

xiangqi
LLR: 2.95 (-2.94,2.94) [0.00,10.00]
Total: 648 W: 249 L: 166 D: 233

6 years agoCalculate pins by cannons
Fabian Fichter [Sun, 10 Nov 2019 13:00:24 +0000]
Calculate pins by cannons

xiangqi
LLR: 3.01 (-2.94,2.94) [0.00,10.00]
Total: 868 W: 303 L: 218 D: 347

6 years agoTweak endgame scale factor for xiangqi
Fabian Fichter [Sat, 9 Nov 2019 23:38:51 +0000]
Tweak endgame scale factor for xiangqi

xiangqi
LLR: 3.00 (-2.94,2.94) [0.00,10.00]
Total: 1232 W: 413 L: 324 D: 495

6 years agoImprove CI coverage
Fabian Fichter [Sat, 9 Nov 2019 15:19:47 +0000]
Improve CI coverage

6 years agoSupport UCCI protocol
Fabian Fichter [Sat, 9 Nov 2019 14:54:04 +0000]
Support UCCI protocol

http://www.xqbase.com/protocol/cchess_ucci.htm

Closes #46.

6 years agoSearch checking captures early in drop variants
Fabian Fichter [Fri, 8 Nov 2019 15:29:36 +0000]
Search checking captures early in drop variants

crazyhouse STC (yellow)
LLR: -2.96 (-2.94,2.94) [0.00,10.00]
Total: 19119 W: 9373 L: 9198 D: 548
http://www.variantfishtest.org:6543/tests/view/5d93b6486e23db3768ec0881

crazyhouse LTC
LLR: 2.97 (-2.94,2.94) [0.00,10.00]
Total: 5822 W: 2894 L: 2711 D: 217
http://www.variantfishtest.org:6543/tests/view/5d94cc056e23db3768ec0892

crazyhouse VLTC
LLR: 2.95 (-2.94,2.94) [0.00,10.00]
Total: 10293 W: 5048 L: 4802 D: 443
http://www.variantfishtest.org:6543/tests/view/5d97772d6e23db3768ec0898

6 years agoSupport xiangqi and minixiangqi
Fabian Fichter [Thu, 7 Nov 2019 22:00:25 +0000]
Support xiangqi and minixiangqi

New features:
- Piece types soldier, horse, and elephant
- Restriction of piece mobility
- Flying general rule
- Piece synonyms

Closes #31.

bench: 4448277

6 years agoRevert "Rook PSQT Tuned"
Stéphane Nicolet [Wed, 6 Nov 2019 10:06:53 +0000]
Revert "Rook PSQT Tuned"

This reverts the previous commit. The PSQT changes in this previous
commit originated from tests against quite an old version of master
which did not include the other PSQT changes of 474d133 for the other
pieces, and there might be some unknown interactions between the PSQT
tables. So we made a non-regression test of the last commit against the
last-but-one commit. This test failed, leading to the revert decision.

Failed non-regression test:
LLR: -2.96 (-2.94,2.94) [-3.00,1.00]
Total: 95536 W: 15047 L: 15347 D: 65142
http://tests.stockfishchess.org/tests/view/5dc0ba1d0ebc5904493b0112

Closes https://github.com/official-stockfish/Stockfish/pull/2395

Bench: 4362323

6 years agoRook PSQT Tuned
SFisGOD [Mon, 4 Nov 2019 19:06:41 +0000]
Rook PSQT Tuned

This patch uses about half the changes of the SPSA tuning run:
http://tests.stockfishchess.org/tests/view/5dba93d30ebc5925b64ed3bf

About a month ago, xoto10's patch raised the mg value of the third rank
center files from -1 to 7 to encourage rook lifts to the third rank. About
three days later, Rocky's patch lowered this value from 7 to 3. This patch
raises that again from 3 to 12 and ends up greater than the original rook
lift patch.

Passed STC:
LLR: 2.95 (-2.94,2.94) [-1.50,4.50]
Total: 104094 W: 22573 L: 22161 D: 59360
http://tests.stockfishchess.org/tests/view/5dbc77f20ebc5925b64ef1d0

Passed LTC:
LLR: 2.96 (-2.94,2.94) [0.00,3.50]
Total: 168291 W: 27410 L: 26777 D: 114104
http://tests.stockfishchess.org/tests/view/5dbd9f1e0ebc5925b64f0647

Bench: 4707799

6 years agoRemove shuffle extension
MichaelB7 [Sun, 3 Nov 2019 00:04:05 +0000]
Remove shuffle extension

It was noted in an earlier patch that all of the positions below needed the
Shuffle Detection idea to be solved:

3r4/p3r1pk/PpBb1pRp/1KpPpP1P/2P1P1R1/8/8/8 b - - 32 86
8/8/8/1k6/2p5/p1K5/N2B2r1/8 b - - 59 109
1r4k1/1r1bq3/4p1p1/3pPpPp/pNpN1P1P/P1PnQ3/1PK5/1R3R2 b - - 13 82
5k2/3b4/5p2/p1p1pPp1/PpPpP1Pp/1P1P3P/8/3R1K2 w - - 20 1

But Stockfish has envolved a bit since the Shuffle Detection patch introduction,
and this patch proves Stockfish is able to solves these drawn positions without it,
even on single core without EGTB.

Passed STC
LLR: 2.96 (-2.94,2.94) [-3.00,1.00]
Total: 14231 W: 3114 L: 2978 D: 8139
http://tests.stockfishchess.org/tests/view/5dbe1a610ebc5925b64f09d9

Passed LTC
LLR: 2.95 (-2.94,2.94) [-3.00,1.00]
Total: 42781 W: 6917 L: 6831 D: 29033
http://tests.stockfishchess.org/tests/view/5dbe24c20ebc5925b64f0a7a

Passed VLTC
LLR: 2.95 (-2.94,2.94) [-3.00,1.00]
Total: 32556 W: 4573 L: 4469 D: 23514
http://tests.stockfishchess.org/tests/view/5dbec3830ebc5925b64f11aa

Closes https://github.com/official-stockfish/Stockfish/pull/2394

Bench: 4362323

----------------------------

Example of search by Michael Byrne for the FEN position:
q1B5/1P1q4/8/8/8/6R1/8/1K1k4 w - - 0 1

This position is win for white and the only moves that wins is Rg1 - all other moves
either draw or lose. With single core and 1024M hash, it is solved without shuffle
detection in 38 seconds on my machine (with no EGTB). This was the position that was
locked in a loop in the initial shuffle detection patch!

```
dep score nodes time (not shown:  tbhits knps seldep)
 50 +1.71  298.9M 2:43.63 Rg1+ Kd2 Rg2+ Kc3 Rc2+ Kb3 Rb2+ Kc3 Bxd7 Qf8 Ba4 Qb8 Bd1 Kd4 Rb5 Kc4 Be2+ Kc3 Rb6 Kd4 Bf3 Ke5 Kb2 Kf4 Bd1 Qe5+ Kb1 Qe4+ Ka2 Qd5+ Rb3 Qd2+ Ka3 Qc1+ Kb4 Qc7 Ka4 Qb8 Rb6 Ke5 Kb3 Qg8+ Kb4 Qf8+ Ka5 Qb8 Bb3 Kd4 Kb4 Qf8+ Ka4 Qb8 Ka5 K
<snip>
 49 +1.68  288.5M 2:38.35 Rg1+ Kd2 Rg2+ Kc3 Rc2+ Kb3 Rb2+ Kc3 Bxd7 Qf8 Ba4 Qb8 Bd1 Kd4 Rb5 Kc4 Be2+ Kc3 Rb6 Kd4 Bf3 Ke5 Kb2 Kf4 Bd1 Qe5+ Kb1 Qe4+ Ka2 Qd5+ Rb3 Qd2+ Ka3 Qc1+ Kb4 Qc7 Ka4 Qb8 Rb6 Ke5 Kb3 Qg8+ Kb4 Qf8+ Ka5 Qb8 Bb3 Kd4 Kb4 Ke3 Be6 Ke4 Bc4 Ke
<snip>
 48 +1.78  228.5M 2:01.93 Rg1+ Kd2 Rg2+ Kc3 Rc2+ Kb3 Rb2+ Kc3 Bxd7 Qf8 Ba4 Qb8 Bd1 Kd4 Rb5 Kc4 Be2+ Kc3 Rb6 Kd4 Bf3 Ke5 Kb2 Kf4 Bd1 Qe5+ Kb1 Qe4+ Ka2 Qd5+ Rb3 Qd2+ Ka3 Qa5+ Kb2 Qe5+ Ka2 Qb8 Rb5 Ke3 Kb1 Ke4 Bb3 Kf4 Be6 Ke3 Rb4 Kd3 Kb2 Ke3 Bd5 Qe5+ Kc2 Qh
<snip>
 46 +1.49  198.4M 1:44.89 Rg1+ Kd2 Rg2+ Kc3 Rc2+ Kb3 Rb2+ Kc3 Bxd7 Qf8 Ba4 Qb8 Bd1 Kd4 Rb5 Kc4 Be2+ Kc3 Rb6 Kd4 Bf3 Ke5 Kb2 Kf4 Bd1 Qe5+ Kb1 Qe4+ Ka2 Qd5+ Rb3 Qd2+ Ka3 Qc1+ Kb4 Qc7 Ka4 Qb8 Rb6 Qe8+ Rb5 Qb8 Bc2 Qa7+ Kb3 Qe3+ Kc4 Qe6+ Kb4 Qd6+ Kb3 Qb8 Rb4
<snip>
 45 +1.45  154.5M 1:20.75 Rg1+ Kd2 Rg2+ Kc3 Rc2+ Kb3 Rb2+ Kc3 Bxd7 Qf8 Ba4 Qb8 Bd1 Kd4 Rb5 Kc4 Be2+ Kc3 Rb6 Kd4 Bf3 Ke3 Bg2 Kd4 Rb5 Kc4 Bf1+ Kd4 Kb2 Qh2+ Kb3 Qg3+ Ka4 Qb8 Be2 Ke3 Bc4 Kf4 Kb4 Qd6+ Kc3 Qb8 Kc2 Ke4 Be6 Qh2+ Kb3 Qg3+ Ka4 Qb8 Bb3 Kd4 Bd5 Ke3
<snip>
 44 +1.36  141.9M 1:14.40 Rg1+ Kd2 Rg2+ Kc3 Rc2+ Kb3 Rb2+ Kc3 Bxd7 Qf8 Ba4 Qb8 Bd1 Qd6 Rc2+ Kd3 Be2+ Ke3 Rb2 Qb8 Bd1 Ke4 Rb5 Kd4 Bf3 Kc4 Be2+ Kc3 Rb6 Kd2 Bc4 Kc3 Bd5 Kd4 Bg2 Ke5 Kb2 Kd4 Rb5 Kc4 Bf1+ Kd4 Be2 Ke4 Bc4 Qh2+ Kb3 Qg3+ Ka4 Qb8 Bd5+ Kd4 Be6 Ke4
<snip>
 43 +1.36  134.1M 1:10.46 Rg1+ Kd2 Rg2+ Kc3 Rc2+ Kb3 Rb2+ Kc3 Bxd7 Qf8 Ba4 Qb8 Bd1 Qd6 Rc2+ Kd3 Be2+ Ke3 Rb2 Qb8 Bd1 Ke4 Rb5 Kd4 Bf3 Kc4 Be2+ Kc3 Rb6 Kd2 Bc4 Kc3 Be6 Kd4 Rb5 Kc3 Bf7 Kd4 Kb2 Ke4 Kb3 Kf4 Kc3 Ke4 Kb2 Qh2+ Kb3 Qg3+ Ka4 Qb8 Rb4+ Ke5 Rb6 Kf4
<snip>
 42 +1.36  118.7M 1:01.60 Rg1+ Kd2 Rg2+ Kc3 Rc2+ Kb3 Rb2+ Kc3 Bxd7 Qf8 Ba4 Qb8 Bd1 Qd6 Rc2+ Kd3 Be2+ Ke3 Rb2 Qb8 Bd1 Ke4 Rb5 Kd4 Bf3 Kc4 Be2+ Kc3 Rb6 Kd2 Bc4 Kc3 Be6 Kd4 Rb5 Kc3 Bf7 Kd4 Kb2 Ke4 Bc4 Qh2+ Kb3 Qg3+ Ka4 Qb8 Bd5+ Kd4 Bb3 Qa7+ Kb4 Qb8 Bc4 Ke4
<snip>
 41 +1.38  110.3M 0:56.80 Rg1+ Kd2 Rg2+ Kc3 Rc2+ Kb3 Rb2+ Kc3 Bxd7 Qf8 Ba4 Qb8 Bd1 Qd6 Rc2+ Kd3 Be2+ Ke3 Rb2 Qb8 Bd1 Ke4 Rb5 Kd4 Bf3 Kc4 Be2+ Kc3 Rb6 Kd2 Bc4 Kc3 Be6 Kd4 Rb5 Kc3 Bd5 Kd4 Ba2 Ke4 Be6 Kd4 Kb2 Qh2+ Kb3 Qb8 Bc4 Ke3 Kc3 Qh8+ Kb4 Qb2+ Ka4 Qa1+
 <snip>
 39 +1.25  87.3M   0:44.48 Rg1+ Kd2 Rg2+ Kc3 Rc2+ Kb3 Rb2+ Kc3 Bxd7 Qf8 Ba4 Qb8 Bd1 Kd4 Rb5 Kc4 Be2+ Kc3 Rb6 Kd4 Bf3 Ke5 Kb2 Kf4 Bd1 Kg5 Kb1 Kf5 Bb3 Ke5 Kb2 Kd4 Rb5 Qh2+ Bc2 Qb8 Bd1 Kc4 Be2+ Kd4 Kc2 Ke3 Bd1 Kd4 Kb3 Qg3+ Ka4 Qb8 Bb3 Kc3 Rb6 Kd4 Kb5 Ke5 K
 38 +1.25  82.0M   0:41.90 Rg1+ Kd2 Rg2+ Kc3 Rc2+ Kb3 Rb2+ Kc3 Bxd7 Qf8 Ba4 Qb8 Bd1 Kd4 Rb5 Kc4 Be2+ Kc3 Rb6 Kd4 Bf3 Ke5 Kb2 Kf4 Bd1 Kg5 Kb1 Kf5 Bb3 Ke5 Kb2 Kd4 Rb5 Qh2+ Bc2 Qb8 Kb3 Qg3+ Ka4 Qb8 Bb3 Kc3 Rb6 Kd4 Kb5 Ke5 Kb4 Kd4 Be6 Kd3 Bd5 Kd4 Bf3 Ke5 Be
<snip>
 37 +0.13  79.3M   0:40.44 Rg1+ Kd2 Rg2+ Kc3 Rc2+ Kb3 Rb2+ Kc3 Bxd7 Qf8 Ba4 Qb8 Bd1 Kc4 Bf3 Kd4 Rb5 Kc4 Rb6 Kd4 Rb2 Ke5 Rb3 Kd6 Rb5 Ke6 Rb4 Kd6 Kc2 Kc5 Kb3 Kd6 Be4 Ke7 Kc3 Qc7+ Kd3 Qg3+ Kc2 Qf2+ Kb3 Qe3+ Ka2 Qa7+ Kb2 Qb8 Kb3 Kd6 Bf3 Qg8+ Ka3 Kc7 b8=R Qx
 37 +0.67! 78.3M   0:39.90 Rg1+!
 37 +0.47! 77.0M   0:39.18 Rg1+!
 37 +0.32! 76.8M   0:39.11 Rg1+!
 37 +0.23! 76.8M   0:39.07 Rg1+!
 36 +0.57! 76.1M   0:38.72 Rg1+!
 36 +0.37! 75.8M   0:38.59 Rg1+!
 36 +0.23! 75.7M   0:38.51 Rg1+!
 36 +0.13! 75.6M   0:38.49 Rg1+!
 35 +0.03? 58.0M   0:29.84 bxa8=Q Qb5+?
```

6 years agoMake Square and Bitboard operators commutative
31m059 [Fri, 1 Nov 2019 04:27:19 +0000]
Make Square and Bitboard operators commutative

As Stockfish developers, we aim to make our code as legible and as close
to simple English as possible. However, one of the more notable exceptions
to this rule concerns operations between Squares and Bitboards.

Prior to this pull request, AND, OR, and XOR were only defined when the
Bitboard was the first operand, and the Square the second. For example,
for a Bitboard b and Square s, "b & s" would be valid but "s & b" would not.
This conflicts with natural reasoning about logical operators, both
mathematically and intuitively, which says that logical operators should
commute.

More dangerously, however, both Square and Bitboard are defined as integers
"under the hood." As a result, code like "s & b" would still compile and give
reasonable bench values. This trap occasionally ensnares even experienced
Stockfish developers, but it is especially dangerous for new developers not
aware of this peculiarity. Because there is no compilation or runtime error,
and a reasonable bench, only a close review by approvers can spot this error
when a test has been submitted--and many times, these bugs have slipped past
review. This is by far the most common logical error on Fishtest, and has
wasted uncountable STC games over the years.

However, it can be fixed by adding three non-functional lines of code. In this
patch, we define the operators when the operands are provided in the opposite
order, i.e., we make AND, OR, and XOR commutative for Bitboards and Squares.
Because these are inline methods and implemented identically, the executable
does not change at all.

This patch has the small side-effect of requiring Squares to be explicitly
cast to integers before AND, OR, or XOR with integers. This is only performed
twice in Stockfish's source code, and again does not change the executable at
all (since Square is an enum defined as an integer anyway).

For demonstration purposes, this pull request also inverts the order of one AND
and one OR, to show that neither the bench nor the executable change. (This
change can be removed before merging, if preferred.)

I hope that this pull request significantly lowers the barrier-of-entry for new
developer to join the Stockfish project. I also hope that this change will improve
our efficiency in using our generous CPU donors' machines, since it will remove
one of the most common causes of buggy tests.

Following helpful review and comments by Michael Stembera (@mstembera), we add
a further clean-up by implementing OR for two Squares, to anticipate additional
traps developers may encounter and handle them cleanly.

Closes https://github.com/official-stockfish/Stockfish/pull/2387

No functional change.

6 years agoEnsure that GUI sends time command in CECP
Fabian Fichter [Mon, 4 Nov 2019 18:02:27 +0000]
Ensure that GUI sends time command in CECP

6 years agoFix mate score for XBoard protocol (#44)
Fabian Fichter [Sun, 3 Nov 2019 18:05:47 +0000]
Fix mate score for XBoard protocol (#44)

6 years agoReplace hard-coded variant name
Fabian Fichter [Sun, 3 Nov 2019 17:53:44 +0000]
Replace hard-coded variant name

No functional change.

6 years agoFix mate score for XBoard protocol (#44)
Fabian Fichter [Sun, 3 Nov 2019 17:46:15 +0000]
Fix mate score for XBoard protocol (#44)

6 years agoSupport XBoard protocol (close #37)
Fabian Fichter [Fri, 1 Nov 2019 20:36:31 +0000]
Support XBoard protocol (close #37)

6 years agoFix quiet check move generation
Fabian Fichter [Sun, 3 Nov 2019 08:57:12 +0000]
Fix quiet check move generation

Do not generate quiet checks outside of board in quiescence search.

Closes #45.

6 years agoCombo of Parameter Tweaks
SFisGOD [Fri, 1 Nov 2019 05:58:11 +0000]
Combo of Parameter Tweaks

This patch is a combo of the following tweaks:

Complexity parameters
Knight PSQT
Bishop PSQT
King PSQT
Piece Values

Passed STC:
LLR: 2.95 (-2.94,2.94) [-1.50,4.50]
Total: 56527 W: 12326 L: 12052 D: 32149
http://tests.stockfishchess.org/tests/view/5dbbca3f0ebc5925b64ee6d6

Passed LTC:
LLR: 2.95 (-2.94,2.94) [0.00,3.50]
Total: 64010 W: 10549 L: 10199 D: 43262
http://tests.stockfishchess.org/tests/view/5dbc30dc0ebc5925b64eee0c

Closes https://github.com/official-stockfish/Stockfish/pull/2390

Bench: 4312945