]> git.sesse.net Git - stockfish/commitdiff
Determine opposite colors mathematically
authorprotonspring <mike@whiteley.org>
Mon, 23 Dec 2019 17:58:30 +0000 (10:58 -0700)
committerStéphane Nicolet <cassio@free.fr>
Thu, 23 Jan 2020 16:59:03 +0000 (17:59 +0100)
This is a non-functional speed-up: master has to access SquareBB twice while this patch
determines opposite_colors just using the values of the squares. It doesn't seem to change
the overall speed of bench, but calling opposite_colors(...) 10 Million times:

master: 39.4 seconds
patch: 11.4 seconds.

The only data point I have (other than my own tests), is a quite old failed STC test:
LLR: -2.93 (-2.94,2.94) [-1.50,4.50]
Total: 24308 W: 5331 L: 5330 D: 13647
Ptnml(0-2): 315, 2577, 6326, 2623, 289
http://tests.stockfishchess.org/tests/view/5e010256c13ac2425c4a9a67

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

No functional change

src/bitboard.h

index 440de1ea1ee0be74befddbac703a15d91b900bbf..d11b7e732b66227515d83c54647daed57a5937c3 100644 (file)
@@ -129,8 +129,8 @@ constexpr bool more_than_one(Bitboard b) {
   return b & (b - 1);
 }
 
   return b & (b - 1);
 }
 
-inline bool opposite_colors(Square s1, Square s2) {
-  return bool(DarkSquares & s1) != bool(DarkSquares & s2);
+constexpr bool opposite_colors(Square s1, Square s2) {
+  return (s1 + rank_of(s1) + s2 + rank_of(s2)) & 1;
 }
 
 
 }