<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"  xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:access="http://www.bloglines.com/about/specs/fac-1.0">
  <access:restriction relationship="allow" />
  <channel>
    <title>Wikispaces : chessprogramming - items matching description</title>
    <link>https://chessprogramming.wikispaces.com/space/view</link>
    <description>Filtered items at Wikispaces : chessprogramming</description>
    
    <webMaster>help@wikispaces.com (Wikispaces)</webMaster>
    <generator>https://www.wikispaces.com/</generator>
    <ttl>60</ttl>
    <atom:link href="https://chessprogramming.wikispaces.com/space/xmlo?v=rss_2_0" rel="self" type="application/rss+xml" />
    <image>
      <title>Wikispaces : chessprogramming - items matching description</title>
      <url>https://www.wikispaces.com/i/l.png</url>
      <link>https://chessprogramming.wikispaces.com/space/view</link>
      <width>140</width>
      <height>48</height>
      <description>Wikispaces</description>
    </image>

    <item>
      <title>All Shortest Paths</title>
      <link>https://chessprogramming.wikispaces.com/All+Shortest+Paths</link>
      <dc:creator>GerdIsenberg</dc:creator>
      <guid isPermaLink="true">https://chessprogramming.wikispaces.com/All+Shortest+Paths</guid>
      <comments>https://chessprogramming.wikispaces.com/page/messages/All+Shortest+Paths</comments>
      <pubDate>Tue, 21 Jan 2014 21:59:47 GMT</pubDate>
      <description>&lt;!-- ws:start:WikiTextTocRule:23:&amp;lt;img id=&amp;quot;wikitext@@toc@@normal&amp;quot; class=&amp;quot;WikiMedia WikiMediaToc&amp;quot; title=&amp;quot;Table of Contents&amp;quot; src=&amp;quot;/site/embedthumbnail/toc/normal?w=225&amp;amp;h=100&amp;quot;/&amp;gt; --&gt;&lt;div id=&quot;toc&quot;&gt;&lt;h1 class=&quot;nopad&quot;&gt;Table of Contents&lt;/h1&gt;&lt;!-- ws:end:WikiTextTocRule:23 --&gt;&lt;!-- ws:start:WikiTextTocRule:24: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#The Algorithm&quot;&gt;The Algorithm&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:24 --&gt;&lt;!-- ws:start:WikiTextTocRule:25: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Optimization&quot;&gt;Optimization&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:25 --&gt;&lt;!-- ws:start:WikiTextTocRule:26: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#External Links&quot;&gt;External Links&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:26 --&gt;&lt;!-- ws:start:WikiTextTocRule:27: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#References&quot;&gt;References&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:27 --&gt;&lt;!-- ws:start:WikiTextTocRule:28: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#What links here?&quot;&gt;What links here?&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:28 --&gt;&lt;!-- ws:start:WikiTextTocRule:29: --&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:29 --&gt;&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Home&quot;&gt;Home&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Board%20Representation&quot;&gt;Board Representation&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Bitboards&quot;&gt;Bitboards&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/King%20Pattern&quot;&gt;King Pattern&lt;/a&gt; * All shortest Paths&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
The &lt;strong&gt;All shortest Paths&lt;/strong&gt; algorithm was introduced by &lt;a class=&quot;wiki_link&quot; href=&quot;/Steffan%20Westcott&quot;&gt;Steffan Westcott&lt;/a&gt; &lt;!-- ws:start:WikiTextRefRule:6:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.stmintz.com/ccc/index.php?id=252020&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;All shortest paths &amp;amp;amp; other flood-fill based algorithms&amp;lt;/a&amp;gt; by &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Steffan%20Westcott&amp;quot;&amp;gt;Steffan Westcott&amp;lt;/a&amp;gt;, &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/CCC&amp;quot;&amp;gt;CCC&amp;lt;/a&amp;gt;, September 13, 2002&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-1&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:6 --&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:13:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc0&quot;&gt;&lt;a name=&quot;The Algorithm&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:13 --&gt;The Algorithm&lt;/h1&gt;
The following routine determines if a path of set bits in &#039;path&#039; 8-way connect (ie. king move) any set bit in sq1 with any set bit in sq2 (this is the same as Squares Are Connected). Also, it will return an &lt;a class=&quot;wiki_link&quot; href=&quot;/Array&quot;&gt;array&lt;/a&gt; of bitboards showing all possible shortest paths - This is probably best explained by showing an example:&lt;br /&gt;
&lt;br /&gt;
Setting sq1 to contain e4, sq2 to have both a1 and h8, and mask to be ~0 yields this all shortest paths array of bitboards:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:0:
&amp;lt;pre class=&amp;quot;text&amp;quot;&amp;gt;. . . . . . . .   . . . . . . . .     . . . . . . . .   . . . . . . . .   . . . . . . . 1&amp;lt;br/&amp;gt;. . . . . . . .   . . . . . . . .     . . . . . . . .   . . . . . . 1 1   . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .   . . . . . . . .     . . . . . 1 1 .   . . . . . . . .   . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .   . . . . 1 1 . .     . . . . . . . .   . . . . . . . .   . . . . . . . .&amp;lt;br/&amp;gt;. . . . 1 . . .   . . . 1 . . . .     . . . . . . . .   . . . . . . . .   . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .   . . . 1 . . . .     . . 1 . . . . .   . . . . . . . .   . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .   . . . . . . . .     . . 1 . . . . .   . 1 . . . . . .   . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .   . . . . . . . .     . . . . . . . .   . 1 . . . . . .   1 . . . . . . .&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.text  {font-family:monospace;}
.text .imp {font-weight: bold; color: red;}
.text span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;text&quot;&gt;. . . . . . . .   . . . . . . . .     . . . . . . . .   . . . . . . . .   . . . . . . . 1
. . . . . . . .   . . . . . . . .     . . . . . . . .   . . . . . . 1 1   . . . . . . . .
. . . . . . . .   . . . . . . . .     . . . . . 1 1 .   . . . . . . . .   . . . . . . . .
. . . . . . . .   . . . . 1 1 . .     . . . . . . . .   . . . . . . . .   . . . . . . . .
. . . . 1 . . .   . . . 1 . . . .     . . . . . . . .   . . . . . . . .   . . . . . . . .
. . . . . . . .   . . . 1 . . . .     . . 1 . . . . .   . . . . . . . .   . . . . . . . .
. . . . . . . .   . . . . . . . .     . . 1 . . . . .   . 1 . . . . . .   . . . . . . . .
. . . . . . . .   . . . . . . . .     . . . . . . . .   . 1 . . . . . .   1 . . . . . . .&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:0 --&gt;The king needs 4 moves to reach either a1 or h8, so both possibilities are shown in the last bitboard. Also, the king has a choice of squares along the way, meaning there are many shortest paths.&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:1:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;/////////////////////////////////////////////////////////////////////////&amp;lt;br/&amp;gt;//&amp;lt;br/&amp;gt;// Returns length of shortest path of set bits present in &#039;path&#039; that&amp;lt;br/&amp;gt;// 8-way connect any set bit in sq1 to any set bit of sq2. 0 is returned&amp;lt;br/&amp;gt;// if no such path exists. Also fills a sequence of bitboards asp[length]&amp;lt;br/&amp;gt;// that describes all such shortest paths.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int allShortestPaths(U64 sq1, U64 sq2, U64 path, U64* asp)&amp;lt;br/&amp;gt;{&amp;lt;br/&amp;gt;    // Do an 8-way flood fill with sq1, masking off bits not in path and&amp;lt;br/&amp;gt;    // storing the fill frontier at every step. Stop when fill reaches&amp;lt;br/&amp;gt;    // any set bit in sq2 or quit if fill cannot progress any further.&amp;lt;br/&amp;gt;    // Then do 8-way flood fill from reached bits in sq2, ANDing the&amp;lt;br/&amp;gt;    // frontiers with those from the first fill in reverse order.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    if (!(sq1 &amp;amp;amp;= path) || !(sq2 &amp;amp;amp;= path)) return 0;&amp;lt;br/&amp;gt;                        // Drop bits not in path&amp;lt;br/&amp;gt;                        // Early exit if sq1 or sq2 not on any path&amp;lt;br/&amp;gt;    int i = 1;&amp;lt;br/&amp;gt;    asp[0] = sq1;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    while(1)  // Fill from all set bits in sq1, to any set bit in sq2&amp;lt;br/&amp;gt;    {&amp;lt;br/&amp;gt;        if (sq1 &amp;amp;amp; sq2) break;                     // Found good path&amp;lt;br/&amp;gt;        U64 temp = sq1;&amp;lt;br/&amp;gt;        sq1 |= eastOne(sq1) | westOne(sq1);       // Set all 8 neighbours&amp;lt;br/&amp;gt;        sq1 |= soutOne(sq1) | nortOne(sq1);&amp;lt;br/&amp;gt;        sq1 &amp;amp;amp;= path;                              // Drop bits not in path&amp;lt;br/&amp;gt;        if (sq1 == temp) return 0;                // Fill has stopped&amp;lt;br/&amp;gt;        asp[i++] = sq1 &amp;amp;amp; ~temp;                   // Store fill frontier&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    int length = i;                               // Remember path length&amp;lt;br/&amp;gt;    asp[&amp;amp;#45;-i] = (sq2 &amp;amp;amp;= sq1);                      // Drop unreached bits&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;    while(i)  // Fill from reached bits in sq2&amp;lt;br/&amp;gt;    {&amp;lt;br/&amp;gt;        U64 temp = sq2;&amp;lt;br/&amp;gt;        sq2 |= eastOne(sq2) | westOne(sq2);       // Set all 8 neighbours&amp;lt;br/&amp;gt;        sq2 |= soutOne(sq2) | nortOne(sq2);&amp;lt;br/&amp;gt;        sq2 &amp;amp;amp;= path;                              // Drop bits not in path&amp;lt;br/&amp;gt;        asp[&amp;amp;#45;-i] &amp;amp;amp;= sq2 &amp;amp;amp; ~temp;                  // Intersect frontiers&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;    return length;&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;co1&quot;&gt;/////////////////////////////////////////////////////////////////////////&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// Returns length of shortest path of set bits present in &#039;path&#039; that&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// 8-way connect any set bit in sq1 to any set bit of sq2. 0 is returned&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// if no such path exists. Also fills a sequence of bitboards asp[length]&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// that describes all such shortest paths.&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; allShortestPaths&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 sq1, U64 sq2, U64 path, U64&lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; asp&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;// Do an 8-way flood fill with sq1, masking off bits not in path and&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;// storing the fill frontier at every step. Stop when fill reaches&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;// any set bit in sq2 or quit if fill cannot progress any further.&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;// Then do 8-way flood fill from reached bits in sq2, ANDing the&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;// frontiers with those from the first fill in reverse order.&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq1 &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; path&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq2 &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; path&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
                        &lt;span class=&quot;co1&quot;&gt;// Drop bits not in path&lt;/span&gt;
                        &lt;span class=&quot;co1&quot;&gt;// Early exit if sq1 or sq2 not on any path&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    asp&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; sq1&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;// Fill from all set bits in sq1, to any set bit in sq2&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq1 &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; sq2&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;                     &lt;span class=&quot;co1&quot;&gt;// Found good path&lt;/span&gt;
        U64 temp &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; sq1&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        sq1 &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; eastOne&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; westOne&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;       &lt;span class=&quot;co1&quot;&gt;// Set all 8 neighbours&lt;/span&gt;
        sq1 &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; soutOne&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; nortOne&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        sq1 &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; path&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;                              &lt;span class=&quot;co1&quot;&gt;// Drop bits not in path&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq1 &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; temp&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;                &lt;span class=&quot;co1&quot;&gt;// Fill has stopped&lt;/span&gt;
        asp&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; sq1 &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; ~temp&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;                   &lt;span class=&quot;co1&quot;&gt;// Store fill frontier&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; length &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; i&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;                               &lt;span class=&quot;co1&quot;&gt;// Remember path length&lt;/span&gt;
    asp&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;--&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq2 &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; sq1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;                      &lt;span class=&quot;co1&quot;&gt;// Drop unreached bits&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;// Fill from reached bits in sq2&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        U64 temp &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; sq2&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        sq2 &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; eastOne&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq2&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; westOne&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq2&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;       &lt;span class=&quot;co1&quot;&gt;// Set all 8 neighbours&lt;/span&gt;
        sq2 &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; soutOne&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq2&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; nortOne&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq2&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        sq2 &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; path&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;                              &lt;span class=&quot;co1&quot;&gt;// Drop bits not in path&lt;/span&gt;
        asp&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;--&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; sq2 &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; ~temp&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;                  &lt;span class=&quot;co1&quot;&gt;// Intersect frontiers&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; length&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:1 --&gt;As a reminder - &lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#OneStepOnly&quot;&gt;one step only&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
So far we&#039;ve just mentioned 8-way flood filling for king/queen moves, and diagonal or rank/file 4-way filling for bishop or rook moves. A simple variant exists for knight moves too, which is handy for calculating knight mobility, and helping solve &amp;quot;Knight&#039;s Tour&amp;quot; type puzzles. Its even useful for pawns too, for quick determination of outposts outside all enemy pawn &amp;quot;attack cones&amp;quot;, for example.&lt;br /&gt;
&lt;br /&gt;
A fill iteration need not just go one square in each direction. With appropriate bitboard manipulation, it may extend the full ray of a sliding piece, for example. Examining the filled bitboard for 1 or 2 iterations will enable design of piece mobility terms with some simulated ply.&lt;br /&gt;
&lt;!-- ws:start:WikiTextAnchorRule:30:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@Optimization&amp;quot; title=&amp;quot;Anchor: Optimization&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;Optimization&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:30 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:15:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc1&quot;&gt;&lt;a name=&quot;Optimization&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:15 --&gt;Optimization&lt;/h1&gt;
&lt;a class=&quot;wiki_link&quot; href=&quot;/Edmund%20Moshammer&quot;&gt;Edmund Moshammer&lt;/a&gt; proposed following optimization with an inlined king fill routine &lt;!-- ws:start:WikiTextRefRule:8:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://chessprogramming.wikispaces.com/message/view/All+Shortest+Paths/11449287&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Discussion about this page&amp;lt;/a&amp;gt;&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-2&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:8 --&gt;:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:2:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;// Set all up to eight neighbours&amp;lt;br/&amp;gt;// inline&amp;lt;br/&amp;gt;U64 fillKing(U64 b) {&amp;lt;br/&amp;gt;    b |= eastOne(b) | westOne(b);   &amp;lt;br/&amp;gt;    b |= soutOne(b) | nortOne(b);&amp;lt;br/&amp;gt;    return b;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int allShortestPaths(U64 sq1, U64 sq2, U64 path, U64* asp) {&amp;lt;br/&amp;gt;    int i, length;&amp;lt;br/&amp;gt;    asp[0] = sq1;&amp;lt;br/&amp;gt;    for (i=0; !(asp[i] &amp;amp;amp; sq2); i++)&amp;lt;br/&amp;gt;        if (!(asp[i+1] = fillKing(asp[i]) &amp;amp;amp; path &amp;amp;amp;~asp[i])) return 0;&amp;lt;br/&amp;gt;    length = i;&amp;lt;br/&amp;gt;    asp[i] = sq2;&amp;lt;br/&amp;gt;    for (; i; i&amp;amp;#45;-) &amp;lt;br/&amp;gt;       asp[i-1] &amp;amp;amp;= fillKing(asp[i]) &amp;amp;amp; path;&amp;lt;br/&amp;gt;    return length;&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;co1&quot;&gt;// Set all up to eight neighbours&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// inline&lt;/span&gt;
U64 fillKing&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 b&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    b &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; eastOne&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; westOne&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;   
    b &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; soutOne&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; nortOne&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; b&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; allShortestPaths&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 sq1, U64 sq2, U64 path, U64&lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; asp&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; i, length&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    asp&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; sq1&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;i&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;asp&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; sq2&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;asp&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; fillKing&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;asp&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; path &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;~asp&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    length &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; i&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    asp&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; sq2&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;sy2&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; 
       asp&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; fillKing&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;asp&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; path&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; length&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:2 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:17:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc2&quot;&gt;&lt;a name=&quot;External Links&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:17 --&gt;External Links&lt;/h1&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/Pathfinding&quot; rel=&quot;nofollow&quot;&gt;Pathfinding from Wikipedia&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/Remember_Shakti&quot; rel=&quot;nofollow&quot;&gt;Remember Shakti&lt;/a&gt; &lt;!-- ws:start:WikiTextRefRule:10:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://en.wikipedia.org/wiki/Shakti_(band)&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Shakti from Wikipedia&amp;lt;/a&amp;gt;&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-3&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:10 --&gt;, Finding the way, part 1, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/YouTube&quot; rel=&quot;nofollow&quot;&gt;YouTube&lt;/a&gt; Video&lt;br /&gt;
&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/Zakir_Hussain_%28musician%29&quot; rel=&quot;nofollow&quot;&gt;Zakir Hussain&lt;/a&gt;, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/U._Srinivas&quot; rel=&quot;nofollow&quot;&gt;U. Srinivas&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Videos#JohnMcLaughlin&quot;&gt;John McLaughlin&lt;/a&gt;, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/V._Selvaganesh&quot; rel=&quot;nofollow&quot;&gt;V. Selvaganesh&lt;/a&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextMediaRule:11:&amp;lt;img src=&amp;quot;https://www.wikispaces.com/site/embedthumbnail/custom/24912862?h=0&amp;amp;w=0&amp;quot; class=&amp;quot;WikiMedia WikiMediaCustom&amp;quot; id=&amp;quot;wikitext@@media@@type=&amp;amp;quot;custom&amp;amp;quot; key=&amp;amp;quot;24912862&amp;amp;quot;&amp;quot; title=&amp;quot;Custom Media&amp;quot;/&amp;gt; --&gt;&lt;iframe width=&quot;480&quot; height=&quot;360&quot; src=&quot;//www.youtube.com/embed/G_YSNtJ-330?rel=0&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;!-- ws:end:WikiTextMediaRule:11 --&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:19:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc3&quot;&gt;&lt;a name=&quot;References&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:19 --&gt;References&lt;/h1&gt;
&lt;!-- ws:start:WikiTextReferencesRule:80:&amp;amp;lt;references /&amp;amp;gt; --&gt;&lt;ol class=&quot;references&quot;&gt;
&lt;li id=&quot;cite_note-1&quot;&gt;&lt;a href=&quot;#cite_ref-1&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=252020&quot; rel=&quot;nofollow&quot;&gt;All shortest paths &amp;amp; other flood-fill based algorithms&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Steffan%20Westcott&quot;&gt;Steffan Westcott&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, September 13, 2002&lt;/li&gt;
&lt;li id=&quot;cite_note-2&quot;&gt;&lt;a href=&quot;#cite_ref-2&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://chessprogramming.wikispaces.com/message/view/All+Shortest+Paths/11449287&quot; rel=&quot;nofollow&quot;&gt;Discussion about this page&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;cite_note-3&quot;&gt;&lt;a href=&quot;#cite_ref-3&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/Shakti_(band)&quot; rel=&quot;nofollow&quot;&gt;Shakti from Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;!-- ws:end:WikiTextReferencesRule:80 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:21:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc4&quot;&gt;&lt;a name=&quot;What links here?&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:21 --&gt;What links here?&lt;/h1&gt;
&lt;!-- ws:start:WikiTextIncludeRule:03:&amp;lt;img src=&amp;quot;https://www.wikispaces.com/site/embedthumbnail/include/backlinks?w=200&amp;amp;h=100&amp;quot; class=&amp;quot;WikiMedia WikiMediaInclude&amp;quot; id=&amp;quot;wikitext@@include@@page=&amp;amp;quot;All Shortest Paths&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;10&amp;amp;quot;&amp;quot; title=&amp;quot;Include backlinks: page=&amp;amp;quot;All Shortest Paths&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;10&amp;amp;quot;&amp;quot; /&amp;gt; --&gt;&lt;div class=&quot;includeBody-All_Shortest_Paths includeBody-All%20Shortest%20Paths includeBody&quot;&gt;&lt;table class=&quot;includeBacklinks&quot;&gt;
  &lt;thead&gt;
    &lt;tr class=&quot;includeBacklinksHeading&quot;&gt;
      &lt;th class=&quot;includeBacklinksPageHeading&quot;&gt;Page&lt;/th&gt;
      &lt;th class=&quot;includeBacklinksDateHeading&quot;&gt;Date Edited&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
    &lt;tbody&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Algorithms&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Algorithms&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;May 5, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/All+Shortest+Paths&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;All Shortest Paths&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 21, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Edmund+Moshammer&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Edmund Moshammer&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Sep 23, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Fill+Algorithms&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Fill Algorithms&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 6, 2013&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Helmut+Horacek&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Helmut Horacek&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Oct 31, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/King+Pattern&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;King Pattern&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 15, 2013&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Mobility&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Mobility&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 17, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/PawnKing&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;PawnKing&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Sep 5, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Steffan+Westcott&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Steffan Westcott&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 21, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Trajectory&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Trajectory&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 3, 2015&lt;/td&gt;
    &lt;/tr&gt;
      &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;&lt;!-- ws:end:WikiTextIncludeRule:03 --&gt;&lt;br /&gt;
&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/King%20Pattern&quot;&gt;Up one Level&lt;/a&gt;&lt;/strong&gt;</description>
          </item>
    <item>
      <title>Attack and Defend Maps</title>
      <link>https://chessprogramming.wikispaces.com/Attack+and+Defend+Maps</link>
      <dc:creator>GerdIsenberg</dc:creator>
      <guid isPermaLink="true">https://chessprogramming.wikispaces.com/Attack+and+Defend+Maps</guid>
      <comments>https://chessprogramming.wikispaces.com/page/messages/Attack+and+Defend+Maps</comments>
      <pubDate>Sat, 05 Nov 2016 09:18:44 GMT</pubDate>
      <description>&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Home&quot;&gt;Home&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Programming&quot;&gt;Programming&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Data&quot;&gt;Data&lt;/a&gt; * Attack and Defend Maps&lt;/strong&gt;&lt;br /&gt;


&lt;table class=&quot;wiki_table&quot;&gt;
    &lt;tr&gt;
        &lt;td&gt;&lt;!-- ws:start:WikiTextLocalImageRule:149:&amp;lt;a href=&amp;quot;http://www.puckergallery.com/artists/bak_chess/bak_chess_all.html&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;/file/view/ShelteringMyths.jpg/157857425/309x238/ShelteringMyths.jpg&amp;quot; alt=&amp;quot;&amp;quot; title=&amp;quot;&amp;quot; style=&amp;quot;height: 238px; width: 309px;&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt; --&gt;&lt;a href=&quot;http://www.puckergallery.com/artists/bak_chess/bak_chess_all.html&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;/file/view/ShelteringMyths.jpg/157857425/309x238/ShelteringMyths.jpg&quot; alt=&quot;ShelteringMyths.jpg&quot; title=&quot;ShelteringMyths.jpg&quot; style=&quot;height: 238px; width: 309px;&quot; /&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextLocalImageRule:149 --&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td rowspan=&quot;2&quot;&gt;&lt;strong&gt;Attack and Defend Maps&lt;/strong&gt;,&lt;br /&gt;
also called &lt;strong&gt;Attack Tables&lt;/strong&gt;, refer to data-structures, most often &lt;a class=&quot;wiki_link&quot; href=&quot;/Array&quot;&gt;arrays&lt;/a&gt;, containing attack or defend information for every pawn or piece and/or the transposed information for each square, which pieces &lt;a class=&quot;wiki_link&quot; href=&quot;/Square%20Control&quot;&gt;control&lt;/a&gt;, that is either attack or defend it. These Maps are useful for &lt;a class=&quot;wiki_link&quot; href=&quot;/Evaluation&quot;&gt;evaluation&lt;/a&gt; purposes such as safe &lt;a class=&quot;wiki_link&quot; href=&quot;/Mobility&quot;&gt;mobility&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Static%20Exchange%20Evaluation&quot;&gt;SEE&lt;/a&gt; and of course &lt;a class=&quot;wiki_link&quot; href=&quot;/Move%20Generation&quot;&gt;move generation&lt;/a&gt;. While the piece centric attack information, a set of attacked squares per piece, is often encoded as &lt;a class=&quot;wiki_link&quot; href=&quot;/Bitboards&quot;&gt;bitboard&lt;/a&gt;, there are more alternatives for storing the square centric information, about attacking pieces.&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Arts#Bak&quot;&gt;Samuel Bak&lt;/a&gt; - Sheltering Myths, 1998 &lt;!-- ws:start:WikiTextRefRule:5:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.puckergallery.com/artists/bak_chess/bak_chess_all.html&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;The Game of War&amp;lt;/a&amp;gt; from &amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.puckergallery.com/artists/bak_index/bak_publications.html&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Samuel Bak - represented by Pucker Gallery since 1969&amp;lt;/a&amp;gt;&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-1&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:5 --&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
    &lt;/tr&gt;
&lt;/table&gt;

&lt;!-- ws:start:WikiTextTocRule:71:&amp;lt;img id=&amp;quot;wikitext@@toc@@normal&amp;quot; class=&amp;quot;WikiMedia WikiMediaToc&amp;quot; title=&amp;quot;Table of Contents&amp;quot; src=&amp;quot;/site/embedthumbnail/toc/normal?w=225&amp;amp;h=100&amp;quot;/&amp;gt; --&gt;&lt;div id=&quot;toc&quot;&gt;&lt;h1 class=&quot;nopad&quot;&gt;Table of Contents&lt;/h1&gt;&lt;!-- ws:end:WikiTextTocRule:71 --&gt;&lt;!-- ws:start:WikiTextTocRule:72: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Maintaining Attacks&quot;&gt;Maintaining Attacks&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:72 --&gt;&lt;!-- ws:start:WikiTextTocRule:73: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Maintaining Attacks-Incremental Update&quot;&gt;Incremental Update&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:73 --&gt;&lt;!-- ws:start:WikiTextTocRule:74: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Maintaining Attacks-On the Fly&quot;&gt;On the Fly&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:74 --&gt;&lt;!-- ws:start:WikiTextTocRule:75: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Implementations&quot;&gt;Implementations&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:75 --&gt;&lt;!-- ws:start:WikiTextTocRule:76: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Implementations-Classical Approach&quot;&gt;Classical Approach&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:76 --&gt;&lt;!-- ws:start:WikiTextTocRule:77: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Implementations-Alternatives&quot;&gt;Alternatives&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:77 --&gt;&lt;!-- ws:start:WikiTextTocRule:78: --&gt;&lt;div style=&quot;margin-left: 3em;&quot;&gt;&lt;a href=&quot;#Implementations-Alternatives-Piece-Sets&quot;&gt;Piece-Sets&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:78 --&gt;&lt;!-- ws:start:WikiTextTocRule:79: --&gt;&lt;div style=&quot;margin-left: 3em;&quot;&gt;&lt;a href=&quot;#Implementations-Alternatives-Ed&#039;s lookup&quot;&gt;Ed&#039;s lookup&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:79 --&gt;&lt;!-- ws:start:WikiTextTocRule:80: --&gt;&lt;div style=&quot;margin-left: 3em;&quot;&gt;&lt;a href=&quot;#Implementations-Alternatives-Direction wise&quot;&gt;Direction wise&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:80 --&gt;&lt;!-- ws:start:WikiTextTocRule:81: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#See also&quot;&gt;See also&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:81 --&gt;&lt;!-- ws:start:WikiTextTocRule:82: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Forums Posts&quot;&gt;Forums Posts&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:82 --&gt;&lt;!-- ws:start:WikiTextTocRule:83: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Forums Posts-1995 ...&quot;&gt;1995 ...&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:83 --&gt;&lt;!-- ws:start:WikiTextTocRule:84: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Forums Posts-2000 ...&quot;&gt;2000 ...&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:84 --&gt;&lt;!-- ws:start:WikiTextTocRule:85: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Forums Posts-2005 ...&quot;&gt;2005 ...&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:85 --&gt;&lt;!-- ws:start:WikiTextTocRule:86: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Forums Posts-2010 ...&quot;&gt;2010 ...&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:86 --&gt;&lt;!-- ws:start:WikiTextTocRule:87: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#References&quot;&gt;References&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:87 --&gt;&lt;!-- ws:start:WikiTextTocRule:88: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#What links here?&quot;&gt;What links here?&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:88 --&gt;&lt;!-- ws:start:WikiTextTocRule:89: --&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:89 --&gt;&lt;!-- ws:start:WikiTextHeadingRule:37:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc0&quot;&gt;&lt;a name=&quot;Maintaining Attacks&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:37 --&gt;Maintaining Attacks&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextHeadingRule:39:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc1&quot;&gt;&lt;a name=&quot;Maintaining Attacks-Incremental Update&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:39 --&gt;Incremental Update&lt;/h2&gt;
 The piece centric and/or square centric information is often initialized at the &lt;a class=&quot;wiki_link&quot; href=&quot;/Root&quot;&gt;root&lt;/a&gt; and &lt;a class=&quot;wiki_link&quot; href=&quot;/Incremental%20Updates&quot;&gt;updated incrementally&lt;/a&gt; during the &lt;a class=&quot;wiki_link&quot; href=&quot;/Search&quot;&gt;search&lt;/a&gt; while &lt;a class=&quot;wiki_link&quot; href=&quot;/Make%20Move&quot;&gt;making&lt;/a&gt; and &lt;a class=&quot;wiki_link&quot; href=&quot;/Unmake%20Move&quot;&gt;unmaking&lt;/a&gt; &lt;a class=&quot;wiki_link&quot; href=&quot;/Moves&quot;&gt;moves&lt;/a&gt;. The idea is that a move has often only a local influence on the attack tables, and that it is usually cheaper to change only those squares which changed from- or to-attacks, rather than all squares from scratch. This is especially true during the &lt;a class=&quot;wiki_link&quot; href=&quot;/Opening&quot;&gt;opening&lt;/a&gt; or early &lt;a class=&quot;wiki_link&quot; href=&quot;/Middlegame&quot;&gt;middlegame&lt;/a&gt; phase, but does become more expensive in the late middlegame or &lt;a class=&quot;wiki_link&quot; href=&quot;/Endgame&quot;&gt;endings&lt;/a&gt; with sliding pieces, especially queens.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:41:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc2&quot;&gt;&lt;a name=&quot;Maintaining Attacks-On the Fly&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:41 --&gt;On the Fly&lt;/h2&gt;
 Programmers like &lt;a class=&quot;wiki_link&quot; href=&quot;/Jo%C3%ABl%20Rivat&quot;&gt;Joël Rivat&lt;/a&gt; &lt;!-- ws:start:WikiTextRefRule:9:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://groups.google.com/group/rec.games.chess.computer/browse_frm/thread/71f7b5ee3764f082&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Chess programming using bitboards&amp;lt;/a&amp;gt; by &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Jo%C3%ABl%20Rivat&amp;quot;&amp;gt;Joël Rivat&amp;lt;/a&amp;gt;, &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Computer%20Chess%20Forums&amp;quot;&amp;gt;rgcc&amp;lt;/a&amp;gt;, August 18, 1995&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-2&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:9 --&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Robert%20Hyatt&quot;&gt;Robert Hyatt&lt;/a&gt; &lt;!-- ws:start:WikiTextRefRule:15:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://groups.google.com/group/rec.games.chess.computer/browse_frm/thread/33c57503391f3a89&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Speed of Move Generator&amp;lt;/a&amp;gt; by &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Valavan%20Manohararajah&amp;quot;&amp;gt;Valavan Manohararajah&amp;lt;/a&amp;gt;, &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Computer%20Chess%20Forums&amp;quot;&amp;gt;rgcc&amp;lt;/a&amp;gt;, August 15, 1995, post 5 by &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Robert%20Hyatt&amp;quot;&amp;gt;Robert Hyatt&amp;lt;/a&amp;gt; where he mentions on the fly generation with &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Rotated%20Bitboards&amp;quot;&amp;gt;rotated bitboards&amp;lt;/a&amp;gt;&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-3&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:15 --&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Ed%20Schroder&quot;&gt;Ed Schröder&lt;/a&gt; and &lt;a class=&quot;wiki_link&quot; href=&quot;/Gerd%20Isenberg&quot;&gt;Gerd Isenberg&lt;/a&gt; avoid or have abandoned incrementally updated attack tables and rely on the paradigm to process information if needed. A lot of nodes don&#039;t need the attack information at all, or only a small part of it. With all the &lt;a class=&quot;wiki_link&quot; href=&quot;/Hash%20Table&quot;&gt;hash tables&lt;/a&gt;, incremental update tends to do some unnecessary work, considering the update costs in &amp;quot;worst case&amp;quot; positions, f.i. queen endings, where one move change the attack information of many squares.&lt;br /&gt;
&lt;br /&gt;
On the other hand, if attack tables are available, one should utilize the information as much as possible for a smarter search and evaluation to gain exponentially. Anyway, one has to be careful with too complicated data structures and update code.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:43:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc3&quot;&gt;&lt;a name=&quot;Implementations&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:43 --&gt;Implementations&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextHeadingRule:45:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc4&quot;&gt;&lt;a name=&quot;Implementations-Classical Approach&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:45 --&gt;Classical Approach&lt;/h2&gt;
 The square centric classical approach with bitboards was used in &lt;a class=&quot;wiki_link&quot; href=&quot;/Chess%20%28Program%29&quot;&gt;Chess 4.5&lt;/a&gt; and descibed by &lt;a class=&quot;wiki_link&quot; href=&quot;/Larry%20Atkin&quot;&gt;Larry Atkin&lt;/a&gt; and &lt;a class=&quot;wiki_link&quot; href=&quot;/David%20Slate&quot;&gt;David Slate&lt;/a&gt; &lt;!-- ws:start:WikiTextRefRule:27:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/David%20Slate&amp;quot;&amp;gt;David Slate&amp;lt;/a&amp;gt; and &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Larry%20Atkin&amp;quot;&amp;gt;Larry Atkin&amp;lt;/a&amp;gt; (&amp;lt;strong&amp;gt;1977&amp;lt;/strong&amp;gt;). &amp;lt;em&amp;gt;CHESS 4.5 - The Northwestern University Chess Program.&amp;lt;/em&amp;gt; &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Chess%20Skill%20in%20Man%20and%20Machine&amp;quot;&amp;gt;Chess Skill in Man and Machine&amp;lt;/a&amp;gt; (ed. &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Peter%20W.%20Frey&amp;quot;&amp;gt;Peter W. Frey&amp;lt;/a&amp;gt;), pp. 82-118. Springer-Verlag, New York, N.Y. 2nd ed. 1983. ISBN 0-387-90815-3. Reprinted (&amp;lt;strong&amp;gt;1988&amp;lt;/strong&amp;gt;) in &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Computer%20Chess%20Compendium&amp;quot;&amp;gt;Computer Chess Compendium&amp;lt;/a&amp;gt;&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-4&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:27 --&gt; . The incrementally updated attack tables, from which most move generation is done, are called &lt;em&gt;ATKFR&lt;/em&gt; and &lt;em&gt;ATKTO&lt;/em&gt;. &lt;em&gt;ATKFR&lt;/em&gt; is a set of 64 bitboards which give, for each square, all the squares attacked by the piece, if any, that resides on the square. &lt;em&gt;ATKTO&lt;/em&gt; (&lt;a class=&quot;wiki_link&quot; href=&quot;/Square%20Attacked%20By&quot;&gt;Square Attacked By&lt;/a&gt;) is the transpose of &lt;em&gt;ATKFR&lt;/em&gt;, giving for each square, the locations of all pieces that attack that square. For instance the square E4 (T) is attacked by a black rook at E8, a black knight at F6, and defended by a white rook at E1 and a white pawn at D3 &lt;!-- ws:start:WikiTextRefRule:30:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.craftychess.com/hyatt/bitmaps.html&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Rotated bitmaps, a new twist on an old idea&amp;lt;/a&amp;gt; by &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Robert%20Hyatt&amp;quot;&amp;gt;Robert Hyatt&amp;lt;/a&amp;gt;&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-5&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:30 --&gt; :&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:0:
&amp;lt;pre class=&amp;quot;text&amp;quot;&amp;gt;attacks_to[E4]&amp;lt;br/&amp;gt; . . . . 1 . . .&amp;lt;br/&amp;gt; . . . . . . . .&amp;lt;br/&amp;gt; . . . . . 1 . .&amp;lt;br/&amp;gt; . . . . . . . .&amp;lt;br/&amp;gt; . . . . T . . .&amp;lt;br/&amp;gt; . . . 1 . . . .&amp;lt;br/&amp;gt; . . . . . . . .&amp;lt;br/&amp;gt; . . . . 1 . . .&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.text  {font-family:monospace;}
.text .imp {font-weight: bold; color: red;}
.text span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;text&quot;&gt;attacks_to[E4]
 . . . . 1 . . .
 . . . . . . . .
 . . . . . 1 . .
 . . . . . . . .
 . . . . T . . .
 . . . 1 . . . .
 . . . . . . . .
 . . . . 1 . . .&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:0 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:47:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc5&quot;&gt;&lt;a name=&quot;Implementations-Alternatives&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:47 --&gt;Alternatives&lt;/h2&gt;
 There are several alternatives for keeping the square centric information what pieces attack each particular square.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:49:&amp;lt;h3&amp;gt; --&gt;&lt;h3 id=&quot;toc6&quot;&gt;&lt;a name=&quot;Implementations-Alternatives-Piece-Sets&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:49 --&gt;Piece-Sets&lt;/h3&gt;
 A &lt;a class=&quot;wiki_link&quot; href=&quot;/Square%20Attacked%20By&quot;&gt;Square Attacked By&lt;/a&gt; bitboard aka &lt;em&gt;ATKFR&lt;/em&gt; as possible union-set of multiple pawns and pieces of either side require intersections with piece bitboards, or &lt;a class=&quot;wiki_link&quot; href=&quot;/BitScan&quot;&gt;bitscanned&lt;/a&gt; square lookups, to determine which pieces and how many attack or defend.&lt;br /&gt;
&lt;br /&gt;
Based on a fixed piece-type and bit-position relation with usual material dispositions (for each side, no more than one queen, two rooks, one bishop per square color, two knights), 32-bit &lt;a class=&quot;wiki_link&quot; href=&quot;/Piece-Sets&quot;&gt;Piece-Sets&lt;/a&gt; already inherit the information which pieces (and how many of both sides) attack a particular square, one can even imagine a 16-bit lookup inside a 64KByte table to get an denser attack indicator/count byte for each color a lá &lt;a class=&quot;wiki_link&quot; href=&quot;/Attack%20and%20Defend%20Maps#EDsLookup&quot;&gt;Ed Schröder&lt;/a&gt;. &lt;a class=&quot;wiki_link&quot; href=&quot;/MS-DOS&quot;&gt;MS-DOS&lt;/a&gt; &lt;a class=&quot;wiki_link&quot; href=&quot;/IsiChess&quot;&gt;IsiChess&lt;/a&gt; maintained an &lt;a class=&quot;wiki_link&quot; href=&quot;/Array&quot;&gt;array&lt;/a&gt; of 64 32-bit piece-sets for every square, and an array of up to 32 attack-to bitboards for every piece. However working with piece-sets requires an additional indirection via a &lt;a class=&quot;wiki_link&quot; href=&quot;/Piece-lists&quot;&gt;Piece-list&lt;/a&gt; to get the square of that piece.&lt;br /&gt;
&lt;!-- ws:start:WikiTextAnchorRule:90:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@EDsLookup&amp;quot; title=&amp;quot;Anchor: EDsLookup&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;EDsLookup&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:90 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:51:&amp;lt;h3&amp;gt; --&gt;&lt;h3 id=&quot;toc7&quot;&gt;&lt;a name=&quot;Implementations-Alternatives-Ed&#039;s lookup&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:51 --&gt;Ed&#039;s lookup&lt;/h3&gt;
 As described by &lt;a class=&quot;wiki_link&quot; href=&quot;/Ed%20Schroder&quot;&gt;Ed Schröder&lt;/a&gt; in &lt;em&gt;Evaluation in REBEL&lt;/em&gt; &lt;!-- ws:start:WikiTextRefRule:35:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.top-5000.nl/authors/rebel/chess840.htm#HW&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Evaluation in REBEL (hanging pieces)&amp;lt;/a&amp;gt; from &amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.top-5000.nl/authors/rebel/chess840.htm&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;How Rebel Plays Chess&amp;lt;/a&amp;gt; by &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Ed%20Schroder&amp;quot;&amp;gt;Ed Schröder&amp;lt;/a&amp;gt;, also available as &amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://members.home.nl/matador/Inside%20Rebel.pdf&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;pdf&amp;lt;/a&amp;gt;&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-6&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-6&quot;&gt;[6]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:35 --&gt; , &lt;a class=&quot;wiki_link&quot; href=&quot;/Rebel&quot;&gt;Rebel&lt;/a&gt; uses two board tables for both sides, one &lt;a class=&quot;wiki_link&quot; href=&quot;/Byte&quot;&gt;byte&lt;/a&gt; entry each, the three lower bits contain an attack counter, while the five upper bits indicate the presence of least one pawn or piece attacking/defending:&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:1:
&amp;lt;pre class=&amp;quot;text&amp;quot;&amp;gt;+&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;-+&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;-+&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;-+&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;-+&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;-+&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;-+&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;-+&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;-+&amp;lt;br/&amp;gt;| BIT0 | BIT1 | BIT2 | BIT3 | BIT4 | BIT5 | BIT6 | BIT7 |&amp;lt;br/&amp;gt;+&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;-+&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;-+&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;-+&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;-+&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;-+&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;-+&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;-+&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;-+&amp;lt;br/&amp;gt;|      Number of     | PAWN |KNIGHT| ROOK | QUEEN| KING |&amp;lt;br/&amp;gt;|      ATTACKERS     |      |BISHOP|      |      |      |&amp;lt;br/&amp;gt;+&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;-+&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;-+&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;-+&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;-+&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;-+&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;-+&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;-+&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;&amp;amp;#45;-+&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.text  {font-family:monospace;}
.text .imp {font-weight: bold; color: red;}
.text span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;text&quot;&gt;+------+------+------+------+------+------+------+------+
| BIT0 | BIT1 | BIT2 | BIT3 | BIT4 | BIT5 | BIT6 | BIT7 |
+------+------+------+------+------+------+------+------+
|      Number of     | PAWN |KNIGHT| ROOK | QUEEN| KING |
|      ATTACKERS     |      |BISHOP|      |      |      |
+------+------+------+------+------+------+------+------+&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:1 --&gt;The information might be inaccurate in some cases since it loses some information if multiple pieces of one kind are involved. However, since &lt;a class=&quot;wiki_link&quot; href=&quot;/Static%20Exchange%20Evaluation&quot;&gt;SEE&lt;/a&gt; might be erroneous anyway due to &lt;a class=&quot;wiki_link&quot; href=&quot;/Pin&quot;&gt;pins&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/X-ray&quot;&gt;x-rays&lt;/a&gt; or &lt;a class=&quot;wiki_link&quot; href=&quot;/Overloading&quot;&gt;overloaded pieces&lt;/a&gt;, Ed&#039;s scheme seems sufficient for practical purposes - and it is fast. Each byte (for both sides) can act as index inside pre-calculated three-dimensional table to perform an SEE by looking up a target piece or square, attack- and defend-byte:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:2:
&amp;lt;pre class=&amp;quot;text&amp;quot;&amp;gt;char see_table [14][256][256];   // 14*64 K = 896 KByte&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;see = see_table[Piece][attackByte][defendByte];&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.text  {font-family:monospace;}
.text .imp {font-weight: bold; color: red;}
.text span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;text&quot;&gt;char see_table [14][256][256];   // 14*64 K = 896 KByte
&amp;nbsp;
see = see_table[Piece][attackByte][defendByte];&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:2 --&gt;While the counter might be updated incrementally, the piece indicators as possible union of multiple pieces (i.e. two knights and one bishop) is not that simple to update, thus Ed generates those tables in evaluation on the fly by scanning the pieces of the board.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:53:&amp;lt;h3&amp;gt; --&gt;&lt;h3 id=&quot;toc8&quot;&gt;&lt;a name=&quot;Implementations-Alternatives-Direction wise&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:53 --&gt;Direction wise&lt;/h3&gt;
 An other alternative to incremental updated attack tables is motivated by direction wise fill algorithms like &lt;a class=&quot;wiki_link&quot; href=&quot;/Kogge-Stone%20Algorithm&quot;&gt;Kogge-Stone&lt;/a&gt; for sliding pieces, and that one may hide memory latencies from probes of the &lt;a class=&quot;wiki_link&quot; href=&quot;/Transposition%20Table&quot;&gt;transposition table&lt;/a&gt;. Especially &lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Attacks%20%28Bitboards%29&quot;&gt;pawn attacks&lt;/a&gt; are cheap to determine on the fly, and likely reduce the set of capture targets of least valuable pieces defended by pawns, which are otherwise object of &lt;a class=&quot;wiki_link&quot; href=&quot;/Quiescence%20Search&quot;&gt;Quiescence Search&lt;/a&gt; or &lt;a class=&quot;wiki_link&quot; href=&quot;/Static%20Exchange%20Evaluation&quot;&gt;SEE&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:55:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc9&quot;&gt;&lt;a name=&quot;See also&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:55 --&gt;See also&lt;/h1&gt;
 &lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Piece-Sets&quot;&gt;Piece-Sets&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Bitboards&quot;&gt;Bitboards&lt;/a&gt;&lt;br /&gt;
&lt;a class=&quot;wiki_link&quot; href=&quot;/Sliding%20Piece%20Attacks&quot;&gt;Sliding Piece Attacks&lt;/a&gt;&lt;br /&gt;
&lt;a class=&quot;wiki_link&quot; href=&quot;/Square%20Attacked%20By&quot;&gt;Square Attacked By&lt;/a&gt;&lt;br /&gt;
&lt;a class=&quot;wiki_link&quot; href=&quot;/Pieces%20versus%20Directions&quot;&gt;Pieces versus Directions&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:57:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc10&quot;&gt;&lt;a name=&quot;Forums Posts&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:57 --&gt;Forums Posts&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextHeadingRule:59:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc11&quot;&gt;&lt;a name=&quot;Forums Posts-1995 ...&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:59 --&gt;1995 ...&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://groups.google.com/group/rec.games.chess.computer/browse_frm/thread/71f7b5ee3764f082&quot; rel=&quot;nofollow&quot;&gt;Chess programming using bitboards&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Jo%C3%ABl%20Rivat&quot;&gt;Joël Rivat&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Computer%20Chess%20Forums&quot;&gt;rgcc&lt;/a&gt;, August 18, 1995&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=30023&quot; rel=&quot;nofollow&quot;&gt;Attack Tables&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Roberto%20Waldteufel&quot;&gt;Roberto Waldteufel&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, October 20, 1998&lt;/li&gt;&lt;/ul&gt;&lt;!-- ws:start:WikiTextHeadingRule:61:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc12&quot;&gt;&lt;a name=&quot;Forums Posts-2000 ...&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:61 --&gt;2000 ...&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=209546&quot; rel=&quot;nofollow&quot;&gt;Counting attacked squares: how?&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Leen%20Ammeraal&quot;&gt;Leen Ammeraal&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, January 24, 2002&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=260736&quot; rel=&quot;nofollow&quot;&gt;attacks_from[] and attacks_to[] info&lt;/a&gt; by Nagendra Singh Tomar, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, October 21, 2002&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=266390&quot; rel=&quot;nofollow&quot;&gt;Attack tables&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Andreas%20Herrmann&quot;&gt;Andreas Herrmann&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, November 20, 2002&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=363519&quot; rel=&quot;nofollow&quot;&gt;The Zappa Attack Table Code&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Anthony%20Cozzie&quot;&gt;Anthony Cozzie&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, May 05, 2004&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=373246&quot; rel=&quot;nofollow&quot;&gt;bitboards and incrementally updated attack tables&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Eric%20Oldre&quot;&gt;Eric Oldre&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, June 30, 2004&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.open-aurec.com/wbforum/viewtopic.php?f=4&amp;amp;t=171&quot; rel=&quot;nofollow&quot;&gt;Attack table&lt;/a&gt; by Anonymous, &lt;a class=&quot;wiki_link&quot; href=&quot;/Computer%20Chess%20Forums&quot;&gt;Winboard Forum&lt;/a&gt;, October 06, 2004&lt;/li&gt;&lt;/ul&gt;&lt;!-- ws:start:WikiTextHeadingRule:63:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc13&quot;&gt;&lt;a name=&quot;Forums Posts-2005 ...&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:63 --&gt;2005 ...&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.open-aurec.com/wbforum/viewtopic.php?f=4&amp;amp;t=1626&quot; rel=&quot;nofollow&quot;&gt;Attack table musings&lt;/a&gt; by GeoffW, &lt;a class=&quot;wiki_link&quot; href=&quot;/Computer%20Chess%20Forums&quot;&gt;Winboard Forum&lt;/a&gt;, February 11, 2005&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=20370&quot; rel=&quot;nofollow&quot;&gt;Incremental updating for positional evaluation&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Steven%20Edwards&quot;&gt;Steven Edwards&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, March 27, 2008&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?topic_view=threads&amp;amp;p=267994&amp;amp;t=27965&quot; rel=&quot;nofollow&quot;&gt;Piece attacks count&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Marco%20Costalba&quot;&gt;Marco Costalba&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, May 18, 2009 » &lt;a class=&quot;wiki_link&quot; href=&quot;/Population%20Count&quot;&gt;Population Count&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;!-- ws:start:WikiTextHeadingRule:65:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc14&quot;&gt;&lt;a name=&quot;Forums Posts-2010 ...&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:65 --&gt;2010 ...&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=52085&quot; rel=&quot;nofollow&quot;&gt;Incrementally-updated attack map&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Harm%20Geert%20Muller&quot;&gt;Harm Geert Muller&lt;/a&gt;, April 21, 2014 » &lt;a class=&quot;wiki_link&quot; href=&quot;/Incremental%20Updates&quot;&gt;Incremental Updates&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:67:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc15&quot;&gt;&lt;a name=&quot;References&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:67 --&gt;References&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextReferencesRule:293:&amp;amp;lt;references /&amp;amp;gt; --&gt;&lt;ol class=&quot;references&quot;&gt;
&lt;li id=&quot;cite_note-1&quot;&gt;&lt;a href=&quot;#cite_ref-1&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.puckergallery.com/artists/bak_chess/bak_chess_all.html&quot; rel=&quot;nofollow&quot;&gt;The Game of War&lt;/a&gt; from &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.puckergallery.com/artists/bak_index/bak_publications.html&quot; rel=&quot;nofollow&quot;&gt;Samuel Bak - represented by Pucker Gallery since 1969&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;cite_note-2&quot;&gt;&lt;a href=&quot;#cite_ref-2&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://groups.google.com/group/rec.games.chess.computer/browse_frm/thread/71f7b5ee3764f082&quot; rel=&quot;nofollow&quot;&gt;Chess programming using bitboards&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Jo%C3%ABl%20Rivat&quot;&gt;Joël Rivat&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Computer%20Chess%20Forums&quot;&gt;rgcc&lt;/a&gt;, August 18, 1995&lt;/li&gt;
&lt;li id=&quot;cite_note-3&quot;&gt;&lt;a href=&quot;#cite_ref-3&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://groups.google.com/group/rec.games.chess.computer/browse_frm/thread/33c57503391f3a89&quot; rel=&quot;nofollow&quot;&gt;Speed of Move Generator&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Valavan%20Manohararajah&quot;&gt;Valavan Manohararajah&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Computer%20Chess%20Forums&quot;&gt;rgcc&lt;/a&gt;, August 15, 1995, post 5 by &lt;a class=&quot;wiki_link&quot; href=&quot;/Robert%20Hyatt&quot;&gt;Robert Hyatt&lt;/a&gt; where he mentions on the fly generation with &lt;a class=&quot;wiki_link&quot; href=&quot;/Rotated%20Bitboards&quot;&gt;rotated bitboards&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;cite_note-4&quot;&gt;&lt;a href=&quot;#cite_ref-4&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link&quot; href=&quot;/David%20Slate&quot;&gt;David Slate&lt;/a&gt; and &lt;a class=&quot;wiki_link&quot; href=&quot;/Larry%20Atkin&quot;&gt;Larry Atkin&lt;/a&gt; (&lt;strong&gt;1977&lt;/strong&gt;). &lt;em&gt;CHESS 4.5 - The Northwestern University Chess Program.&lt;/em&gt; &lt;a class=&quot;wiki_link&quot; href=&quot;/Chess%20Skill%20in%20Man%20and%20Machine&quot;&gt;Chess Skill in Man and Machine&lt;/a&gt; (ed. &lt;a class=&quot;wiki_link&quot; href=&quot;/Peter%20W.%20Frey&quot;&gt;Peter W. Frey&lt;/a&gt;), pp. 82-118. Springer-Verlag, New York, N.Y. 2nd ed. 1983. ISBN 0-387-90815-3. Reprinted (&lt;strong&gt;1988&lt;/strong&gt;) in &lt;a class=&quot;wiki_link&quot; href=&quot;/Computer%20Chess%20Compendium&quot;&gt;Computer Chess Compendium&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;cite_note-5&quot;&gt;&lt;a href=&quot;#cite_ref-5&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.craftychess.com/hyatt/bitmaps.html&quot; rel=&quot;nofollow&quot;&gt;Rotated bitmaps, a new twist on an old idea&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Robert%20Hyatt&quot;&gt;Robert Hyatt&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;cite_note-6&quot;&gt;&lt;a href=&quot;#cite_ref-6&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.top-5000.nl/authors/rebel/chess840.htm#HW&quot; rel=&quot;nofollow&quot;&gt;Evaluation in REBEL (hanging pieces)&lt;/a&gt; from &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.top-5000.nl/authors/rebel/chess840.htm&quot; rel=&quot;nofollow&quot;&gt;How Rebel Plays Chess&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Ed%20Schroder&quot;&gt;Ed Schröder&lt;/a&gt;, also available as &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://members.home.nl/matador/Inside%20Rebel.pdf&quot; rel=&quot;nofollow&quot;&gt;pdf&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;!-- ws:end:WikiTextReferencesRule:293 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:69:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc16&quot;&gt;&lt;a name=&quot;What links here?&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:69 --&gt;What links here?&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextIncludeRule:03:&amp;lt;img src=&amp;quot;https://www.wikispaces.com/site/embedthumbnail/include/backlinks?w=200&amp;amp;h=100&amp;quot; class=&amp;quot;WikiMedia WikiMediaInclude&amp;quot; id=&amp;quot;wikitext@@include@@page=&amp;amp;quot;Attack and Defend Maps&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;80&amp;amp;quot;&amp;quot; title=&amp;quot;Include backlinks: page=&amp;amp;quot;Attack and Defend Maps&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;80&amp;amp;quot;&amp;quot; /&amp;gt; --&gt;&lt;div class=&quot;includeBody-Attack_and_Defend_Maps includeBody-Attack%20and%20Defend%20Maps includeBody&quot;&gt;&lt;table class=&quot;includeBacklinks&quot;&gt;
  &lt;thead&gt;
    &lt;tr class=&quot;includeBacklinksHeading&quot;&gt;
      &lt;th class=&quot;includeBacklinksPageHeading&quot;&gt;Page&lt;/th&gt;
      &lt;th class=&quot;includeBacklinksDateHeading&quot;&gt;Date Edited&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
    &lt;tbody&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Andreas+Herrmann&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Andreas Herrmann&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 7, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Arasan&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Arasan&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Apr 8, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Attack+and+Defend+Maps&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Attack and Defend Maps&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 5, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Bebe&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Bebe&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 23, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Bitboards&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Bitboards&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 14, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/BlackBishop&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;BlackBishop&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 7, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Board+Representation&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Board Representation&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 11, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Bruja&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Bruja&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Feb 3, 2015&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/CAPS&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;CAPS&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 23, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Check&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Check&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Feb 1, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Chess+%28Program%29&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Chess (Program)&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 22, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Chess+0.5&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Chess 0.5&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 20, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Chest&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Chest&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 3, 2015&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Combinatorial+Logic&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Combinatorial Logic&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Apr 6, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Constellation&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Constellation&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Oct 2, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/DanChess&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;DanChess&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jun 17, 2012&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Data&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Data&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 26, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Deflection&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Deflection&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;May 21, 2011&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Diablo&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Diablo&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;May 17, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Dorpsgek&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Dorpsgek&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Apr 2, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Double+Attack&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Double Attack&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Oct 22, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Encoding+Moves&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Encoding Moves&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 27, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Eugen&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Eugen&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 7, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Eugenio+Castillo+Jim%C3%A9nez&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Eugenio Castillo Jiménez&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jul 23, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Eye+Movements&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Eye Movements&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jul 22, 2015&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Floyd&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Floyd&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Sep 11, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Golch&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Golch&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 7, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Gromit&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Gromit&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Apr 5, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Hagrid&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Hagrid&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Apr 12, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Horizon&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Horizon&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 17, 2013&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Incremental+Updates&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Incremental Updates&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Sep 6, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Interception&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Interception&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;May 21, 2011&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Interference&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Interference&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;May 20, 2011&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Joker+NL&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Joker NL&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Sep 15, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Jos%C3%A9+Carlos+Mart%C3%ADnez+Gal%C3%A1n&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;José Carlos Martínez Galán&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Feb 19, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/King+Safety&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;King Safety&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Feb 14, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/KnightCap&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;KnightCap&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 6, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Legal+Move&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Legal Move&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Feb 16, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/M-20&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;M-20&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Oct 9, 2013&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Mate+at+a+Glance&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Mate at a Glance&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Sep 24, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Mediocre&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Mediocre&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Feb 27, 2015&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/MessChess&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;MessChess&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 6, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Mikhail+Botvinnik&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Mikhail Botvinnik&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jul 15, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Mobility&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Mobility&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 17, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Movei&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Movei&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 7, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/MVV-LVA&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;MVV-LVA&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Oct 26, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Neural+Networks&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Neural Networks&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 12, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Node+Types&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Node Types&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Oct 22, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Nullmover&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Nullmover&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jul 21, 2013&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Ostrich&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Ostrich&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 28, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Overloading&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Overloading&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;May 5, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Pandix&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Pandix&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Feb 4, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Patzer&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Patzer&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Apr 5, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Perceiver&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Perceiver&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 21, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Peter+Fendrich&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Peter Fendrich&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;May 19, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Piece-Sets&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Piece-Sets&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jun 9, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Pioneer&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Pioneer&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 23, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Population+Count&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Population Count&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Sep 3, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/RDChess&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;RDChess&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;May 3, 2013&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Rookie&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Rookie&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 7, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/SEE+-+The+Swap+Algorithm&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;SEE - The Swap Algorithm&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jun 5, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/SnailChess&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;SnailChess&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 26, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Snitch&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Snitch&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Apr 7, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/SOMA&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;SOMA&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 25, 2015&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Spartacus&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Spartacus&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Oct 17, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Spector&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Spector&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 11, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Square+Attacked+By&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Square Attacked By&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 20, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Square+Control&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Square Control&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Sep 15, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Static+Exchange+Evaluation&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Static Exchange Evaluation&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 14, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Sunsetter&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Sunsetter&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jun 1, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Tao&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Tao&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 8, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Vladimir+Butenko&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Vladimir Butenko&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Aug 12, 2013&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Woodpusher&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Woodpusher&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 12, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Zach+Wegner&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Zach Wegner&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 7, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Zappa&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Zappa&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Oct 24, 2017&lt;/td&gt;
    &lt;/tr&gt;
      &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;&lt;!-- ws:end:WikiTextIncludeRule:03 --&gt;&lt;br /&gt;
&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Data&quot;&gt;Up one Level&lt;/a&gt;&lt;/strong&gt;</description>
          </item>
    <item>
      <title>Attack Spans</title>
      <link>https://chessprogramming.wikispaces.com/Attack+Spans</link>
      <dc:creator>GerdIsenberg</dc:creator>
      <guid isPermaLink="true">https://chessprogramming.wikispaces.com/Attack+Spans</guid>
      <comments>https://chessprogramming.wikispaces.com/page/messages/Attack+Spans</comments>
      <pubDate>Thu, 04 Mar 2010 17:40:18 GMT</pubDate>
      <description>&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Home&quot;&gt;Home&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Board%20Representation&quot;&gt;Board Representation&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Bitboards&quot;&gt;Bitboards&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Pattern%20and%20Properties&quot;&gt;Pawn Pattern and Properties&lt;/a&gt; * Attack Spans&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Set-wise pattern, based on &lt;strong&gt;attackspans&lt;/strong&gt; are for instance &lt;a class=&quot;wiki_link&quot; href=&quot;/Isolated%20Pawns%20%28Bitboards%29&quot;&gt;isolated pawns&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Passed%20Pawns%20%28Bitboards%29&quot;&gt;passers&lt;/a&gt; and &lt;a class=&quot;wiki_link&quot; href=&quot;/Candidates%20%28Bitboards%29&quot;&gt;candidates&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
The admittedly arbitrary definition of &lt;strong&gt;front attackspans&lt;/strong&gt; includes the attacked squares itself, thus it is like a &lt;strong&gt;fill&lt;/strong&gt; of &lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Attacks%20%28Bitboards%29&quot;&gt;attacked squares&lt;/a&gt; in the appropriate direction. The &lt;strong&gt;rear attackspan&lt;/strong&gt; is the &lt;strong&gt;complement&lt;/strong&gt; set on the &lt;strong&gt;same file&lt;/strong&gt;, so that the union of both spans covers the &lt;strong&gt;whole file&lt;/strong&gt;. As always, we keep disjoint east-west sets for separate applications, despite illustrated as union with one single pawn:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:0:
&amp;lt;pre class=&amp;quot;text&amp;quot;&amp;gt;white attack        white attack     attack filefill with least one&amp;lt;br/&amp;gt;frontspan           rearspan         square attacked by white&amp;lt;br/&amp;gt;. . 1 . 1 . . .     . . . . . . . .     . . 1 . 1 . . .&amp;lt;br/&amp;gt;. . 1 . 1 . . .     . . . . . . . .     . . 1 . 1 . . .&amp;lt;br/&amp;gt;. . 1 . 1 . . .     . . . . . . . .     . . 1 . 1 . . .&amp;lt;br/&amp;gt;. . 1 . 1 . . .     . . . . . . . .     . . 1 . 1 . . .&amp;lt;br/&amp;gt;. . . w . . . .     . . 1 w 1 . . .     . . 1 w 1 . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . 1 . 1 . . .     . . 1 . 1 . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . 1 . 1 . . .     . . 1 . 1 . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . 1 . 1 . . .     . . 1 . 1 . . .&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;black attack        black attack     attack filefill with least one&amp;lt;br/&amp;gt;frontspan           rearspan         square attacked by black&amp;lt;br/&amp;gt;. . . . . . . .     . . 1 . 1 . . .     . . 1 . 1 . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . 1 . 1 . . .     . . 1 . 1 . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . 1 . 1 . . .     . . 1 . 1 . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . 1 . 1 . . .     . . 1 . 1 . . .&amp;lt;br/&amp;gt;. . . b . . . .     . . 1 b 1 . . .     . . 1 b 1 . . .&amp;lt;br/&amp;gt;. . 1 . 1 . . .     . . . . . . . .     . . 1 . 1 . . .&amp;lt;br/&amp;gt;. . 1 . 1 . . .     . . . . . . . .     . . 1 . 1 . . .&amp;lt;br/&amp;gt;. . 1 . 1 . . .     . . . . . . . .     . . 1 . 1 . . .&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.text  {font-family:monospace;}
.text .imp {font-weight: bold; color: red;}
.text span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;text&quot;&gt;white attack        white attack     attack filefill with least one
frontspan           rearspan         square attacked by white
. . 1 . 1 . . .     . . . . . . . .     . . 1 . 1 . . .
. . 1 . 1 . . .     . . . . . . . .     . . 1 . 1 . . .
. . 1 . 1 . . .     . . . . . . . .     . . 1 . 1 . . .
. . 1 . 1 . . .     . . . . . . . .     . . 1 . 1 . . .
. . . w . . . .     . . 1 w 1 . . .     . . 1 w 1 . . .
. . . . . . . .     . . 1 . 1 . . .     . . 1 . 1 . . .
. . . . . . . .     . . 1 . 1 . . .     . . 1 . 1 . . .
. . . . . . . .     . . 1 . 1 . . .     . . 1 . 1 . . .
&amp;nbsp;
black attack        black attack     attack filefill with least one
frontspan           rearspan         square attacked by black
. . . . . . . .     . . 1 . 1 . . .     . . 1 . 1 . . .
. . . . . . . .     . . 1 . 1 . . .     . . 1 . 1 . . .
. . . . . . . .     . . 1 . 1 . . .     . . 1 . 1 . . .
. . . . . . . .     . . 1 . 1 . . .     . . 1 . 1 . . .
. . . b . . . .     . . 1 b 1 . . .     . . 1 b 1 . . .
. . 1 . 1 . . .     . . . . . . . .     . . 1 . 1 . . .
. . 1 . 1 . . .     . . . . . . . .     . . 1 . 1 . . .
. . 1 . 1 . . .     . . . . . . . .     . . 1 . 1 . . .&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:0 --&gt;The routines based on &lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#OneStepOnly&quot;&gt;one step only&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Fills&quot;&gt;vertical fills&lt;/a&gt; and &lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Spans&quot;&gt;pawn spans&lt;/a&gt; :&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:1:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;U64 wEastAttackFrontSpans (U64 wpawns) {return eastOne(wFrontSpans(wpawns));}&amp;lt;br/&amp;gt;U64 wWestAttackFrontSpans (U64 wpawns) {return westOne(wFrontSpans(wpawns));}&amp;lt;br/&amp;gt;U64 bEastAttackFrontSpans (U64 bpawns) {return eastOne(bFrontSpans(bpawns));}&amp;lt;br/&amp;gt;U64 bWestAttackFrontSpans (U64 bpawns) {return westOne(bFrontSpans(bpawns));}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;U64 wEastAttackRearSpans (U64 wpawns)  {return eastOne(wRearFill(wpawns));}&amp;lt;br/&amp;gt;U64 wWestAttackRearSpans (U64 wpawns)  {return westOne(wRearFill(wpawns));}&amp;lt;br/&amp;gt;U64 bEastAttackRearSpans (U64 bpawns)  {return eastOne(bRearFill(bpawns));}&amp;lt;br/&amp;gt;U64 bWestAttackRearSpans (U64 bpawns)  {return westOne(bRearFill(bpawns));}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;U64 wEastAttackFrontSpans &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 wpawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; eastOne&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;wFrontSpans&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;wpawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
U64 wWestAttackFrontSpans &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 wpawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; westOne&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;wFrontSpans&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;wpawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
U64 bEastAttackFrontSpans &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 bpawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; eastOne&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bFrontSpans&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bpawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
U64 bWestAttackFrontSpans &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 bpawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; westOne&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bFrontSpans&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bpawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
U64 wEastAttackRearSpans &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 wpawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; eastOne&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;wRearFill&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;wpawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
U64 wWestAttackRearSpans &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 wpawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; westOne&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;wRearFill&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;wpawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
U64 bEastAttackRearSpans &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 bpawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; eastOne&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bRearFill&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bpawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
U64 bWestAttackRearSpans &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 bpawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; westOne&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bRearFill&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bpawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:1 --&gt;The filefills are independent on color&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:2:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;U64 eastAttackFileFill (U64 pawns) {return eastOne(fileFill(pawns));}&amp;lt;br/&amp;gt;U64 westAttackFileFill (U64 pawns) {return westOne(fileFill(pawns));}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;U64 eastAttackFileFill &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 pawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; eastOne&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;fileFill&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
U64 westAttackFileFill &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 pawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; westOne&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;fileFill&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:2 --&gt;&lt;ul&gt;&lt;li&gt;If a pawn is not member of own west or east attack filefills, the pawn is &lt;a class=&quot;wiki_link&quot; href=&quot;/Isolated%20Pawns%20%28Bitboards%29&quot;&gt;half-isolated&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;If a pawn is not member of the union of own east and west attack filefills, the pawn is &lt;a class=&quot;wiki_link&quot; href=&quot;/Isolated%20Pawns%20%28Bitboards%29&quot;&gt;isolated&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;If a pawn is not member of the union of all opponent front pawn- and attack-spans, it is a &lt;a class=&quot;wiki_link&quot; href=&quot;/Passed%20Pawns%20%28Bitboards%29&quot;&gt;passed pawn&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:4:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc0&quot;&gt;&lt;a name=&quot;What links here?&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:4 --&gt;What links here?&lt;/h1&gt;
&lt;!-- ws:start:WikiTextIncludeRule:03:&amp;lt;img src=&amp;quot;https://www.wikispaces.com/site/embedthumbnail/include/backlinks?w=200&amp;amp;h=100&amp;quot; class=&amp;quot;WikiMedia WikiMediaInclude&amp;quot; id=&amp;quot;wikitext@@include@@page=&amp;amp;quot;Attack Spans&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;20&amp;amp;quot;&amp;quot; title=&amp;quot;Include backlinks: page=&amp;amp;quot;Attack Spans&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;20&amp;amp;quot;&amp;quot; /&amp;gt; --&gt;&lt;div class=&quot;includeBody-Attack_Spans includeBody-Attack%20Spans includeBody&quot;&gt;&lt;table class=&quot;includeBacklinks&quot;&gt;
  &lt;thead&gt;
    &lt;tr class=&quot;includeBacklinksHeading&quot;&gt;
      &lt;th class=&quot;includeBacklinksPageHeading&quot;&gt;Page&lt;/th&gt;
      &lt;th class=&quot;includeBacklinksDateHeading&quot;&gt;Date Edited&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
    &lt;tbody&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Attack+Spans&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Attack Spans&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 4, 2010&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Backward+Pawns+%28Bitboards%29&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Backward Pawns (Bitboards)&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;May 5, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Candidates+%28Bitboards%29&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Candidates (Bitboards)&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 11, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Fill+Algorithms&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Fill Algorithms&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 6, 2013&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Holes&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Holes&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Oct 16, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Isolated+Pawns+%28Bitboards%29&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Isolated Pawns (Bitboards)&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 18, 2012&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Passed+Pawns+%28Bitboards%29&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Passed Pawns (Bitboards)&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Aug 23, 2010&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Pawn+Pattern+and+Properties&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Pawn Pattern and Properties&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 11, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Pawn+Spans&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Pawn Spans&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jul 22, 2010&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/PawnKing&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;PawnKing&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Sep 5, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Pin&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Pin&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 7, 2017&lt;/td&gt;
    &lt;/tr&gt;
      &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;&lt;!-- ws:end:WikiTextIncludeRule:03 --&gt;&lt;br /&gt;
&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Pattern%20and%20Properties&quot;&gt;Up one Level&lt;/a&gt;&lt;/strong&gt;</description>
          </item>
    <item>
      <title>Backward Pawns (Bitboards)</title>
      <link>https://chessprogramming.wikispaces.com/Backward+Pawns+%28Bitboards%29</link>
      <dc:creator>GerdIsenberg</dc:creator>
      <guid isPermaLink="true">https://chessprogramming.wikispaces.com/Backward+Pawns+%28Bitboards%29</guid>
      <comments>https://chessprogramming.wikispaces.com/page/messages/Backward+Pawns+%28Bitboards%29</comments>
      <pubDate>Fri, 05 May 2017 10:28:18 GMT</pubDate>
      <description>&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Home&quot;&gt;Home&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Board%20Representation&quot;&gt;Board Representation&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Bitboards&quot;&gt;Bitboards&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Pattern%20and%20Properties&quot;&gt;Pawn Pattern and Properties&lt;/a&gt; * Backward Pawns&lt;/strong&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextTocRule:36:&amp;lt;img id=&amp;quot;wikitext@@toc@@normal&amp;quot; class=&amp;quot;WikiMedia WikiMediaToc&amp;quot; title=&amp;quot;Table of Contents&amp;quot; src=&amp;quot;/site/embedthumbnail/toc/normal?w=225&amp;amp;h=100&amp;quot;/&amp;gt; --&gt;&lt;div id=&quot;toc&quot;&gt;&lt;h1 class=&quot;nopad&quot;&gt;Table of Contents&lt;/h1&gt;&lt;!-- ws:end:WikiTextTocRule:36 --&gt;&lt;!-- ws:start:WikiTextTocRule:37: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Backward&quot;&gt;Backward&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:37 --&gt;&lt;!-- ws:start:WikiTextTocRule:38: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Straggler&quot;&gt;Straggler&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:38 --&gt;&lt;!-- ws:start:WikiTextTocRule:39: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Telestop Weakness&quot;&gt;Telestop Weakness&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:39 --&gt;&lt;!-- ws:start:WikiTextTocRule:40: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Dynamic Backwardness&quot;&gt;Dynamic Backwardness&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:40 --&gt;&lt;!-- ws:start:WikiTextTocRule:41: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Dynamic Backwardness-A further Pass&quot;&gt;A further Pass&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:41 --&gt;&lt;!-- ws:start:WikiTextTocRule:42: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Dynamic Backwardness-Stops with negative SEE&quot;&gt;Stops with negative SEE&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:42 --&gt;&lt;!-- ws:start:WikiTextTocRule:43: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#See also&quot;&gt;See also&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:43 --&gt;&lt;!-- ws:start:WikiTextTocRule:44: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Publications&quot;&gt;Publications&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:44 --&gt;&lt;!-- ws:start:WikiTextTocRule:45: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Forum Posts&quot;&gt;Forum Posts&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:45 --&gt;&lt;!-- ws:start:WikiTextTocRule:46: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#External Links&quot;&gt;External Links&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:46 --&gt;&lt;!-- ws:start:WikiTextTocRule:47: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#References&quot;&gt;References&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:47 --&gt;&lt;!-- ws:start:WikiTextTocRule:48: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#What links here?&quot;&gt;What links here?&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:48 --&gt;&lt;!-- ws:start:WikiTextTocRule:49: --&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:49 --&gt;&lt;br /&gt;
&lt;a class=&quot;wiki_link&quot; href=&quot;/Hans%20Kmoch&quot;&gt;Kmoch&#039;s&lt;/a&gt; definition of a &lt;a class=&quot;wiki_link&quot; href=&quot;/Backward%20Pawn&quot;&gt;backward pawn&lt;/a&gt; or straggler: A half-free pawn on the second or third rank whose stop square lacks pawn protection but is controlled by a &lt;a class=&quot;wiki_link&quot; href=&quot;/Sentry&quot;&gt;sentry&lt;/a&gt;. The definition of a backward pawn seems a bit ambiguous. May an &lt;a class=&quot;wiki_link&quot; href=&quot;/Isolated%20Pawns%20%28Bitboards%29&quot;&gt;isolated pawn&lt;/a&gt; also be a backward one? Or an pawn on a &lt;a class=&quot;wiki_link&quot; href=&quot;/Pawns%20and%20Files%20%28Bitboards%29#ClosedFiles&quot;&gt;closed file&lt;/a&gt;? What about a backward &lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Rams%20%28Bitboards%29&quot;&gt;ram&lt;/a&gt; or &lt;a class=&quot;wiki_link&quot; href=&quot;/Candidates%20%28Bitboards%29&quot;&gt;faked candidates&lt;/a&gt; or even &lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Levers%20%28Bitboards%29&quot;&gt;levers&lt;/a&gt;?&lt;br /&gt;
&lt;!-- ws:start:WikiTextAnchorRule:50:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@Backward&amp;quot; title=&amp;quot;Anchor: Backward&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;Backward&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:50 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:12:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc0&quot;&gt;&lt;a name=&quot;Backward&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:12 --&gt;Backward&lt;/h1&gt;
 We may use a more general definition of backwardness, to consider certain subsets independently. All pawns, which &lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Spans#StopandDistantStop&quot;&gt;stop&lt;/a&gt; is not member of own &lt;a class=&quot;wiki_link&quot; href=&quot;/Attack%20Spans&quot;&gt;front-attackspans&lt;/a&gt; but controlled by a sentry are &lt;strong&gt;backward&lt;/strong&gt;:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:0:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;U64 wBackward(U64 wpawns, U64 bpawns) {&amp;lt;br/&amp;gt;   U64 stops = wpawns &amp;amp;lt;&amp;amp;lt; 8;&amp;lt;br/&amp;gt;   U64 wAttackSpans = wEastAttackFrontSpans(wpawns)&amp;lt;br/&amp;gt;                    | wWestAttackFrontSpans(wpawns);&amp;lt;br/&amp;gt;   U64 bAttacks     = bPawnEastAttacks(bpawns)&amp;lt;br/&amp;gt;                    | bPawnWestAttacks(bpawns);&amp;lt;br/&amp;gt;   return (stops &amp;amp;amp; bAttacks &amp;amp;amp; ~wAttackSpans) &amp;amp;gt;&amp;amp;gt; 8;&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;U64 wBackward&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 wpawns, U64 bpawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   U64 stops &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; wpawns &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   U64 wAttackSpans &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; wEastAttackFrontSpans&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;wpawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                    &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; wWestAttackFrontSpans&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;wpawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   U64 bAttacks     &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bPawnEastAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bpawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                    &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; bPawnWestAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bpawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;stops &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; bAttacks &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; ~wAttackSpans&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:0 --&gt;&lt;!-- ws:start:WikiTextAnchorRule:51:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@Straggler&amp;quot; title=&amp;quot;Anchor: Straggler&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;Straggler&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:51 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:14:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc1&quot;&gt;&lt;a name=&quot;Straggler&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:14 --&gt;Straggler&lt;/h1&gt;
 Stragglers are the intersection of backward with &lt;a class=&quot;wiki_link&quot; href=&quot;/Open%20Pawns%20%28Bitboards%29#OpenPawnsSetwise&quot;&gt;open pawns&lt;/a&gt; and the second or third rank:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:1:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;U64 wStraggler(U64 wpawns, U64 bpawns) {&amp;lt;br/&amp;gt;   return wBackward (wpawns, bpawns)&amp;lt;br/&amp;gt;        &amp;amp;amp; wOpenPawns(wpawns, bpawns)&amp;lt;br/&amp;gt;        &amp;amp;amp; 0xffff00; // rank 2,3&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;U64 wStraggler&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 wpawns, U64 bpawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; wBackward &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;wpawns, bpawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; wOpenPawns&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;wpawns, bpawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;nu12&quot;&gt;0xffff00&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// rank 2,3&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:1 --&gt;In the strict sense, we still need to exclude &lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Levers%20%28Bitboards%29&quot;&gt;levers&lt;/a&gt;. On the other hand, levers are subject of &lt;a class=&quot;wiki_link&quot; href=&quot;/quiescence%20search&quot;&gt;quiescence search&lt;/a&gt; anyway.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:16:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc2&quot;&gt;&lt;a name=&quot;Telestop Weakness&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:16 --&gt;Telestop Weakness&lt;/h1&gt;
As pointed out by &lt;a class=&quot;wiki_link&quot; href=&quot;/Sam%20Hamilton&quot;&gt;Sam Hamilton&lt;/a&gt; &lt;!-- ws:start:WikiTextRefRule:6:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.talkchess.com/forum/viewtopic.php?topic_view=threads&amp;amp;amp;p=290991&amp;amp;amp;t=29689&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Re: Doubled and Backward Pawn Engine &amp;amp;quot;Definitions&amp;amp;quot;&amp;lt;/a&amp;gt; by &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Sam%20Hamilton&amp;quot;&amp;gt;Sam Hamilton&amp;lt;/a&amp;gt;, &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/CCC&amp;quot;&amp;gt;CCC&amp;lt;/a&amp;gt;, September 13, 2009&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-1&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:6 --&gt; considering stop squares might be insufficient for pawns which may actually push, but have a permanent weakened &lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Spans#StopandDistantStop&quot;&gt;telestop&lt;/a&gt;, f.i.:&lt;br /&gt;
&lt;ul class=&quot;quotelist&quot;&gt;&lt;li&gt;&lt;!-- ws:start:WikiTextRemoteImageRule:100:&amp;lt;img src=&amp;quot;http://webchess.freehostia.com/diag/chessdiag.php?fen=8/5p2/6p1/p1p3P1/P1P5/7P/1P6/8%20w%20-%20-&amp;amp;size=medium&amp;amp;coord=yes&amp;amp;cap=no&amp;amp;stm=no&amp;amp;fb=no&amp;amp;theme=classic&amp;amp;color1=E3CEAA&amp;amp;color2=635147&amp;amp;color3=000000&amp;quot; alt=&amp;quot;8/5p2/6p1/p1p3P1/P1P5/7P/1P6/8 w - -&amp;quot; title=&amp;quot;8/5p2/6p1/p1p3P1/P1P5/7P/1P6/8 w - -&amp;quot; /&amp;gt; --&gt;&lt;table class=&quot;captionBox&quot;&gt;&lt;tr&gt;&lt;td class=&quot;captionedImage&quot;&gt;&lt;img src=&quot;http://webchess.freehostia.com/diag/chessdiag.php?fen=8/5p2/6p1/p1p3P1/P1P5/7P/1P6/8%20w%20-%20-&amp;amp;size=medium&amp;amp;coord=yes&amp;amp;cap=no&amp;amp;stm=no&amp;amp;fb=no&amp;amp;theme=classic&amp;amp;color1=E3CEAA&amp;amp;color2=635147&amp;amp;color3=000000&quot; alt=&quot;8/5p2/6p1/p1p3P1/P1P5/7P/1P6/8 w - -&quot; title=&quot;8/5p2/6p1/p1p3P1/P1P5/7P/1P6/8 w - -&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;imageCaption&quot;&gt;8/5p2/6p1/p1p3P1/P1P5/7P/1P6/8 w - -&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;!-- ws:end:WikiTextRemoteImageRule:100 --&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
On the other hand, such a backward prospective pawn has a vital &lt;a class=&quot;wiki_link&quot; href=&quot;/Tempo&quot;&gt;tempo&lt;/a&gt;, which is often decisive in certain &lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Endgame&quot;&gt;pawn endings&lt;/a&gt;, so one should be careful to don&#039;t make the penalty too worse. Anyway, one may either apply the above &lt;a class=&quot;wiki_link&quot; href=&quot;/Backward%20Pawns%20%28Bitboards%29#Backward&quot;&gt;wBackward&lt;/a&gt; algorithm with so far movable pawns shifted one rank up, or alternatively determine a &lt;em&gt;backward square area&lt;/em&gt;, which is the black &lt;a class=&quot;wiki_link&quot; href=&quot;/Attack%20Spans&quot;&gt;attack span&lt;/a&gt; of all black attacks which are outside the white &lt;a class=&quot;wiki_link&quot; href=&quot;/Attack%20Spans&quot;&gt;front attack spans&lt;/a&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:2:
&amp;lt;pre class=&amp;quot;text&amp;quot;&amp;gt;white pawns         black pawns&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . 1 . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . 1 .&amp;lt;br/&amp;gt;. . . . . . 1 .     1 . 1 . . . . .&amp;lt;br/&amp;gt;1 . 1 . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . 1     . . . . . . . .&amp;lt;br/&amp;gt;. 1 . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;~white front     &amp;amp;amp;  black attacks    -&amp;amp;gt; stop squares&amp;lt;br/&amp;gt;attackspans                             dominated by black &amp;lt;br/&amp;gt;. . . . 1 . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . 1 . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . 1 . . .     . . . . 1 . 1 .     . . . . 1 . . .&amp;lt;br/&amp;gt;. . . . 1 1 . 1     . . . . . 1 . 1     . . . . . 1 . 1&amp;lt;br/&amp;gt;. 1 . 1 1 1 . 1  &amp;amp;amp;  . 1 . 1 . . . .     . 1 . 1 . . . .&amp;lt;br/&amp;gt;. 1 . 1 1 1 1 1     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;1 1 1 1 1 1 1 1     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;1 1 1 1 1 1 1 1     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;stop squares&amp;lt;br/&amp;gt;dominated by black&amp;lt;br/&amp;gt;filled down&amp;lt;br/&amp;gt;-&amp;amp;gt; white         &amp;amp;amp;  white pawns      -&amp;amp;gt; backward pawns&amp;lt;br/&amp;gt;backward area&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . 1 . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . 1 1 . 1     . . . . . . 1 .     . . . . . . . .&amp;lt;br/&amp;gt;. 1 . 1 1 1 . 1  &amp;amp;amp;  1 . 1 . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. 1 . 1 1 1 . 1     . . . . . . . 1     . . . . . . . 1&amp;lt;br/&amp;gt;. 1 . 1 1 1 . 1     . 1 . . . . . .     . 1 . . . . . .&amp;lt;br/&amp;gt;. 1 . 1 1 1 . 1     . . . . . . . .     . . . . . . . .&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.text  {font-family:monospace;}
.text .imp {font-weight: bold; color: red;}
.text span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;text&quot;&gt;white pawns         black pawns
. . . . . . . .     . . . . . . . .
. . . . . . . .     . . . . . 1 . .
. . . . . . . .     . . . . . . 1 .
. . . . . . 1 .     1 . 1 . . . . .
1 . 1 . . . . .     . . . . . . . .
. . . . . . . 1     . . . . . . . .
. 1 . . . . . .     . . . . . . . .
. . . . . . . .     . . . . . . . .
&amp;nbsp;
~white front     &amp;amp;  black attacks    -&amp;gt; stop squares
attackspans                             dominated by black 
. . . . 1 . . .     . . . . . . . .     . . . . . . . .
. . . . 1 . . .     . . . . . . . .     . . . . . . . .
. . . . 1 . . .     . . . . 1 . 1 .     . . . . 1 . . .
. . . . 1 1 . 1     . . . . . 1 . 1     . . . . . 1 . 1
. 1 . 1 1 1 . 1  &amp;amp;  . 1 . 1 . . . .     . 1 . 1 . . . .
. 1 . 1 1 1 1 1     . . . . . . . .     . . . . . . . .
1 1 1 1 1 1 1 1     . . . . . . . .     . . . . . . . .
1 1 1 1 1 1 1 1     . . . . . . . .     . . . . . . . .
stop squares
dominated by black
filled down
-&amp;gt; white         &amp;amp;  white pawns      -&amp;gt; backward pawns
backward area
. . . . . . . .     . . . . . . . .     . . . . . . . .
. . . . . . . .     . . . . . . . .     . . . . . . . .
. . . . 1 . . .     . . . . . . . .     . . . . . . . .
. . . . 1 1 . 1     . . . . . . 1 .     . . . . . . . .
. 1 . 1 1 1 . 1  &amp;amp;  1 . 1 . . . . .     . . . . . . . .
. 1 . 1 1 1 . 1     . . . . . . . 1     . . . . . . . 1
. 1 . 1 1 1 . 1     . 1 . . . . . .     . 1 . . . . . .
. 1 . 1 1 1 . 1     . . . . . . . .     . . . . . . . .&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:2 --&gt;&lt;!-- ws:start:WikiTextHeadingRule:18:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc3&quot;&gt;&lt;a name=&quot;Dynamic Backwardness&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:18 --&gt;Dynamic Backwardness&lt;/h1&gt;
&lt;!-- ws:start:WikiTextHeadingRule:20:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc4&quot;&gt;&lt;a name=&quot;Dynamic Backwardness-A further Pass&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:20 --&gt;A further Pass&lt;/h2&gt;
Another issue is that some pawns or their stop squares are statically member of their own &lt;a class=&quot;wiki_link&quot; href=&quot;/Attack%20Spans&quot;&gt;attack spans&lt;/a&gt;, but those spans could not be realized, since their pawns are either backward or &lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Rams%20%28Bitboards%29&quot;&gt;rammed&lt;/a&gt; (or both). Those pawns (f.i. white pawn c4, and mutually black pawn a4 in the diagram) may determined in a second pass, only considering attack spans of movable pawns.&lt;br /&gt;
&lt;ul class=&quot;quotelist&quot;&gt;&lt;li&gt;&lt;!-- ws:start:WikiTextRemoteImageRule:101:&amp;lt;img src=&amp;quot;http://webchess.freehostia.com/diag/chessdiag.php?fen=8/8/1p6/8/p1P1p3/3pP3/1P1P4/8%20w%20-%20-&amp;amp;size=medium&amp;amp;coord=yes&amp;amp;cap=no&amp;amp;stm=no&amp;amp;fb=no&amp;amp;theme=classic&amp;amp;color1=E3CEAA&amp;amp;color2=635147&amp;amp;color3=000000&amp;quot; alt=&amp;quot;8/8/1p6/8/p1P1p3/3pP3/1P1P4/8 w - -&amp;quot; title=&amp;quot;8/8/1p6/8/p1P1p3/3pP3/1P1P4/8 w - -&amp;quot; /&amp;gt; --&gt;&lt;table class=&quot;captionBox&quot;&gt;&lt;tr&gt;&lt;td class=&quot;captionedImage&quot;&gt;&lt;img src=&quot;http://webchess.freehostia.com/diag/chessdiag.php?fen=8/8/1p6/8/p1P1p3/3pP3/1P1P4/8%20w%20-%20-&amp;amp;size=medium&amp;amp;coord=yes&amp;amp;cap=no&amp;amp;stm=no&amp;amp;fb=no&amp;amp;theme=classic&amp;amp;color1=E3CEAA&amp;amp;color2=635147&amp;amp;color3=000000&quot; alt=&quot;8/8/1p6/8/p1P1p3/3pP3/1P1P4/8 w - -&quot; title=&quot;8/8/1p6/8/p1P1p3/3pP3/1P1P4/8 w - -&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;imageCaption&quot;&gt;8/8/1p6/8/p1P1p3/3pP3/1P1P4/8 w - -&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;!-- ws:end:WikiTextRemoteImageRule:101 --&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:22:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc5&quot;&gt;&lt;a name=&quot;Dynamic Backwardness-Stops with negative SEE&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:22 --&gt;Stops with negative SEE&lt;/h2&gt;
A more sophisticated definition of backwardness was given by &lt;a class=&quot;wiki_link&quot; href=&quot;/Vincent%20Diepeveen&quot;&gt;Vincent Diepeveen&lt;/a&gt; &lt;!-- ws:start:WikiTextRefRule:10:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.stmintz.com/ccc/index.php?id=272903&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Re: WHAT is the definition of a backward pawn?&amp;lt;/a&amp;gt; by &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Vincent%20Diepeveen&amp;quot;&amp;gt;Vincent Diepeveen&amp;lt;/a&amp;gt;, &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/CCC&amp;quot;&amp;gt;CCC&amp;lt;/a&amp;gt;, December 24, 2002&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-2&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:10 --&gt;, even a member of a &lt;a class=&quot;wiki_link&quot; href=&quot;/Duo%20Trio%20Quart%20%28Bitboards%29&quot;&gt;pawn duo&lt;/a&gt; may be backward, if its stop square has a negative &lt;a class=&quot;wiki_link&quot; href=&quot;/Static%20Exchange%20Evaluation&quot;&gt;SEE&lt;/a&gt; score, also considering pieces. Here b7 is considered backward, no matter whether the other friendly pawn is on c7 or c6, since it&#039;s stop square b6 has a negative SEE in both cases.&lt;br /&gt;
&lt;ul class=&quot;quotelist&quot;&gt;&lt;li&gt;&lt;!-- ws:start:WikiTextRemoteImageRule:102:&amp;lt;img src=&amp;quot;http://webchess.freehostia.com/diag/chessdiag.php?fen=8/1pp5/8/2P5/8/8/8/1R6%20w%20-%20-&amp;amp;size=medium&amp;amp;coord=yes&amp;amp;cap=no&amp;amp;stm=no&amp;amp;fb=no&amp;amp;theme=classic&amp;amp;color1=E3CEAA&amp;amp;color2=635147&amp;amp;color3=000000&amp;quot; alt=&amp;quot;8/1pp5/8/2P5/8/8/8/1R6 w - -&amp;quot; title=&amp;quot;8/1pp5/8/2P5/8/8/8/1R6 w - -&amp;quot; /&amp;gt; --&gt;&lt;table class=&quot;captionBox&quot;&gt;&lt;tr&gt;&lt;td class=&quot;captionedImage&quot;&gt;&lt;img src=&quot;http://webchess.freehostia.com/diag/chessdiag.php?fen=8/1pp5/8/2P5/8/8/8/1R6%20w%20-%20-&amp;amp;size=medium&amp;amp;coord=yes&amp;amp;cap=no&amp;amp;stm=no&amp;amp;fb=no&amp;amp;theme=classic&amp;amp;color1=E3CEAA&amp;amp;color2=635147&amp;amp;color3=000000&quot; alt=&quot;8/1pp5/8/2P5/8/8/8/1R6 w - -&quot; title=&quot;8/1pp5/8/2P5/8/8/8/1R6 w - -&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;imageCaption&quot;&gt;8/1pp5/8/2P5/8/8/8/1R6 w - -&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;!-- ws:end:WikiTextRemoteImageRule:102 --&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:24:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc6&quot;&gt;&lt;a name=&quot;See also&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:24 --&gt;See also&lt;/h1&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Backward%20Pawn&quot;&gt;Backward Pawn&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Open%20Pawns%20%28Bitboards%29&quot;&gt;Open Pawns&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Sentry&quot;&gt;Sentry&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Attack%20Spans&quot;&gt;Attack Spans&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Candidates%20%28Bitboards%29#Sneaker&quot;&gt;Sneaker&lt;/a&gt; from &lt;a class=&quot;wiki_link&quot; href=&quot;/Candidates%20%28Bitboards%29&quot;&gt;Candidates (Bitboards)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Hidden%20Passed%20Pawn&quot;&gt;Hidden Passed Pawn&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Faker&quot;&gt;Faker&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Hans%20Kmoch&quot;&gt;Hans Kmoch&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:26:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc7&quot;&gt;&lt;a name=&quot;Publications&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:26 --&gt;Publications&lt;/h1&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Hans%20Kmoch&quot;&gt;Hans Kmoch&lt;/a&gt; (&lt;strong&gt;1959, 1990&lt;/strong&gt;). &lt;em&gt;Pawn Power in Chess&lt;/em&gt;. New York: Dover, 1990. Previous ed.: New York: McKay, 1959. ISBN 0-486-26486-6&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:28:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc8&quot;&gt;&lt;a name=&quot;Forum Posts&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:28 --&gt;Forum Posts&lt;/h1&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=272739&quot; rel=&quot;nofollow&quot;&gt;WHAT is the definition of a backward pawn?&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Bas%20Hamstra&quot;&gt;Bas Hamstra&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, December 23, 2002&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=20320&quot; rel=&quot;nofollow&quot;&gt;Backward Pawns&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Mark%20Lefler&quot;&gt;Mark Lefler&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, March 24, 2008&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=29689&quot; rel=&quot;nofollow&quot;&gt;Doubled and Backward Pawn Engine &amp;quot;Definitions&amp;quot;&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Brian%20Richardson&quot;&gt;Brian Richardson&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, September 07, 2009&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=52300&quot; rel=&quot;nofollow&quot;&gt;What is a backward pawn?&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Lyudmil%20Tsvetkov&quot;&gt;Lyudmil Tsvetkov&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, May 12, 2014&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:30:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc9&quot;&gt;&lt;a name=&quot;External Links&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:30 --&gt;External Links&lt;/h1&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/Backward_pawn&quot; rel=&quot;nofollow&quot;&gt;Backward pawn from Wikipedia&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:32:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc10&quot;&gt;&lt;a name=&quot;References&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:32 --&gt;References&lt;/h1&gt;
&lt;!-- ws:start:WikiTextReferencesRule:191:&amp;amp;lt;references /&amp;amp;gt; --&gt;&lt;ol class=&quot;references&quot;&gt;
&lt;li id=&quot;cite_note-1&quot;&gt;&lt;a href=&quot;#cite_ref-1&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?topic_view=threads&amp;amp;p=290991&amp;amp;t=29689&quot; rel=&quot;nofollow&quot;&gt;Re: Doubled and Backward Pawn Engine &amp;quot;Definitions&amp;quot;&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Sam%20Hamilton&quot;&gt;Sam Hamilton&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, September 13, 2009&lt;/li&gt;
&lt;li id=&quot;cite_note-2&quot;&gt;&lt;a href=&quot;#cite_ref-2&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=272903&quot; rel=&quot;nofollow&quot;&gt;Re: WHAT is the definition of a backward pawn?&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Vincent%20Diepeveen&quot;&gt;Vincent Diepeveen&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, December 24, 2002&lt;/li&gt;
&lt;/ol&gt;&lt;!-- ws:end:WikiTextReferencesRule:191 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:34:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc11&quot;&gt;&lt;a name=&quot;What links here?&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:34 --&gt;What links here?&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextIncludeRule:03:&amp;lt;img src=&amp;quot;https://www.wikispaces.com/site/embedthumbnail/include/backlinks?w=200&amp;amp;h=100&amp;quot; class=&amp;quot;WikiMedia WikiMediaInclude&amp;quot; id=&amp;quot;wikitext@@include@@page=&amp;amp;quot;Backward Pawns (Bitboards)&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;40&amp;amp;quot;&amp;quot; title=&amp;quot;Include backlinks: page=&amp;amp;quot;Backward Pawns (Bitboards)&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;40&amp;amp;quot;&amp;quot; /&amp;gt; --&gt;&lt;div class=&quot;includeBody-Backward_Pawns_(Bitboards) includeBody-Backward%20Pawns%20%28Bitboards%29 includeBody&quot;&gt;&lt;table class=&quot;includeBacklinks&quot;&gt;
  &lt;thead&gt;
    &lt;tr class=&quot;includeBacklinksHeading&quot;&gt;
      &lt;th class=&quot;includeBacklinksPageHeading&quot;&gt;Page&lt;/th&gt;
      &lt;th class=&quot;includeBacklinksDateHeading&quot;&gt;Date Edited&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
    &lt;tbody&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Backward+Pawn&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Backward Pawn&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;May 5, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Backward+Pawns+%28Bitboards%29&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Backward Pawns (Bitboards)&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;May 5, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Bas+Hamstra&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Bas Hamstra&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Feb 4, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Dartmouth+CP&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Dartmouth CP&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 19, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Design+Principles&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Design Principles&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 17, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Hans+Kmoch&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Hans Kmoch&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 11, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Lyudmil+Tsvetkov&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Lyudmil Tsvetkov&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 28, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Murka&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Murka&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 11, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Open+Pawns+%28Bitboards%29&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Open Pawns (Bitboards)&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Aug 24, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Pawn+Attacks+%28Bitboards%29&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Pawn Attacks (Bitboards)&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 4, 2010&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Pawn+chain&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Pawn chain&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 17, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Pawn+Pattern+and+Properties&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Pawn Pattern and Properties&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 11, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/PawnKing&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;PawnKing&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Sep 5, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Weak+Pawns&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Weak Pawns&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 19, 2013&lt;/td&gt;
    &lt;/tr&gt;
      &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;&lt;!-- ws:end:WikiTextIncludeRule:03 --&gt;&lt;br /&gt;
&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Pattern%20and%20Properties&quot;&gt;Up one Level&lt;/a&gt;&lt;/strong&gt;</description>
          </item>
    <item>
      <title>Best Magics so far</title>
      <link>https://chessprogramming.wikispaces.com/Best+Magics+so+far</link>
      <dc:creator>GerdIsenberg</dc:creator>
      <guid isPermaLink="true">https://chessprogramming.wikispaces.com/Best+Magics+so+far</guid>
      <comments>https://chessprogramming.wikispaces.com/page/messages/Best+Magics+so+far</comments>
      <pubDate>Fri, 13 Apr 2018 13:10:54 GMT</pubDate>
      <description>&lt;!-- ws:start:WikiTextTocRule:14:&amp;lt;img id=&amp;quot;wikitext@@toc@@normal&amp;quot; class=&amp;quot;WikiMedia WikiMediaToc&amp;quot; title=&amp;quot;Table of Contents&amp;quot; src=&amp;quot;/site/embedthumbnail/toc/normal?w=225&amp;amp;h=100&amp;quot;/&amp;gt; --&gt;&lt;div id=&quot;toc&quot;&gt;&lt;h1 class=&quot;nopad&quot;&gt;Table of Contents&lt;/h1&gt;&lt;!-- ws:end:WikiTextTocRule:14 --&gt;&lt;!-- ws:start:WikiTextTocRule:15: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Legende&quot;&gt;Legende&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:15 --&gt;&lt;!-- ws:start:WikiTextTocRule:16: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Rook Magics&quot;&gt;Rook Magics&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:16 --&gt;&lt;!-- ws:start:WikiTextTocRule:17: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Bishop Magics&quot;&gt;Bishop Magics&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:17 --&gt;&lt;!-- ws:start:WikiTextTocRule:18: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Forum Posts&quot;&gt;Forum Posts&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:18 --&gt;&lt;!-- ws:start:WikiTextTocRule:19: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#External Links&quot;&gt;External Links&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:19 --&gt;&lt;!-- ws:start:WikiTextTocRule:20: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#What links here?&quot;&gt;What links here?&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:20 --&gt;&lt;!-- ws:start:WikiTextTocRule:21: --&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:21 --&gt;&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Home&quot;&gt;Home&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Board%20Representation&quot;&gt;Board Representation&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Bitboards&quot;&gt;Bitboards&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Sliding%20Piece%20Attacks&quot;&gt;Sliding Piece Attacks&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Magic%20Bitboards&quot;&gt;Magic Bitboards&lt;/a&gt; * Best Magics so far&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
This page is intended to publish and share results on magic factors and shifts (64 - &lt;strong&gt;Bits used&lt;/strong&gt;) for most dense magic bitboards tables. &lt;a class=&quot;wiki_link&quot; href=&quot;/Square%20Mapping%20Considerations#LittleEndianRankFileMapping&quot;&gt;Little endian file and rank mapping&lt;/a&gt; is used (a1 = 0), for other mappings simply transform the square.&lt;br /&gt;
&lt;br /&gt;
If you prefer your own magics, see &lt;a class=&quot;wiki_link&quot; href=&quot;/Looking%20for%20Magics&quot;&gt;Looking for Magics&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:2:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc0&quot;&gt;&lt;a name=&quot;Legende&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:2 --&gt;Legende&lt;/h1&gt;
 &lt;ul&gt;&lt;li&gt;&lt;strong&gt;sq&lt;/strong&gt; - the square of a rook or bishop considering little endian file and rank mapping&lt;/li&gt;&lt;li&gt;&lt;strong&gt;#sq&lt;/strong&gt; - index of that square in the 0..63 range&lt;/li&gt;&lt;li&gt;&lt;strong&gt;premask&lt;/strong&gt; - the mask to get all relevant occupied bits, considering the &lt;a class=&quot;wiki_link&quot; href=&quot;/First%20Rank%20Attacks#TheOuterSquares&quot;&gt;inner six bits&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;bits&lt;/strong&gt; - the &lt;a class=&quot;wiki_link&quot; href=&quot;/population%20count&quot;&gt;population count&lt;/a&gt; of premask&lt;/li&gt;&lt;li&gt;&lt;strong&gt;used&lt;/strong&gt; - hopefully less than &lt;strong&gt;bits&lt;/strong&gt;, determines the &lt;strong&gt;shift&lt;/strong&gt; (64 - &lt;strong&gt;used&lt;/strong&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;magic&lt;/strong&gt; - the magic factor&lt;/li&gt;&lt;li&gt;&lt;strong&gt;postmask&lt;/strong&gt; - attacks on the otherwise empty board&lt;/li&gt;&lt;li&gt;&lt;strong&gt;found by&lt;/strong&gt; (optional) - the person who found that number.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:4:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc1&quot;&gt;&lt;a name=&quot;Rook Magics&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:4 --&gt;Rook Magics&lt;/h1&gt;
 &lt;br /&gt;


&lt;table class=&quot;wiki_table&quot;&gt;
    &lt;tr&gt;
        &lt;th&gt;sq&lt;br /&gt;
&lt;/th&gt;
        &lt;th&gt;#sq&lt;br /&gt;
&lt;/th&gt;
        &lt;th&gt;premask&lt;br /&gt;
&lt;/th&gt;
        &lt;th&gt;bits&lt;br /&gt;
&lt;/th&gt;
        &lt;th&gt;used&lt;br /&gt;
&lt;/th&gt;
        &lt;th&gt;magic&lt;br /&gt;
&lt;/th&gt;
        &lt;th&gt;postmask&lt;br /&gt;
&lt;/th&gt;
        &lt;th&gt;found by&lt;br /&gt;
&lt;/th&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;a1&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x000101010101017E&lt;br /&gt;
. . . . . . . .&lt;br /&gt;
1 . . . . . . .&lt;br /&gt;
1 . . . . . . .&lt;br /&gt;
1 . . . . . . .&lt;br /&gt;
1 . . . . . . .&lt;br /&gt;
1 . . . . . . .&lt;br /&gt;
1 . . . . . . .&lt;br /&gt;
. 1 1 1 1 1 1 .&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;12&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x01010101010101FE&lt;br /&gt;
1 . . . . . . .&lt;br /&gt;
1 . . . . . . .&lt;br /&gt;
1 . . . . . . .&lt;br /&gt;
1 . . . . . . .&lt;br /&gt;
1 . . . . . . .&lt;br /&gt;
1 . . . . . . .&lt;br /&gt;
1 . . . . . . .&lt;br /&gt;
. 1 1 1 1 1 1 1&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;b1&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;1&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x000202020202027C&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;11&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x02020202020202FD&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;c1&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;2&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x000404040404047A&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;11&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x04040404040404FB&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;d1&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;3&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x0008080808080876&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;11&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x08080808080808F7&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;e1&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;4&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x001010101010106E&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;11&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x10101010101010EF&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;f1&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x002020202020205E&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;11&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;g1&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;6&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x004040404040403E&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;11&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;h1&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;7&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x008080808080807E&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;12&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x808080808080807F&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;a2&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;8&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x0001010101017E00&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;11&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x010101010101FE01&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;b2&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;9&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x0002020202027C00&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x020202020202FD02&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;c2&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;d2&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;11&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;e2&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;12&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;f2&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;13&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;g2&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;14&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;h2&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;15&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;11&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;a3&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;16&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;11&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;b3&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;17&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;c3&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;18&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;d3&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;19&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;e3&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;20&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;f3&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;21&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;g3&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;22&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;h3&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;23&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;11&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;a4&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;24&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;11&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;b4&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;25&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;c4&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;26&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;d4&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;27&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;e4&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;28&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;f4&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;29&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;g4&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;30&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;h4&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;31&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;11&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;a5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;32&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;11&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;b5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;33&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;c5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;34&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;d5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;35&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;e5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;36&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;f5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;37&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;g5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;38&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;h5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;39&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;11&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;a6&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;40&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;11&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;b6&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;41&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;c6&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;42&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;d6&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;43&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;e6&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;44&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;f6&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;45&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;g6&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;46&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;h6&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;47&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;11&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;a7&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;48&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x007E010101010100&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;11&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x48FFFE99FECFAA00&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x01FE010101010101&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Grant%20Osborne&quot;&gt;Grant Osborne&lt;/a&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;b7&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;49&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x007C020202020200&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;9&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x48FFFE99FECFAA00&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x02FD020202020202&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;Grant Osborne&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;c7&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;50&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;9&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x497FFFADFF9C2E00&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Grant%20Osborne&quot;&gt;Grant Osborne&lt;/a&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;d7&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;51&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;9&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x613FFFDDFFCE9200&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;Grant Osborne&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;e7&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;52&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;9&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0xffffffe9ffe7ce00&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Volker%20Annuss&quot;&gt;Volker Annuss&lt;/a&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;f7&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;53&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;9&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0xfffffff5fff3e600&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;Volker Annuss&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;g7&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;54&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;9&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x3ff95e5e6a4c0&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Niklas%20Fiekas&quot;&gt;Niklas Fiekas&lt;/a&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;h7&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;55&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x007E808080808000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;11&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x510FFFF5F63C96A0&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x807F808080808080&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;Grant Osborne&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;a8&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;56&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x7E01010101010100&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;12&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;11&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0xEBFFFFB9FF9FC526&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0xFE01010101010101&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;Grant Osborne&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;b8&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;57&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x7C02020202020200&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;11&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x61FFFEDDFEEDAEAE&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0xFD02020202020202&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;Grant Osborne&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;c8&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;58&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x7A04040404040400&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;11&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x53BFFFEDFFDEB1A2&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0xFB04040404040404&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;Grant Osborne&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;d8&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;59&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x7608080808080800&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;11&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x127FFFB9FFDFB5F6&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0xF708080808080808&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;Grant Osborne&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;e8&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;60&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x6E10101010101000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;11&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x411FFFDDFFDBF4D6&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0xEF10101010101010&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;Grant Osborne&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;f8&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;61&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;11&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;g8&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;62&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x3E40404040404000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;11&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x0003ffef27eebe74&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0xBF40404040404040&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Peter%20%C3%96sterlund&quot;&gt;Peter Österlund&lt;/a&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;h8&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;63&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x7E80808080808000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;12&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;11&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x7645FFFECBFEA79E&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x7F80808080808080&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;Grant Osborne&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
&lt;/table&gt;

&lt;!-- ws:start:WikiTextHeadingRule:6:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc2&quot;&gt;&lt;a name=&quot;Bishop Magics&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:6 --&gt;Bishop Magics&lt;/h1&gt;
 &lt;br /&gt;


&lt;table class=&quot;wiki_table&quot;&gt;
    &lt;tr&gt;
        &lt;th&gt;sq&lt;br /&gt;
&lt;/th&gt;
        &lt;th&gt;#sq&lt;br /&gt;
&lt;/th&gt;
        &lt;th&gt;premask&lt;br /&gt;
&lt;/th&gt;
        &lt;th&gt;bits&lt;br /&gt;
&lt;/th&gt;
        &lt;th&gt;used&lt;br /&gt;
&lt;/th&gt;
        &lt;th&gt;magic&lt;br /&gt;
&lt;/th&gt;
        &lt;th&gt;postmask&lt;br /&gt;
&lt;/th&gt;
        &lt;th&gt;found by&lt;br /&gt;
&lt;/th&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;a1&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x0040201008040200&lt;br /&gt;
. . . . . . . .&lt;br /&gt;
. . . . . . 1 .&lt;br /&gt;
. . . . . 1 . .&lt;br /&gt;
. . . . 1 . . .&lt;br /&gt;
. . . 1 . . . .&lt;br /&gt;
. . 1 . . . . .&lt;br /&gt;
. 1 . . . . . .&lt;br /&gt;
. . . . . . . .&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;6&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0xffedf9fd7cfcffff&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x8040201008040200&lt;br /&gt;
. . . . . . . 1&lt;br /&gt;
. . . . . . 1 .&lt;br /&gt;
. . . . . 1 . .&lt;br /&gt;
. . . . 1 . . .&lt;br /&gt;
. . . 1 . . . .&lt;br /&gt;
. . 1 . . . . .&lt;br /&gt;
. 1 . . . . . .&lt;br /&gt;
. . . . . . . .&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Gerd%20Isenberg&quot;&gt;Gerd Isenberg&lt;/a&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;b1&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;1&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;4&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0xfc0962854a77f576&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Gerd%20Isenberg&quot;&gt;Gerd Isenberg&lt;/a&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;c1&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;2&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0xE433BF9FF9BD3C0DL&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;d1&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;3&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x8F0BBE9CF98C0405L&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;e1&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;4&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x7E11DFD9DDFBDBF0L&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;f1&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;g1&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;6&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;4&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0xfc0a66c64a7ef576&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;Gerd Isenberg&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;h1&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;7&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;6&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x7ffdfdfcbd79ffff&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;Gerd Isenberg&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;a2&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;8&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;4&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0xfc0846a64a34fff6&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;Gerd Isenberg&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;b2&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;9&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;4&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0xfc087a874a3cf7f6&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;Gerd Isenberg&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;c2&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x0040020042188680L&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;d2&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;11&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x0080000108D80200L&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;e2&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;12&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0xF2048D48B0240820L&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;f2&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;13&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x810040B921030010L&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;g2&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;14&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;4&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0xfc0864ae59b4ff76&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;Gerd Isenberg&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;h2&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;15&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;4&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x3c0860af4b35ff76&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;Gerd Isenberg&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;a3&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;16&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;4&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x73C01AF56CF4CFFB&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Richard%20Pijl&quot;&gt;Richard Pijl&lt;/a&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;b3&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;17&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;4&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x41A01CFAD64AAFFC&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;Richard Pijl&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;c3&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;18&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;7&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;d3&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;19&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;7&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;e3&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;20&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;7&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;f3&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;21&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;7&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;g3&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;22&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;4&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x7c0c028f5b34ff76&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;Gerd Isenberg&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;h3&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;23&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;4&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0xfc0a028e5ab4df76&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;Gerd Isenberg&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;a4&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;24&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;b4&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;25&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;c4&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;26&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;7&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;d4&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;27&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;9&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;e4&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;28&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;9&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;f4&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;29&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;7&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;g4&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;30&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;h4&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;31&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;a5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;32&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;b5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;33&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;c5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;34&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;7&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;d5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;35&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;9&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;e5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;36&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;9&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;f5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;37&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;7&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;g5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;38&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;h5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;39&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;a6&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;40&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;4&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0xDCEFD9B54BFCC09F&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;Richard Pijl&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;b6&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;41&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;4&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0xF95FFA765AFD602B&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;Richard Pijl&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;c6&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;42&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;7&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;d6&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;43&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;7&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;e6&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;44&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;7&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;f6&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;45&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;7&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;g6&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;46&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;4&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x43ff9a5cf4ca0c01&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;Gerd Isenberg&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;h6&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;47&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;4&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x4BFFCD8E7C587601&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;Richard Pijl&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;a7&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;48&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;4&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0xfc0ff2865334f576&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;Gerd Isenberg&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;b7&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;49&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;4&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0xfc0bf6ce5924f576&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;Gerd Isenberg&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;c7&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;50&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;d7&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;51&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;e7&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;52&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;f7&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;53&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;g7&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;54&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;4&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0xc3ffb7dc36ca8c89&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;Gerd Isenberg&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;h7&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;55&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;4&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0xc3ff8a54f4ca2c89&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;Gerd Isenberg&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;a8&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;56&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;6&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0xfffffcfcfd79edff&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;Gerd Isenberg&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;b8&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;57&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;4&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0xfc0863fccb147576&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;Gerd Isenberg&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;c8&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;58&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;d8&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;59&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;e8&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;60&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;f8&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;61&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;g8&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;62&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;4&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0xfc087e8e4bb2f736&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;Gerd Isenberg&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;h8&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;63&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;6&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0x43ff9e4ef4ca2c89&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;Gerd Isenberg&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
&lt;/table&gt;

&lt;!-- ws:start:WikiTextHeadingRule:8:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc3&quot;&gt;&lt;a name=&quot;Forum Posts&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:8 --&gt;Forum Posts&lt;/h1&gt;
 &lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=64578&quot; rel=&quot;nofollow&quot;&gt;Looking for dense magics&lt;/a&gt; by Lucas Braesch, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, July 11, 2017&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=65187&quot; rel=&quot;nofollow&quot;&gt;Disproving the existence of some magics&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Niklas%20Fiekas&quot;&gt;Niklas Fiekas&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, September 16, 2017&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=67051&quot; rel=&quot;nofollow&quot;&gt;No bishop magics with fixed shift 8&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Niklas%20Fiekas&quot;&gt;Niklas Fiekas&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, April 09, 2018&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:10:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc4&quot;&gt;&lt;a name=&quot;External Links&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:10 --&gt;External Links&lt;/h1&gt;
 &lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://www.facebook.com/pages/Tehran-Wind-Orchestra/97680723104&quot; rel=&quot;nofollow&quot;&gt;Tehran Wind Orchestra&lt;/a&gt; - &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/Theme_from_Mission:_Impossible&quot; rel=&quot;nofollow&quot;&gt;Mission Impossible&lt;/a&gt;, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/Vahdat_Hall&quot; rel=&quot;nofollow&quot;&gt;Vahdat Hall&lt;/a&gt;, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/Tehran&quot; rel=&quot;nofollow&quot;&gt;Tehran&lt;/a&gt;, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/Iran&quot; rel=&quot;nofollow&quot;&gt;Iran&lt;/a&gt;, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/YouTube&quot; rel=&quot;nofollow&quot;&gt;YouTube&lt;/a&gt; Video&lt;br /&gt;
&lt;!-- ws:start:WikiTextMediaRule:0:&amp;lt;img src=&amp;quot;https://www.wikispaces.com/site/embedthumbnail/custom/25160390?h=0&amp;amp;w=0&amp;quot; class=&amp;quot;WikiMedia WikiMediaCustom&amp;quot; id=&amp;quot;wikitext@@media@@type=&amp;amp;quot;custom&amp;amp;quot; key=&amp;amp;quot;25160390&amp;amp;quot;&amp;quot; title=&amp;quot;Custom Media&amp;quot;/&amp;gt; --&gt;&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;//www.youtube.com/embed/1QR_K01zB0A?rel=0&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;!-- ws:end:WikiTextMediaRule:0 --&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:12:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc5&quot;&gt;&lt;a name=&quot;What links here?&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:12 --&gt;What links here?&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextIncludeRule:00:&amp;lt;img src=&amp;quot;https://www.wikispaces.com/site/embedthumbnail/include/backlinks?w=200&amp;amp;h=100&amp;quot; class=&amp;quot;WikiMedia WikiMediaInclude&amp;quot; id=&amp;quot;wikitext@@include@@page=&amp;amp;quot;Best Magics so far&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;40&amp;amp;quot;&amp;quot; title=&amp;quot;Include backlinks: page=&amp;amp;quot;Best Magics so far&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;40&amp;amp;quot;&amp;quot; /&amp;gt; --&gt;&lt;div class=&quot;includeBody-Best_Magics_so_far includeBody-Best%20Magics%20so%20far includeBody&quot;&gt;&lt;table class=&quot;includeBacklinks&quot;&gt;
  &lt;thead&gt;
    &lt;tr class=&quot;includeBacklinksHeading&quot;&gt;
      &lt;th class=&quot;includeBacklinksPageHeading&quot;&gt;Page&lt;/th&gt;
      &lt;th class=&quot;includeBacklinksDateHeading&quot;&gt;Date Edited&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
    &lt;tbody&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Best+Magics+so+far&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Best Magics so far&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Apr 13, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Grant+Osborne&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Grant Osborne&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 2, 2011&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Home&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Home&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jul 2, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Looking+for+Magics&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Looking for Magics&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Apr 13, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Magic+Bitboards&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Magic Bitboards&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Apr 13, 2018&lt;/td&gt;
    &lt;/tr&gt;
      &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;&lt;!-- ws:end:WikiTextIncludeRule:00 --&gt;&lt;br /&gt;
&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Magic%20Bitboards&quot;&gt;Up one level&lt;/a&gt;&lt;/strong&gt;</description>
          </item>
    <item>
      <title>BikJump</title>
      <link>https://chessprogramming.wikispaces.com/BikJump</link>
      <dc:creator>GerdIsenberg</dc:creator>
      <guid isPermaLink="true">https://chessprogramming.wikispaces.com/BikJump</guid>
      <comments>https://chessprogramming.wikispaces.com/page/messages/BikJump</comments>
      <pubDate>Mon, 11 Aug 2014 15:27:51 GMT</pubDate>
      <description>&lt;!-- ws:start:WikiTextTocRule:11:&amp;lt;img id=&amp;quot;wikitext@@toc@@normal&amp;quot; class=&amp;quot;WikiMedia WikiMediaToc&amp;quot; title=&amp;quot;Table of Contents&amp;quot; src=&amp;quot;/site/embedthumbnail/toc/normal?w=225&amp;amp;h=100&amp;quot;/&amp;gt; --&gt;&lt;div id=&quot;toc&quot;&gt;&lt;h1 class=&quot;nopad&quot;&gt;Table of Contents&lt;/h1&gt;&lt;!-- ws:end:WikiTextTocRule:11 --&gt;&lt;!-- ws:start:WikiTextTocRule:12: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Java Version&quot;&gt;Java Version&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:12 --&gt;&lt;!-- ws:start:WikiTextTocRule:13: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Platforms&quot;&gt;Platforms&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:13 --&gt;&lt;!-- ws:start:WikiTextTocRule:14: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#History and Future Plans&quot;&gt;History and Future Plans&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:14 --&gt;&lt;!-- ws:start:WikiTextTocRule:15: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#External Links&quot;&gt;External Links&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:15 --&gt;&lt;!-- ws:start:WikiTextTocRule:16: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#What Links Here?&quot;&gt;What Links Here?&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:16 --&gt;&lt;!-- ws:start:WikiTextTocRule:17: --&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:17 --&gt;&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Home&quot;&gt;Home&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Engines&quot;&gt;Engines&lt;/a&gt; * BikJump&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;BikJump&lt;/strong&gt;,&lt;br /&gt;
an &lt;a class=&quot;wiki_link&quot; href=&quot;/UCI%20Engines&quot;&gt;UCI chess engine&lt;/a&gt; written in &lt;a class=&quot;wiki_link&quot; href=&quot;/Cpp&quot;&gt;C++&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Aart%20Bik&quot;&gt;Aart Bik&lt;/a&gt; that features:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/UCI&quot;&gt;UCI&lt;/a&gt; compliant chess engine (runs in e.g. &lt;a class=&quot;wiki_link&quot; href=&quot;/ChessBase&quot;&gt;Chessbase&lt;/a&gt; &lt;a class=&quot;wiki_link&quot; href=&quot;/Fritz&quot;&gt;Fritz&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Chess%20for%20Android&quot;&gt;Chess for Android&lt;/a&gt;, or &lt;a class=&quot;wiki_link&quot; href=&quot;/Arena&quot;&gt;Arena&lt;/a&gt; &lt;a class=&quot;wiki_link&quot; href=&quot;/GUI&quot;&gt;GUI&lt;/a&gt;).&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Iterative%20Deepening&quot;&gt;Iterative deepening&lt;/a&gt; with &lt;a class=&quot;wiki_link&quot; href=&quot;/Alpha-Beta&quot;&gt;alpha-beta&lt;/a&gt; pruning and &lt;a class=&quot;wiki_link&quot; href=&quot;/Quiescence%20Search&quot;&gt;quiescent search&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Transposition%20Table&quot;&gt;Transposition table&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Null%20Move%20Pruning&quot;&gt;null move pruning&lt;/a&gt;, and tactical extensions.&lt;/li&gt;&lt;li&gt;Ability to query &lt;a class=&quot;wiki_link&quot; href=&quot;/Nalimov%20Tablebases&quot;&gt;Nalimov Endgame Tablebases&lt;/a&gt; (3,4,5,6-piece) during search.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
All source code of BikJump (except the probing and decompression code for the endgame tablebases, which are used with kind permission of &lt;a class=&quot;wiki_link&quot; href=&quot;/Eugene%20Nalimov&quot;&gt;Eugene Nalimov&lt;/a&gt; and &lt;a class=&quot;wiki_link&quot; href=&quot;/Andrew%20Kadatch&quot;&gt;Andrew Kadatch&lt;/a&gt;) has been built from the ground up by Aart as a simple after-hours project to gain some experience with chess engine programming and experiment with new ideas.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:1:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc0&quot;&gt;&lt;a name=&quot;Java Version&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:1 --&gt;Java Version&lt;/h1&gt;
A derived &lt;a class=&quot;wiki_link&quot; href=&quot;/Java&quot;&gt;Java&lt;/a&gt; version is used as built-in engine in &lt;a class=&quot;wiki_link&quot; href=&quot;/Chess%20for%20Android&quot;&gt;Chess for Android&lt;/a&gt; and &lt;a class=&quot;wiki_link&quot; href=&quot;/Chess%20for%20Glass&quot;&gt;Chess for Glass&lt;/a&gt;. This application also supports the Universal Chess Interface (UCI) and the &lt;a class=&quot;wiki_link&quot; href=&quot;/Chess%20Engine%20Communication%20Protocol&quot;&gt;Chess Engine Communication Protocol&lt;/a&gt; to allow users to play against more powerful third party engines or even play tournaments between engines.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:3:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc1&quot;&gt;&lt;a name=&quot;Platforms&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:3 --&gt;Platforms&lt;/h1&gt;
 BikJump is available for the following platforms:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Windows&quot;&gt;32-bit Windows&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Windows&quot;&gt;64-bit Windows&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Linux&quot;&gt;32-bit Linux&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Linux&quot;&gt;64-bit Linux&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Mac%20OS&quot;&gt;64-bit MacOS&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Android&quot;&gt;Android&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:5:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc2&quot;&gt;&lt;a name=&quot;History and Future Plans&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:5 --&gt;History and Future Plans&lt;/h1&gt;
 BikJump was first released In January, 2007. The first generation (v1.x) was based on a &lt;a class=&quot;wiki_link&quot; href=&quot;/Mailbox&quot;&gt;mailbox&lt;/a&gt; representation, and over time increased in strength from about 1750 to 2000 &lt;a class=&quot;wiki_link&quot; href=&quot;/UEL&quot;&gt;RUEL&lt;/a&gt;. The second and current generation (v2.x), based on a &lt;a class=&quot;wiki_link&quot; href=&quot;/Bitboards&quot;&gt;bitboard&lt;/a&gt; representation, was released in November, 2008. Aart now has started work on &amp;quot;Deep&amp;quot; BikJump, featuring multi-threading to perform the search in parallel (commonly referred to as SMP support). Upcoming versions will be designated with the suffix P (e.g. v2.1P) to denote this new parallel support.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:7:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc3&quot;&gt;&lt;a name=&quot;External Links&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:7 --&gt;External Links&lt;/h1&gt;
 &lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.aartbik.com/MISC/chess.html&quot; rel=&quot;nofollow&quot;&gt;Aart&#039;s Computer Chess Page&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://aartbik.blogspot.com/&quot; rel=&quot;nofollow&quot;&gt;Aart&#039;s Blog&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:9:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc4&quot;&gt;&lt;a name=&quot;What Links Here?&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:9 --&gt;What Links Here?&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextIncludeRule:00:&amp;lt;img src=&amp;quot;https://www.wikispaces.com/site/embedthumbnail/include/backlinks?w=200&amp;amp;h=100&amp;quot; class=&amp;quot;WikiMedia WikiMediaInclude&amp;quot; id=&amp;quot;wikitext@@include@@page=&amp;amp;quot;BikJump&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;10&amp;amp;quot;&amp;quot; title=&amp;quot;Include backlinks: page=&amp;amp;quot;BikJump&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;10&amp;amp;quot;&amp;quot; /&amp;gt; --&gt;&lt;div class=&quot;includeBody-BikJump includeBody-BikJump includeBody&quot;&gt;&lt;table class=&quot;includeBacklinks&quot;&gt;
  &lt;thead&gt;
    &lt;tr class=&quot;includeBacklinksHeading&quot;&gt;
      &lt;th class=&quot;includeBacklinksPageHeading&quot;&gt;Page&lt;/th&gt;
      &lt;th class=&quot;includeBacklinksDateHeading&quot;&gt;Date Edited&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
    &lt;tbody&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Aart+Bik&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Aart Bik&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 1, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/BikJump&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;BikJump&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Aug 11, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Chess+for+Android&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Chess for Android&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 1, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Chess+for+Glass&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Chess for Glass&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 26, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Eigenmann+Endgame+Test&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Eigenmann Endgame Test&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jun 1, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Engines&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Engines&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 10, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Mathematician&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Mathematician&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Apr 9, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/PuppetMaster&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;PuppetMaster&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Sep 17, 2015&lt;/td&gt;
    &lt;/tr&gt;
      &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;&lt;!-- ws:end:WikiTextIncludeRule:00 --&gt;&lt;br /&gt;
&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Engines&quot;&gt;Up one Level&lt;/a&gt;&lt;/strong&gt;</description>
          </item>
    <item>
      <title>Bitboard Board-Definition</title>
      <link>https://chessprogramming.wikispaces.com/Bitboard+Board-Definition</link>
      <dc:creator>GerdIsenberg</dc:creator>
      <guid isPermaLink="true">https://chessprogramming.wikispaces.com/Bitboard+Board-Definition</guid>
      <comments>https://chessprogramming.wikispaces.com/page/messages/Bitboard+Board-Definition</comments>
      <pubDate>Mon, 23 Jun 2014 19:33:45 GMT</pubDate>
      <description>&lt;!-- ws:start:WikiTextTocRule:36:&amp;lt;img id=&amp;quot;wikitext@@toc@@normal&amp;quot; class=&amp;quot;WikiMedia WikiMediaToc&amp;quot; title=&amp;quot;Table of Contents&amp;quot; src=&amp;quot;/site/embedthumbnail/toc/normal?w=225&amp;amp;h=100&amp;quot;/&amp;gt; --&gt;&lt;div id=&quot;toc&quot;&gt;&lt;h1 class=&quot;nopad&quot;&gt;Table of Contents&lt;/h1&gt;&lt;!-- ws:end:WikiTextTocRule:36 --&gt;&lt;!-- ws:start:WikiTextTocRule:37: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Classical Board&quot;&gt;Classical Board&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:37 --&gt;&lt;!-- ws:start:WikiTextTocRule:38: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Classical Board-Structure&quot;&gt;Structure&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:38 --&gt;&lt;!-- ws:start:WikiTextTocRule:39: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Classical Board-Array&quot;&gt;Array&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:39 --&gt;&lt;!-- ws:start:WikiTextTocRule:40: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Denser Board&quot;&gt;Denser Board&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:40 --&gt;&lt;!-- ws:start:WikiTextTocRule:41: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#See also&quot;&gt;See also&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:41 --&gt;&lt;!-- ws:start:WikiTextTocRule:42: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Forum Posts&quot;&gt;Forum Posts&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:42 --&gt;&lt;!-- ws:start:WikiTextTocRule:43: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#External Links&quot;&gt;External Links&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:43 --&gt;&lt;!-- ws:start:WikiTextTocRule:44: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#References&quot;&gt;References&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:44 --&gt;&lt;!-- ws:start:WikiTextTocRule:45: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#What links here?&quot;&gt;What links here?&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:45 --&gt;&lt;!-- ws:start:WikiTextTocRule:46: --&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:46 --&gt;&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Home&quot;&gt;Home&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Board%20Representation&quot;&gt;Board Representation&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Bitboards&quot;&gt;Bitboards&lt;/a&gt; * Bitboard Board-Definition&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
To represent the board we typically need one bitboard for each &lt;a class=&quot;wiki_link&quot; href=&quot;/Pieces#PieceTypeCoding&quot;&gt;piece-type&lt;/a&gt; and &lt;a class=&quot;wiki_link&quot; href=&quot;/Color&quot;&gt;color&lt;/a&gt; - likely encapsulated inside a class or structure, or as an &lt;a class=&quot;wiki_link&quot; href=&quot;/Array&quot;&gt;array&lt;/a&gt; of bitboards as part of a &lt;a class=&quot;wiki_link&quot; href=&quot;/Chess%20Position&quot;&gt;position&lt;/a&gt; object. A one-bit inside a bitboard implies the existence of a piece of this piece-type on a certain &lt;a class=&quot;wiki_link&quot; href=&quot;/Squares&quot;&gt;square&lt;/a&gt; - one to one associated by the bit-position &lt;!-- ws:start:WikiTextRefRule:11:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.onjava.com/pub/a/onjava/2005/02/02/bitsets.html&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Bitwise Optimization in Java: Bitfields, Bitboards, and Beyond&amp;lt;/a&amp;gt; by &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Glen%20Pepicelli&amp;quot;&amp;gt;Glen Pepicelli&amp;lt;/a&amp;gt;, 2005, &amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://en.wikipedia.org/wiki/O%27Reilly_Media&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;O&#039;Reilly&#039;s&amp;lt;/a&amp;gt; &amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://onjava.com/&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;OnJava.com&amp;lt;/a&amp;gt;&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-1&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:11 --&gt;:&lt;br /&gt;
&lt;!-- ws:start:WikiTextLocalImageRule:72:&amp;lt;a href=&amp;quot;http://www.onjava.com/pub/a/onjava/2005/02/02/bitsets.html?page=2&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;/file/view/bitboard.gif/158504035/bitboard.gif&amp;quot; alt=&amp;quot;&amp;quot; title=&amp;quot;&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt; --&gt;&lt;a href=&quot;http://www.onjava.com/pub/a/onjava/2005/02/02/bitsets.html?page=2&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;/file/view/bitboard.gif/158504035/bitboard.gif&quot; alt=&quot;bitboard.gif&quot; title=&quot;bitboard.gif&quot; /&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextLocalImageRule:72 --&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;To be aware of their scalar 64-bit origin, we use so far a type defined unsigned integer U64 in our &lt;a class=&quot;wiki_link&quot; href=&quot;/C&quot;&gt;C&lt;/a&gt;/&lt;a class=&quot;wiki_link&quot; href=&quot;/Cpp&quot;&gt;C++&lt;/a&gt; source snippets, the scalar 64-bit long in &lt;a class=&quot;wiki_link&quot; href=&quot;/Java&quot;&gt;Java&lt;/a&gt;. Feel free to define a distinct type or wrap U64 into classes for better abstraction and type-safety during compile time.&lt;/em&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextAnchorRule:47:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@CBoardDef&amp;quot; title=&amp;quot;Anchor: CBoardDef&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;CBoardDef&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:47 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:18:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc0&quot;&gt;&lt;a name=&quot;Classical Board&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:18 --&gt;Classical Board&lt;/h1&gt;
Those bitboards may part of a central position object which is &lt;a class=&quot;wiki_link&quot; href=&quot;/Incremental%20Updates&quot;&gt;incrementally updated&lt;/a&gt; while &lt;a class=&quot;wiki_link&quot; href=&quot;/Make%20Move&quot;&gt;making&lt;/a&gt; or &lt;a class=&quot;wiki_link&quot; href=&quot;/Unmake%20Move&quot;&gt;unmaking&lt;/a&gt; &lt;a class=&quot;wiki_link&quot; href=&quot;/Moves&quot;&gt;moves&lt;/a&gt;. &lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:20:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc1&quot;&gt;&lt;a name=&quot;Classical Board-Structure&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:20 --&gt;Structure&lt;/h2&gt;
&lt;!-- ws:start:WikiTextCodeRule:0:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;class CBoard&amp;lt;br/&amp;gt;{&amp;lt;br/&amp;gt;   U64 whitePawns;&amp;lt;br/&amp;gt;   U64 whiteKnights;&amp;lt;br/&amp;gt;   U64 whiteBishops;&amp;lt;br/&amp;gt;   U64 whiteRooks;&amp;lt;br/&amp;gt;   U64 whiteQueens;&amp;lt;br/&amp;gt;   U64 whiteKing;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;   U64 blackPawns;&amp;lt;br/&amp;gt;   U64 blackKnights;&amp;lt;br/&amp;gt;   U64 blackBishops;&amp;lt;br/&amp;gt;   U64 blackRooks;&amp;lt;br/&amp;gt;   U64 blackQueens;&amp;lt;br/&amp;gt;   U64 blackKing;&amp;lt;br/&amp;gt;   ...&amp;lt;br/&amp;gt;};&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; CBoard
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   U64 whitePawns&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   U64 whiteKnights&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   U64 whiteBishops&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   U64 whiteRooks&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   U64 whiteQueens&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   U64 whiteKing&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
   U64 blackPawns&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   U64 blackKnights&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   U64 blackBishops&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   U64 blackRooks&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   U64 blackQueens&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   U64 blackKing&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   ...
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:0 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:22:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc2&quot;&gt;&lt;a name=&quot;Classical Board-Array&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:22 --&gt;Array&lt;/h2&gt;
For better generalization and to &lt;a class=&quot;wiki_link&quot; href=&quot;/Avoiding%20Branches&quot;&gt;avoid branches&lt;/a&gt;, one may encapsulate &lt;a class=&quot;wiki_link&quot; href=&quot;/Array&quot;&gt;arrays&lt;/a&gt; of bitboards. For instance, inside the &lt;a class=&quot;wiki_link&quot; href=&quot;/Beowulf&quot;&gt;Beowulf&lt;/a&gt; sources (sample from moves.c) one finds a lot of branches on &lt;a class=&quot;wiki_link&quot; href=&quot;/Side%20to%20move&quot;&gt;side to move&lt;/a&gt; to either fetch white or black piece bitboards, as already criticized by &lt;a class=&quot;wiki_link&quot; href=&quot;/Vincent%20Diepeveen&quot;&gt;Vincent Diepeveen&lt;/a&gt; in 2001 &lt;!-- ws:start:WikiTextRefRule:15:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.stmintz.com/ccc/index.php?id=173418&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;On Beowulf - long post&amp;lt;/a&amp;gt; by &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Vincent%20Diepeveen&amp;quot;&amp;gt;Vincent Diepeveen&amp;lt;/a&amp;gt;, &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/CCC&amp;quot;&amp;gt;CCC&amp;lt;/a&amp;gt;, April 04, 2001&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-2&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:15 --&gt; ...&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:1:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;  switch (side) {&amp;lt;br/&amp;gt;   case WHITE: tsq = B-&amp;amp;gt;whiteRooks; break;&amp;lt;br/&amp;gt;   case BLACK: tsq = B-&amp;amp;gt;blackRooks; break;&amp;lt;br/&amp;gt;  }&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;  &lt;span class=&quot;kw1&quot;&gt;switch&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;side&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; WHITE&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; tsq &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; B&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt;whiteRooks&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; BLACK&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; tsq &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; B&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt;blackRooks&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:1 --&gt;.. where an indexed access with appropriate defined {0,1} color range for the side to move would avoid those branches, per piece-kind, ...&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:2:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;  tsq = B-&amp;amp;gt;rooks[side];&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;  tsq &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; B&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt;rooks&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;side&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:2 --&gt;... or over all piece-kinds, ...&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:3:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;  tsq = B-&amp;amp;gt;pieceBB[nWhiteRook + side];&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;  tsq &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; B&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt;pieceBB&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;nWhiteRook &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; side&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:3 --&gt;... for instance, on &lt;a class=&quot;wiki_link&quot; href=&quot;/x86&quot;&gt;x86&lt;/a&gt; or &lt;a class=&quot;wiki_link&quot; href=&quot;/x86-64&quot;&gt;x86-64&lt;/a&gt;, utilizing its &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/X86#Addressing_modes&quot; rel=&quot;nofollow&quot;&gt;addressing modes&lt;/a&gt; with base- and scalable &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/Index_register&quot; rel=&quot;nofollow&quot;&gt;index register&lt;/a&gt;, plus displacement:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:4:
&amp;lt;pre class=&amp;quot;text&amp;quot;&amp;gt;   ; rsi pointer to structure, rcx side (0 == White, 1 == Black)&amp;lt;br/&amp;gt;   mov  rax, qword ptr [rsi + rookOffset + 8*rcx] &amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.text  {font-family:monospace;}
.text .imp {font-weight: bold; color: red;}
.text span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;text&quot;&gt;   ; rsi pointer to structure, rcx side (0 == White, 1 == Black)
   mov  rax, qword ptr [rsi + rookOffset + 8*rcx] &lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:4 --&gt;&lt;!-- ws:start:WikiTextAnchorRule:48:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@Occupancy&amp;quot; title=&amp;quot;Anchor: Occupancy&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;Occupancy&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:48 --&gt;&lt;br /&gt;
Likely one also keeps some often used redundant &lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#Union&quot;&gt;union&lt;/a&gt; sets like white and black pieces, &lt;a class=&quot;wiki_link&quot; href=&quot;/Occupancy&quot;&gt;occupancy&lt;/a&gt; or their complement, the empty squares.&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:5:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;class CBoard&amp;lt;br/&amp;gt;{&amp;lt;br/&amp;gt;   U64 pieceBB[14];&amp;lt;br/&amp;gt;   U64 emptyBB;&amp;lt;br/&amp;gt;   U64 occupiedBB;&amp;lt;br/&amp;gt;   ...&amp;lt;br/&amp;gt;public:&amp;lt;br/&amp;gt;   enum enumPiece&amp;lt;br/&amp;gt;   {&amp;lt;br/&amp;gt;      nWhite,     // any white piece&amp;lt;br/&amp;gt;      nBlack,     // any black piece&amp;lt;br/&amp;gt;      nWhitePawn, // white Pawn&amp;lt;br/&amp;gt;      nBlackPawn, // white Pawn&amp;lt;br/&amp;gt;      ...&amp;lt;br/&amp;gt;   };&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;   U64 getPieceSet(PieceType pt) const {return pieceBB[pt];}&amp;lt;br/&amp;gt;   U64 getWhitePawns() const {return pieceBB[nWhitePawn];}&amp;lt;br/&amp;gt;   ...&amp;lt;br/&amp;gt;   U64 getPawns(ColorType ct) const {return pieceBB[nWhitePawn + ct];}&amp;lt;br/&amp;gt;   ...&amp;lt;br/&amp;gt;};&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; CBoard
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   U64 pieceBB&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   U64 emptyBB&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   U64 occupiedBB&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   ...
&lt;span class=&quot;kw2&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt;
   &lt;span class=&quot;kw2&quot;&gt;enum&lt;/span&gt; enumPiece
   &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
      nWhite,     &lt;span class=&quot;co1&quot;&gt;// any white piece&lt;/span&gt;
      nBlack,     &lt;span class=&quot;co1&quot;&gt;// any black piece&lt;/span&gt;
      nWhitePawn, &lt;span class=&quot;co1&quot;&gt;// white Pawn&lt;/span&gt;
      nBlackPawn, &lt;span class=&quot;co1&quot;&gt;// white Pawn&lt;/span&gt;
      ...
   &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
   U64 getPieceSet&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;PieceType pt&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; pieceBB&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;pt&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
   U64 getWhitePawns&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; pieceBB&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;nWhitePawn&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
   ...
   &lt;span class=&quot;me1&quot;&gt;U64&lt;/span&gt; getPawns&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ColorType ct&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; pieceBB&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;nWhitePawn &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; ct&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
   ...
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:5 --&gt;On initialization and update of the bitboards, see &lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#UpdateByMove&quot;&gt;general setwise operations&lt;/a&gt;.&lt;br /&gt;
&lt;!-- ws:start:WikiTextAnchorRule:49:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@SixTwo&amp;quot; title=&amp;quot;Anchor: SixTwo&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;SixTwo&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:49 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:24:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc3&quot;&gt;&lt;a name=&quot;Denser Board&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:24 --&gt;Denser Board&lt;/h1&gt;
A common alternative to reduce the size of the board structure is to keep two color bitboards and six color independent piece bitboards, which are the &lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#Union&quot;&gt;union&lt;/a&gt; of black and white respective pieces, i.e. all queens. This space saving requires a cheap &lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#Intersection&quot;&gt;intersection&lt;/a&gt; of a color and a piece bitboard to get the required pieces of that color only. &lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:6:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;class CBoard&amp;lt;br/&amp;gt;{&amp;lt;br/&amp;gt;   U64 pieceBB[8];&amp;lt;br/&amp;gt;public:&amp;lt;br/&amp;gt;   enum enumPiece&amp;lt;br/&amp;gt;   {&amp;lt;br/&amp;gt;      nWhite,     // any white piece&amp;lt;br/&amp;gt;      nBlack,     // any black piece&amp;lt;br/&amp;gt;      nPawn,&amp;lt;br/&amp;gt;      nKnight,&amp;lt;br/&amp;gt;      nBishop,&amp;lt;br/&amp;gt;      nRook,&amp;lt;br/&amp;gt;      nQueen,&amp;lt;br/&amp;gt;      nKing&amp;lt;br/&amp;gt;   };&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;   U64 getPieceSet(PieceType pt) const {return pieceBB[pieceCode(pt)] &amp;amp;amp; pieceBB[colorCode(pt)];}&amp;lt;br/&amp;gt;   U64 getWhitePawns() const {return pieceBB[nPawn] &amp;amp;amp; pieceBB[nWhite];}&amp;lt;br/&amp;gt;   ...&amp;lt;br/&amp;gt;   U64 getPawns(ColorType ct) const {return pieceBB[nPawn] &amp;amp;amp; pieceBB[ct];}&amp;lt;br/&amp;gt;   ...&amp;lt;br/&amp;gt;};&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; CBoard
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   U64 pieceBB&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt;
   &lt;span class=&quot;kw2&quot;&gt;enum&lt;/span&gt; enumPiece
   &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
      nWhite,     &lt;span class=&quot;co1&quot;&gt;// any white piece&lt;/span&gt;
      nBlack,     &lt;span class=&quot;co1&quot;&gt;// any black piece&lt;/span&gt;
      nPawn,
      nKnight,
      nBishop,
      nRook,
      nQueen,
      nKing
   &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
   U64 getPieceSet&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;PieceType pt&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; pieceBB&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;pieceCode&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pt&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; pieceBB&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;colorCode&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pt&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
   U64 getWhitePawns&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; pieceBB&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;nPawn&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; pieceBB&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;nWhite&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
   ...
   &lt;span class=&quot;me1&quot;&gt;U64&lt;/span&gt; getPawns&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ColorType ct&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; pieceBB&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;nPawn&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; pieceBB&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;ct&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
   ...
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:6 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:26:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc4&quot;&gt;&lt;a name=&quot;See also&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:26 --&gt;See also&lt;/h1&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Color%20Flipping&quot;&gt;Color Flipping&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Quad-Bitboards&quot;&gt;Quad-Bitboards&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:28:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc5&quot;&gt;&lt;a name=&quot;Forum Posts&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:28 --&gt;Forum Posts&lt;/h1&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://groups.google.com/group/rec.games.chess.computer/browse_frm/thread/834fa3c273fafffe/cab7c12ea99e9a35&quot; rel=&quot;nofollow&quot;&gt;Bit Board Bonkers??&lt;/a&gt; by Dave, &lt;a class=&quot;wiki_link&quot; href=&quot;/Computer%20Chess%20Forums&quot;&gt;rec.games.chess.computer&lt;/a&gt;, July 28, 1997&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=405590&quot; rel=&quot;nofollow&quot;&gt;Bitboard board representation&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Eric%20Oldre&quot;&gt;Eric Oldre&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, January 13, 2005&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=17138&quot; rel=&quot;nofollow&quot;&gt;BitBoard representations of the board&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Uri%20Blass&quot;&gt;Uri Blass&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, October 14, 2007&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=47917&quot; rel=&quot;nofollow&quot;&gt;Decision concerning board representation&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Piotr%20Lopusiewicz&quot;&gt;Piotr Lopusiewicz&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, May 05, 2013&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:30:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc6&quot;&gt;&lt;a name=&quot;External Links&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:30 --&gt;External Links&lt;/h1&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Videos#GlennGould&quot;&gt;Glenn Gould&lt;/a&gt; - &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/Paul_Hindemith&quot; rel=&quot;nofollow&quot;&gt;Paul Hindemith&lt;/a&gt;, Piano Sonata No. 3 - Fugue, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/YouTube&quot; rel=&quot;nofollow&quot;&gt;YouTube&lt;/a&gt; Video&lt;br /&gt;
&lt;!-- ws:start:WikiTextMediaRule:16:&amp;lt;img src=&amp;quot;https://www.wikispaces.com/site/embedthumbnail/custom/24814126?h=0&amp;amp;w=0&amp;quot; class=&amp;quot;WikiMedia WikiMediaCustom&amp;quot; id=&amp;quot;wikitext@@media@@type=&amp;amp;quot;custom&amp;amp;quot; key=&amp;amp;quot;24814126&amp;amp;quot;&amp;quot; title=&amp;quot;Custom Media&amp;quot;/&amp;gt; --&gt;&lt;iframe width=&quot;480&quot; height=&quot;360&quot; src=&quot;//www.youtube.com/embed/iTpAIEp6DUo?rel=0&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;!-- ws:end:WikiTextMediaRule:16 --&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:32:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc7&quot;&gt;&lt;a name=&quot;References&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:32 --&gt;References&lt;/h1&gt;
&lt;!-- ws:start:WikiTextReferencesRule:150:&amp;amp;lt;references /&amp;amp;gt; --&gt;&lt;ol class=&quot;references&quot;&gt;
&lt;li id=&quot;cite_note-1&quot;&gt;&lt;a href=&quot;#cite_ref-1&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.onjava.com/pub/a/onjava/2005/02/02/bitsets.html&quot; rel=&quot;nofollow&quot;&gt;Bitwise Optimization in Java: Bitfields, Bitboards, and Beyond&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Glen%20Pepicelli&quot;&gt;Glen Pepicelli&lt;/a&gt;, 2005, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/O%27Reilly_Media&quot; rel=&quot;nofollow&quot;&gt;O&#039;Reilly&#039;s&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://onjava.com/&quot; rel=&quot;nofollow&quot;&gt;OnJava.com&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;cite_note-2&quot;&gt;&lt;a href=&quot;#cite_ref-2&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=173418&quot; rel=&quot;nofollow&quot;&gt;On Beowulf - long post&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Vincent%20Diepeveen&quot;&gt;Vincent Diepeveen&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, April 04, 2001&lt;/li&gt;
&lt;/ol&gt;&lt;!-- ws:end:WikiTextReferencesRule:150 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:34:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc8&quot;&gt;&lt;a name=&quot;What links here?&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:34 --&gt;What links here?&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextIncludeRule:07:&amp;lt;img src=&amp;quot;https://www.wikispaces.com/site/embedthumbnail/include/backlinks?w=200&amp;amp;h=100&amp;quot; class=&amp;quot;WikiMedia WikiMediaInclude&amp;quot; id=&amp;quot;wikitext@@include@@page=&amp;amp;quot;Bitboard Board-Definition&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;40&amp;amp;quot;&amp;quot; title=&amp;quot;Include backlinks: page=&amp;amp;quot;Bitboard Board-Definition&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;40&amp;amp;quot;&amp;quot; /&amp;gt; --&gt;&lt;div class=&quot;includeBody-Bitboard_Board-Definition includeBody-Bitboard%20Board-Definition includeBody&quot;&gt;&lt;table class=&quot;includeBacklinks&quot;&gt;
  &lt;thead&gt;
    &lt;tr class=&quot;includeBacklinksHeading&quot;&gt;
      &lt;th class=&quot;includeBacklinksPageHeading&quot;&gt;Page&lt;/th&gt;
      &lt;th class=&quot;includeBacklinksDateHeading&quot;&gt;Date Edited&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
    &lt;tbody&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/AlphaZero&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;AlphaZero&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Feb 10, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Array&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Array&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 1, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Bitboard+Board-Definition&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Bitboard Board-Definition&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jun 23, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Bitboards&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Bitboards&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 14, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Checks+and+Pinned+Pieces+%28Bitboards%29&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Checks and Pinned Pieces (Bitboards)&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Aug 14, 2013&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Chess+0.5&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Chess 0.5&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 20, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Color+Flipping&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Color Flipping&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;May 17, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Counter&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Counter&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 13, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Demolito&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Demolito&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 1, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Efficient+Generation+of+Sliding+Piece+Attacks&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Efficient Generation of Sliding Piece Attacks&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 5, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/General+Setwise+Operations&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;General Setwise Operations&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Feb 25, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Incremental+Updates&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Incremental Updates&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Sep 6, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Initial+Position&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Initial Position&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Apr 14, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/King+Pattern&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;King Pattern&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 15, 2013&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Knight+Pattern&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Knight Pattern&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Feb 23, 2015&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Lachex&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Lachex&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 7, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Make+Move&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Make Move&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 2, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Material+Tables&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Material Tables&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;May 5, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Occupancy&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Occupancy&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Sep 19, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Pieces&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Pieces&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Feb 19, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Quad-Bitboards&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Quad-Bitboards&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 30, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Rodent&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Rodent&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 11, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Rotated+Bitboards&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Rotated Bitboards&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 7, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/RuyDos&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;RuyDos&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Feb 17, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/SEE+-+The+Swap+Algorithm&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;SEE - The Swap Algorithm&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jun 5, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Simona+Tancig&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Simona Tancig&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 7, 2012&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Sliding+Piece+Attacks&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Sliding Piece Attacks&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;May 27, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Spector&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Spector&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 11, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Square+Attacked+By&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Square Attacked By&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 20, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Sungorus&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Sungorus&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Apr 11, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Teki&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Teki&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 29, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Tunguska&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Tunguska&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Sep 16, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/WyldChess&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;WyldChess&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 10, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/X-ray+Attacks+%28Bitboards%29&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;X-ray Attacks (Bitboards)&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 31, 2015&lt;/td&gt;
    &lt;/tr&gt;
      &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;&lt;!-- ws:end:WikiTextIncludeRule:07 --&gt;&lt;br /&gt;
&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Bitboards&quot;&gt;Up one Level&lt;/a&gt;&lt;/strong&gt;</description>
          </item>
    <item>
      <title>Bitboards</title>
      <link>https://chessprogramming.wikispaces.com/Bitboards</link>
      <dc:creator>GerdIsenberg</dc:creator>
      <guid isPermaLink="true">https://chessprogramming.wikispaces.com/Bitboards</guid>
      <comments>https://chessprogramming.wikispaces.com/page/messages/Bitboards</comments>
      <pubDate>Tue, 14 Nov 2017 20:13:35 GMT</pubDate>
      <description>&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Home&quot;&gt;Home&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Board%20Representation&quot;&gt;Board Representation&lt;/a&gt; * Bitboards&lt;/strong&gt;&lt;br /&gt;


&lt;table class=&quot;wiki_table&quot;&gt;
    &lt;tr&gt;
        &lt;td&gt;&lt;!-- ws:start:WikiTextLocalImageRule:432:&amp;lt;a href=&amp;quot;http://www.chgs.umn.edu/museum/responses/bak/chess.html&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;/file/view/BoardsMeeting.jpg/157858055/282x303/BoardsMeeting.jpg&amp;quot; alt=&amp;quot;&amp;quot; title=&amp;quot;&amp;quot; style=&amp;quot;height: 303px; width: 282px;&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt; --&gt;&lt;a href=&quot;http://www.chgs.umn.edu/museum/responses/bak/chess.html&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;/file/view/BoardsMeeting.jpg/157858055/282x303/BoardsMeeting.jpg&quot; alt=&quot;BoardsMeeting.jpg&quot; title=&quot;BoardsMeeting.jpg&quot; style=&quot;height: 303px; width: 282px;&quot; /&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextLocalImageRule:432 --&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td rowspan=&quot;2&quot;&gt;&lt;strong&gt;Bitboards&lt;/strong&gt;,&lt;br /&gt;
also called bitsets or bitmaps, are among other things used to represent the &lt;a class=&quot;wiki_link&quot; href=&quot;/Chessboard&quot;&gt;board&lt;/a&gt; inside a chess program in a &lt;strong&gt;piece centric&lt;/strong&gt; manner. Bitboards, are in essence, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/Finite_set&quot; rel=&quot;nofollow&quot;&gt;finite sets&lt;/a&gt; of up to &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/64_%28number%29&quot; rel=&quot;nofollow&quot;&gt;64&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/Element_%28mathematics%29&quot; rel=&quot;nofollow&quot;&gt;elements&lt;/a&gt; - all the &lt;a class=&quot;wiki_link&quot; href=&quot;/Squares&quot;&gt;squares&lt;/a&gt; of a &lt;a class=&quot;wiki_link&quot; href=&quot;/Chessboard&quot;&gt;chessboard&lt;/a&gt;, one &lt;a class=&quot;wiki_link&quot; href=&quot;/Bit&quot;&gt;bit&lt;/a&gt; per square. Other board &lt;a class=&quot;wiki_link&quot; href=&quot;/Games&quot;&gt;games&lt;/a&gt; with greater board sizes may be use set-wise representations as well &lt;!-- ws:start:WikiTextRefRule:10:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Reijer%20Grimbergen&amp;quot;&amp;gt;Reijer Grimbergen&amp;lt;/a&amp;gt; (&amp;lt;strong&amp;gt;2007&amp;lt;/strong&amp;gt;). &amp;lt;em&amp;gt;Using Bitboards for &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Move%20Generation&amp;quot;&amp;gt;Move Generation&amp;lt;/a&amp;gt; in &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Shogi&amp;quot;&amp;gt;Shogi&amp;lt;/a&amp;gt;&amp;lt;/em&amp;gt;. &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/ICGA%20Journal#30_1&amp;quot;&amp;gt;ICGA Journal, Vol. 30, No. 1&amp;lt;/a&amp;gt;, &amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www2.teu.ac.jp/gamelab/RESEARCH/ICGAJournal2007.pdfICGAJournal2007.pdf&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;pdf&amp;lt;/a&amp;gt;&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-1&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:10 --&gt;, but classical chess has the advantage that one &lt;a class=&quot;wiki_link&quot; href=&quot;/Quad%20Word&quot;&gt;64-bit word&lt;/a&gt; or register covers the whole board. Even more bitboard friendly is &lt;a class=&quot;wiki_link&quot; href=&quot;/Checkers&quot;&gt;Checkers&lt;/a&gt; with 32-bit bitboards and less &lt;a class=&quot;wiki_link&quot; href=&quot;/Pieces#PieceTypeCoding&quot;&gt;piece-types&lt;/a&gt; than chess &lt;!-- ws:start:WikiTextRefRule:13:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.3dkingdoms.com/checkers/bitboards.htm&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Checker Bitboards Tutorial&amp;lt;/a&amp;gt; by &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Jonathan%20Kreuzer&amp;quot;&amp;gt;Jonathan Kreuzer&amp;lt;/a&amp;gt;&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-2&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:13 --&gt; &lt;!-- ws:start:WikiTextRefRule:16:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.talkchess.com/forum/viewtopic.php?t=64487&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Checkers Bitboard representation&amp;lt;/a&amp;gt; by Pranav Deshpande, &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/CCC&amp;quot;&amp;gt;CCC&amp;lt;/a&amp;gt;, July 02, 2017&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-3&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:16 --&gt; .&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Arts#Bak&quot;&gt;Samuel Bak&lt;/a&gt; - Boards Meeting &lt;!-- ws:start:WikiTextRefRule:20:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.chgs.umn.edu/museum/responses/bak/chess.html&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Chess in the Art of Samuel Bak&amp;lt;/a&amp;gt;, &amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.chgs.umn.edu/&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Center for Holocaust &amp;amp;amp; Genocide Studies&amp;lt;/a&amp;gt;, &amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://en.wikipedia.org/wiki/University_of_Minnesota&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;University of Minnesota&amp;lt;/a&amp;gt;&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-4&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:20 --&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
    &lt;/tr&gt;
&lt;/table&gt;

&lt;!-- ws:start:WikiTextTocRule:155:&amp;lt;img id=&amp;quot;wikitext@@toc@@normal&amp;quot; class=&amp;quot;WikiMedia WikiMediaToc&amp;quot; title=&amp;quot;Table of Contents&amp;quot; src=&amp;quot;/site/embedthumbnail/toc/normal?w=225&amp;amp;h=100&amp;quot;/&amp;gt; --&gt;&lt;div id=&quot;toc&quot;&gt;&lt;h1 class=&quot;nopad&quot;&gt;Table of Contents&lt;/h1&gt;&lt;!-- ws:end:WikiTextTocRule:155 --&gt;&lt;!-- ws:start:WikiTextTocRule:156: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#The Board of Sets&quot;&gt;The Board of Sets&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:156 --&gt;&lt;!-- ws:start:WikiTextTocRule:157: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Bitboard Basics&quot;&gt;Bitboard Basics&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:157 --&gt;&lt;!-- ws:start:WikiTextTocRule:158: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Bitboard Basics-General Bitboard Techniques&quot;&gt;General Bitboard Techniques&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:158 --&gt;&lt;!-- ws:start:WikiTextTocRule:159: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Bitboard Basics-Pattern and Attacks&quot;&gt;Pattern and Attacks&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:159 --&gt;&lt;!-- ws:start:WikiTextTocRule:160: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Bitboard Basics-Move Generation Issues&quot;&gt;Move Generation Issues&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:160 --&gt;&lt;!-- ws:start:WikiTextTocRule:161: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Bitboard Basics-Miscellaneous&quot;&gt;Miscellaneous&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:161 --&gt;&lt;!-- ws:start:WikiTextTocRule:162: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Bitboard Basics-Defining Bitboards&quot;&gt;Defining Bitboards&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:162 --&gt;&lt;!-- ws:start:WikiTextTocRule:163: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Bitboard-History&quot;&gt;Bitboard-History&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:163 --&gt;&lt;!-- ws:start:WikiTextTocRule:164: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Analysis&quot;&gt;Analysis&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:164 --&gt;&lt;!-- ws:start:WikiTextTocRule:165: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Publications&quot;&gt;Publications&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:165 --&gt;&lt;!-- ws:start:WikiTextTocRule:166: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Publications-1970 ...&quot;&gt;1970 ...&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:166 --&gt;&lt;!-- ws:start:WikiTextTocRule:167: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Publications-1980 ...&quot;&gt;1980 ...&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:167 --&gt;&lt;!-- ws:start:WikiTextTocRule:168: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Publications-1990 ...&quot;&gt;1990 ...&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:168 --&gt;&lt;!-- ws:start:WikiTextTocRule:169: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Publications-2000 ...&quot;&gt;2000 ...&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:169 --&gt;&lt;!-- ws:start:WikiTextTocRule:170: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Publications-2010 ...&quot;&gt;2010 ...&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:170 --&gt;&lt;!-- ws:start:WikiTextTocRule:171: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Forum Posts&quot;&gt;Forum Posts&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:171 --&gt;&lt;!-- ws:start:WikiTextTocRule:172: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Forum Posts-1994&quot;&gt;1994&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:172 --&gt;&lt;!-- ws:start:WikiTextTocRule:173: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Forum Posts-1995 ...&quot;&gt;1995 ...&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:173 --&gt;&lt;!-- ws:start:WikiTextTocRule:174: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Forum Posts-2000 ...&quot;&gt;2000 ...&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:174 --&gt;&lt;!-- ws:start:WikiTextTocRule:175: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Forum Posts-2005 ...&quot;&gt;2005 ...&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:175 --&gt;&lt;!-- ws:start:WikiTextTocRule:176: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Forum Posts-2010 ...&quot;&gt;2010 ...&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:176 --&gt;&lt;!-- ws:start:WikiTextTocRule:177: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Forum Posts-2015 ...&quot;&gt;2015 ...&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:177 --&gt;&lt;!-- ws:start:WikiTextTocRule:178: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Viewer &amp;amp; Calculator&quot;&gt;Viewer &amp;amp; Calculator&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:178 --&gt;&lt;!-- ws:start:WikiTextTocRule:179: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#External Links&quot;&gt;External Links&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:179 --&gt;&lt;!-- ws:start:WikiTextTocRule:180: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#References&quot;&gt;References&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:180 --&gt;&lt;!-- ws:start:WikiTextTocRule:181: --&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:181 --&gt;&lt;!-- ws:start:WikiTextHeadingRule:105:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc0&quot;&gt;&lt;a name=&quot;The Board of Sets&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:105 --&gt;The Board of Sets&lt;/h1&gt;
 To &lt;a class=&quot;wiki_link&quot; href=&quot;/Board%20Representation&quot;&gt;represent the board&lt;/a&gt; we typically need one bitboard for each &lt;a class=&quot;wiki_link&quot; href=&quot;/Pieces#PieceTypeCoding&quot;&gt;piece-type&lt;/a&gt; and &lt;a class=&quot;wiki_link&quot; href=&quot;/Color&quot;&gt;color&lt;/a&gt; - likely encapsulated inside a class or structure, or as an &lt;a class=&quot;wiki_link&quot; href=&quot;/Array&quot;&gt;array&lt;/a&gt; of bitboards as part of a position object. A one-bit inside a bitboard implies the existence of a piece of this piece-type on a certain square - one to one associated by the bit-position.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Square%20Mapping%20Considerations&quot;&gt;Square Mapping Considerations&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Bitboard%20Board-Definition&quot;&gt;Standard Board-Definition&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:107:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc1&quot;&gt;&lt;a name=&quot;Bitboard Basics&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:107 --&gt;Bitboard Basics&lt;/h1&gt;
 Of course bitboards are not only about the existence of pieces - it is a general purpose, &lt;strong&gt;set-wise&lt;/strong&gt; data-structure fitting in one 64-bit register. For example, a bitboard can represent things like attack- and defend sets, move-target sets and so on.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:109:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc2&quot;&gt;&lt;a name=&quot;Bitboard Basics-General Bitboard Techniques&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:109 --&gt;General Bitboard Techniques&lt;/h2&gt;
 The fundamental bitboard basics.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations&quot;&gt;General Setwise Operations&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Population%20Count&quot;&gt;Population Count&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/BitScan&quot;&gt;BitScan&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Flipping%20Mirroring%20and%20Rotating&quot;&gt;Flipping Mirroring and Rotating&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Fill%20Algorithms&quot;&gt;Fill Algorithms&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;!-- ws:start:WikiTextAnchorRule:182:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@Pattern&amp;quot; title=&amp;quot;Anchor: Pattern&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;Pattern&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:182 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:111:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc3&quot;&gt;&lt;a name=&quot;Bitboard Basics-Pattern and Attacks&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:111 --&gt;Pattern and Attacks&lt;/h2&gt;
 This is basically about chess, how to calculate attack-sets and various pattern for &lt;a class=&quot;wiki_link&quot; href=&quot;/Evaluation&quot;&gt;evaluation&lt;/a&gt; and &lt;a class=&quot;wiki_link&quot; href=&quot;/Move%20Generation&quot;&gt;move generation&lt;/a&gt; purposes.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Pattern%20and%20Properties&quot;&gt;Pawn Pattern and Properties&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Knight%20Pattern&quot;&gt;Knight Pattern&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/King%20Pattern&quot;&gt;King Pattern&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Sliding%20Piece%20Attacks&quot;&gt;Sliding Piece Attacks&lt;/a&gt; including &lt;a class=&quot;wiki_link&quot; href=&quot;/Rotated%20Bitboards&quot;&gt;rotated&lt;/a&gt; and &lt;a class=&quot;wiki_link&quot; href=&quot;/Magic%20Bitboards&quot;&gt;magic bitboards&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Square%20Attacked%20By&quot;&gt;Square Attacked By&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/X-ray%20Attacks%20%28Bitboards%29&quot;&gt;X-ray Attacks&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Checks%20and%20Pinned%20Pieces%20%28Bitboards%29&quot;&gt;Checks and Pinned Pieces&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Design%20Principles&quot;&gt;Design Principles&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:113:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc4&quot;&gt;&lt;a name=&quot;Bitboard Basics-Move Generation Issues&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:113 --&gt;Move Generation Issues&lt;/h2&gt;
 Bitboard aspects on &lt;a class=&quot;wiki_link&quot; href=&quot;/Move%20Generation&quot;&gt;move generation&lt;/a&gt; and &lt;a class=&quot;wiki_link&quot; href=&quot;/Static%20Exchange%20Evaluation&quot;&gt;static exchange evaluation&lt;/a&gt; (SEE).&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Bitboard%20Serialization&quot;&gt;Bitboard Serialization&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Pieces%20versus%20Directions&quot;&gt;Pieces versus Directions&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/DirGolem&quot;&gt;DirGolem&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/SEE%20-%20The%20Swap%20Algorithm&quot;&gt;SEE - The Swap Algorithm&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Attack%20and%20Defend%20Maps&quot;&gt;Attack and Defend Maps&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:115:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc5&quot;&gt;&lt;a name=&quot;Bitboard Basics-Miscellaneous&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:115 --&gt;Miscellaneous&lt;/h2&gt;
 &lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Backtracking#8QinBitboards&quot;&gt;Backtracking - Eight Queens puzzle with Bitboards&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/De%20Bruijn%20Sequence%20Generator&quot;&gt;De Bruijn Sequence Generator&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Quad-Bitboards&quot;&gt;Quad-Bitboards&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Traversing%20Subsets%20of%20a%20Set&quot;&gt;Traversing Subsets of a Set&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextAnchorRule:183:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@DefiningBitboards&amp;quot; title=&amp;quot;Anchor: DefiningBitboards&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;DefiningBitboards&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:183 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:117:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc6&quot;&gt;&lt;a name=&quot;Bitboard Basics-Defining Bitboards&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:117 --&gt;Defining Bitboards&lt;/h2&gt;
 &lt;em&gt;To be aware of their scalar 64-bit origin, we use so far a type defined unsigned integer U64 in our &lt;a class=&quot;wiki_link&quot; href=&quot;/C&quot;&gt;C&lt;/a&gt; or &lt;a class=&quot;wiki_link&quot; href=&quot;/Cpp&quot;&gt;C++&lt;/a&gt; source snippets, the scalar 64-bit long in &lt;a class=&quot;wiki_link&quot; href=&quot;/Java&quot;&gt;Java&lt;/a&gt;. Feel free to define a distinct type or wrap U64 into classes for better abstraction and type-safety during compile time. The macro C64 will append a suffix to 64-bit constants as required by some compilers&lt;/em&gt;:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:0:
&amp;lt;pre class=&amp;quot;text&amp;quot;&amp;gt;typedef unsigned __int64 U64;    // for the old microsoft compilers&amp;lt;br/&amp;gt;typedef unsigned long long  U64; // supported by MSC 13.00+ and C99&amp;lt;br/&amp;gt;#define C64(constantU64) constantU64##ULL&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.text  {font-family:monospace;}
.text .imp {font-weight: bold; color: red;}
.text span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;text&quot;&gt;typedef unsigned __int64 U64;    // for the old microsoft compilers
typedef unsigned long long  U64; // supported by MSC 13.00+ and C99
#define C64(constantU64) constantU64##ULL&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:0 --&gt;&lt;!-- ws:start:WikiTextAnchorRule:184:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@BitboardHistory&amp;quot; title=&amp;quot;Anchor: BitboardHistory&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;BitboardHistory&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:184 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:119:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc7&quot;&gt;&lt;a name=&quot;Bitboard-History&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:119 --&gt;Bitboard-History&lt;/h1&gt;
 The general approach of &lt;a class=&quot;wiki_link&quot; href=&quot;/Mikhail%20R.%20Shura-Bura#Bitsets&quot;&gt;bitsets&lt;/a&gt; was proposed by &lt;a class=&quot;wiki_link&quot; href=&quot;/Mikhail%20R.%20Shura-Bura&quot;&gt;Mikhail R. Shura-Bura&lt;/a&gt; in 1952 &lt;!-- ws:start:WikiTextRefRule:29:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://en.wikipedia.org/wiki/Lazar_Lyusternik&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Lazar A. Lyusternik&amp;lt;/a&amp;gt;, &amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.mathnet.ru/php/person.phtml?personid=30351&amp;amp;amp;option_lang=eng&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Aleksandr A. Abramov&amp;lt;/a&amp;gt;, &amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://en.wikipedia.org/wiki/Victor_Shestakov&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Victor I. Shestakov&amp;lt;/a&amp;gt;, &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Mikhail%20R.%20Shura-Bura&amp;quot;&amp;gt;Mikhail R. Shura-Bura&amp;lt;/a&amp;gt; (&amp;lt;strong&amp;gt;1952&amp;lt;/strong&amp;gt;). &amp;lt;em&amp;gt;Programming for High-Speed Electronic Computers&amp;lt;/em&amp;gt;. (Программирование для электронных счетных машин)&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-5&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:29 --&gt; &lt;!-- ws:start:WikiTextRefRule:43:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Mathematician#Ershov&amp;quot;&amp;gt;Andrey Ershov&amp;lt;/a&amp;gt;, &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Mikhail%20R.%20Shura-Bura&amp;quot;&amp;gt;Mikhail R. Shura-Bura&amp;lt;/a&amp;gt; (&amp;lt;strong&amp;gt;1980&amp;lt;/strong&amp;gt;). &amp;lt;em&amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://ershov.iis.nsk.su/archive/eaindex.asp?lang=2&amp;amp;amp;gid=910&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;The Early Development of Programming in the USSR&amp;lt;/a&amp;gt;&amp;lt;/em&amp;gt;. in &amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://en.wikipedia.org/wiki/Nicholas_C._Metropolis&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Nicholas C. Metropolis&amp;lt;/a&amp;gt; (ed.) &amp;lt;em&amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://dl.acm.org/citation.cfm?id=578384&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;A History of Computing in the Twentieth Century&amp;lt;/a&amp;gt;&amp;lt;/em&amp;gt;. &amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://en.wikipedia.org/wiki/Academic_Press&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Academic Press&amp;lt;/a&amp;gt;, &amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://ershov.iis.nsk.su/archive/eaimage.asp?did=28792&amp;amp;amp;fileid=173670&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;preprint pp. 43&amp;lt;/a&amp;gt;&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-6&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-6&quot;&gt;[6]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:43 --&gt;. The bitboard method for holding a board game appears to have been invented also in 1952 by &lt;a class=&quot;wiki_link&quot; href=&quot;/Christopher%20Strachey&quot;&gt;Christopher Strachey&lt;/a&gt; using White, Black and King bitboards in his checkers program for the &lt;a class=&quot;wiki_link&quot; href=&quot;/Ferranti%20Mark%201&quot;&gt;Ferranti Mark 1&lt;/a&gt; &lt;!-- ws:start:WikiTextRefRule:47:&amp;amp;lt;ref&amp;amp;gt;On &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Bitboards&amp;quot;&amp;gt;Bitboards&amp;lt;/a&amp;gt; for White, Black and Kings to &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Board%20Representation&amp;quot;&amp;gt;represent the checkers board&amp;lt;/a&amp;gt;, see &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Ferranti%20Mark%201#DavidLinkVideo&amp;quot;&amp;gt;David Link Video&amp;lt;/a&amp;gt; at 1:04:02&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-7&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-7&quot;&gt;[7]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:47 --&gt;, and in the mid 1950&#039;s by &lt;a class=&quot;wiki_link&quot; href=&quot;/Arthur%20Samuel&quot;&gt;Arthur Samuel&lt;/a&gt; in his checkers program as well. In computer chess, bitboards were first described by &lt;a class=&quot;wiki_link&quot; href=&quot;/Georgy%20Adelson-Velsky&quot;&gt;Georgy Adelson-Velsky&lt;/a&gt; et al. in 1967 &lt;!-- ws:start:WikiTextRefRule:51:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://groups.google.com/group/rec.games.chess/browse_frm/thread/0e3a93f45ff07d31#&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Early Reference on Bit-Boards&amp;lt;/a&amp;gt; by &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Tony%20Warnock&amp;quot;&amp;gt;Tony Warnock&amp;lt;/a&amp;gt; from &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Computer%20Chess%20Forums&amp;quot;&amp;gt;rec.games.chess&amp;lt;/a&amp;gt;, October 29, 1994&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-8&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-8&quot;&gt;[8]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:51 --&gt; , reprinted 1970 &lt;!-- ws:start:WikiTextRefRule:63:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Georgy%20Adelson-Velsky&amp;quot;&amp;gt;Georgy Adelson-Velsky&amp;lt;/a&amp;gt;, &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Vladimir%20Arlazarov&amp;quot;&amp;gt;Vladimir Arlazarov&amp;lt;/a&amp;gt;, &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Alexander%20Bitman&amp;quot;&amp;gt;Alexander Bitman&amp;lt;/a&amp;gt;, &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Alexander%20Zhivotovsky&amp;quot;&amp;gt;Alexander Zhivotovsky&amp;lt;/a&amp;gt; and &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Anatoly%20Uskov&amp;quot;&amp;gt;Anatoly Uskov&amp;lt;/a&amp;gt; (&amp;lt;strong&amp;gt;1970&amp;lt;/strong&amp;gt;). &amp;lt;em&amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://iopscience.iop.org/0036-0279/25/2/R07&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Programming a Computer to Play Chess&amp;lt;/a&amp;gt;&amp;lt;/em&amp;gt;. &amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://iopscience.iop.org/0036-0279/25/2&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Russian Mathematical Surveys, Vol. 25&amp;lt;/a&amp;gt;, pp. 221-262.&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-9&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-9&quot;&gt;[9]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:63 --&gt; . Bitboards were used in &lt;a class=&quot;wiki_link&quot; href=&quot;/Kaissa&quot;&gt;Kaissa&lt;/a&gt; and in &lt;a class=&quot;wiki_link&quot; href=&quot;/Chess%20%28Program%29&quot;&gt;Chess&lt;/a&gt;. The invention and publication of &lt;a class=&quot;wiki_link&quot; href=&quot;/Rotated%20Bitboards&quot;&gt;Rotated Bitboards&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Robert%20Hyatt&quot;&gt;Robert Hyatt&lt;/a&gt; &lt;!-- ws:start:WikiTextRefRule:71:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Robert%20Hyatt&amp;quot;&amp;gt;Robert Hyatt&amp;lt;/a&amp;gt; (&amp;lt;strong&amp;gt;1999&amp;lt;/strong&amp;gt;). &amp;lt;em&amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.craftychess.com/hyatt/bitmaps.html&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Rotated Bitmaps, a New Twist on an Old Idea&amp;lt;/a&amp;gt;&amp;lt;/em&amp;gt;. &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/ICGA%20Journal#22_4&amp;quot;&amp;gt;ICCA Journal, Vol. 22, No. 4&amp;lt;/a&amp;gt;&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-10&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-10&quot;&gt;[10]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:71 --&gt; and &lt;a class=&quot;wiki_link&quot; href=&quot;/Peter%20Gillgasch&quot;&gt;Peter Gillgasch&lt;/a&gt; with &lt;a class=&quot;wiki_link&quot; href=&quot;/Ernst%20A.%20Heinz&quot;&gt;Ernst A. Heinz&lt;/a&gt; in the 90s was another milestone in the history of bitboards. &lt;a class=&quot;wiki_link&quot; href=&quot;/Steffan%20Westcott&quot;&gt;Steffan Westcott&#039;s&lt;/a&gt; innovations, too expensive on 32-bit &lt;a class=&quot;wiki_link&quot; href=&quot;/x86&quot;&gt;x86&lt;/a&gt; processors, should be revisited with &lt;a class=&quot;wiki_link&quot; href=&quot;/x86-64&quot;&gt;x86-64&lt;/a&gt; and &lt;a class=&quot;wiki_link&quot; href=&quot;/SIMD%20and%20SWAR%20Techniques&quot;&gt;SIMD instructions&lt;/a&gt; in mind. With the advent of fast 64-bit multiplication along with faster &lt;a class=&quot;wiki_link&quot; href=&quot;/Memory&quot;&gt;memory&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Magic%20Bitboards&quot;&gt;Magic Bitboards&lt;/a&gt; as proposed by &lt;a class=&quot;wiki_link&quot; href=&quot;/Lasse%20Hansen&quot;&gt;Lasse Hansen&lt;/a&gt; &lt;!-- ws:start:WikiTextRefRule:76:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.open-aurec.com/wbforum/viewtopic.php?t=5015&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Fast(er) bitboard move generator&amp;lt;/a&amp;gt; by &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Lasse%20Hansen&amp;quot;&amp;gt;Lasse Hansen&amp;lt;/a&amp;gt;, &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Computer%20Chess%20Forums&amp;quot;&amp;gt;Winboard Forum&amp;lt;/a&amp;gt;, June 14, &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Timeline#2006&amp;quot;&amp;gt;2006&amp;lt;/a&amp;gt;&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-11&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-11&quot;&gt;[11]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:76 --&gt; and refined by &lt;a class=&quot;wiki_link&quot; href=&quot;/Pradu%20Kannan&quot;&gt;Pradu Kannan&lt;/a&gt; &lt;!-- ws:start:WikiTextRefRule:81:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.open-aurec.com/wbforum/viewtopic.php?t=5441&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;List of magics for bitboard move generation&amp;lt;/a&amp;gt; by &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Pradu%20Kannan&amp;quot;&amp;gt;Pradu Kannan&amp;lt;/a&amp;gt;, &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Computer%20Chess%20Forums&amp;quot;&amp;gt;Winboard Forum&amp;lt;/a&amp;gt;, August 23, &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Timeline#2006&amp;quot;&amp;gt;2006&amp;lt;/a&amp;gt;&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-12&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-12&quot;&gt;[12]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:81 --&gt; have surpassed Rotated.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:121:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc8&quot;&gt;&lt;a name=&quot;Analysis&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:121 --&gt;Analysis&lt;/h1&gt;
 The use of bitboards has spawned numerous discussions about their costs and benefits. The major points to consider are:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Bitboards can have a high information density.&lt;/li&gt;&lt;li&gt;Single populated or even empty Bitboards have a low information density.&lt;/li&gt;&lt;li&gt;Bitboards are weak in answering questions like what piece if any resides on square x. One reason to keep a redundant &lt;a class=&quot;wiki_link&quot; href=&quot;/Mailbox&quot;&gt;mailbox&lt;/a&gt; board representation with some additional &lt;a class=&quot;wiki_link&quot; href=&quot;/Incremental%20Updates&quot;&gt;update&lt;/a&gt; costs during &lt;a class=&quot;wiki_link&quot; href=&quot;/Make%20Move&quot;&gt;make&lt;/a&gt;/&lt;a class=&quot;wiki_link&quot; href=&quot;/Unmake%20Move&quot;&gt;unmake&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Bitboards can operate on all squares in parallel using bitwise instructions. This is one of the main arguments used by proponents of bitboards, because it allows for a flexibility in &lt;a class=&quot;wiki_link&quot; href=&quot;/Evaluation&quot;&gt;evaluation&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Bitboards are rather handicapped on 32 bit processors, as each bitwise computation must be split into two or more instructions &lt;!-- ws:start:WikiTextRefRule:85:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.stmintz.com/ccc/index.php?id=30562&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Efficient Bitboard Implementation on 32-bit Architecture&amp;lt;/a&amp;gt; by &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Roberto%20Waldteufel&amp;quot;&amp;gt;Roberto Waldteufel&amp;lt;/a&amp;gt;, &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/CCC&amp;quot;&amp;gt;CCC&amp;lt;/a&amp;gt;, October 25, 1998&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-13&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-13&quot;&gt;[13]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:85 --&gt; . As most modern processors are now 64 bit, this point is somewhat diminished &lt;!-- ws:start:WikiTextRefRule:89:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.open-aurec.com/wbforum/viewtopic.php?f=4&amp;amp;amp;t=6651&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Speedup by bitboards&amp;lt;/a&amp;gt; by &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Onno%20Garms&amp;quot;&amp;gt;Onno Garms&amp;lt;/a&amp;gt;, &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Computer%20Chess%20Forums&amp;quot;&amp;gt;Winboard Forum&amp;lt;/a&amp;gt;, July 13, 2007&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-14&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-14&quot;&gt;[14]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:89 --&gt; .&lt;/li&gt;&lt;li&gt;Bitboards often rely on &lt;a class=&quot;wiki_link&quot; href=&quot;/Bit-Twiddling&quot;&gt;bit-twiddling&lt;/a&gt; and various optimization tricks and special instructions for certain hardware architectures, such as &lt;a class=&quot;wiki_link&quot; href=&quot;/BitScan&quot;&gt;bitscan&lt;/a&gt; and &lt;a class=&quot;wiki_link&quot; href=&quot;/Population%20Count&quot;&gt;population count&lt;/a&gt;. Optimal code requires machine dependent &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/Header_file&quot; rel=&quot;nofollow&quot;&gt;header-files&lt;/a&gt; in &lt;a class=&quot;wiki_link&quot; href=&quot;/C&quot;&gt;C&lt;/a&gt;/&lt;a class=&quot;wiki_link&quot; href=&quot;/Cpp&quot;&gt;C++&lt;/a&gt;. Portable code is likely not optimal for all processors.&lt;/li&gt;&lt;li&gt;Some operations on bitboards are less general, f.i. shifts. This requires additional code overhead.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:123:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc9&quot;&gt;&lt;a name=&quot;Publications&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:123 --&gt;Publications&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextHeadingRule:125:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc10&quot;&gt;&lt;a name=&quot;Publications-1970 ...&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:125 --&gt;1970 ...&lt;/h2&gt;
 &lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Georgy%20Adelson-Velsky&quot;&gt;Georgy Adelson-Velsky&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Vladimir%20Arlazarov&quot;&gt;Vladimir Arlazarov&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Alexander%20Bitman&quot;&gt;Alexander Bitman&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Alexander%20Zhivotovsky&quot;&gt;Alexander Zhivotovsky&lt;/a&gt; and &lt;a class=&quot;wiki_link&quot; href=&quot;/Anatoly%20Uskov&quot;&gt;Anatoly Uskov&lt;/a&gt; (&lt;strong&gt;1970&lt;/strong&gt;). &lt;em&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://iopscience.iop.org/0036-0279/25/2/R07&quot; rel=&quot;nofollow&quot;&gt;Programming a Computer to Play Chess&lt;/a&gt;&lt;/em&gt;. &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://iopscience.iop.org/0036-0279/25/2&quot; rel=&quot;nofollow&quot;&gt;Russian Mathematical Surveys, Vol. 25&lt;/a&gt;, pp. 221-262.&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/David%20Slate&quot;&gt;David Slate&lt;/a&gt; and &lt;a class=&quot;wiki_link&quot; href=&quot;/Larry%20Atkin&quot;&gt;Larry Atkin&lt;/a&gt; (&lt;strong&gt;1977&lt;/strong&gt;). &lt;em&gt;CHESS 4.5 - The Northwestern University Chess Program.&lt;/em&gt; &lt;a class=&quot;wiki_link&quot; href=&quot;/Chess%20Skill%20in%20Man%20and%20Machine&quot;&gt;Chess Skill in Man and Machine&lt;/a&gt;, reprinted (&lt;strong&gt;1988&lt;/strong&gt;) in &lt;a class=&quot;wiki_link&quot; href=&quot;/Computer%20Chess%20Compendium&quot;&gt;Computer Chess Compendium&lt;/a&gt; » &lt;a class=&quot;wiki_link&quot; href=&quot;/Chess%20%28Program%29&quot;&gt;Chess&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;!-- ws:start:WikiTextHeadingRule:127:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc11&quot;&gt;&lt;a name=&quot;Publications-1980 ...&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:127 --&gt;1980 ...&lt;/h2&gt;
 &lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Zdenek%20Zdrahal&quot;&gt;Zdenek Zdráhal&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Ivan%20Bratko&quot;&gt;Ivan Bratko&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Alen%20Shapiro&quot;&gt;Alen Shapiro&lt;/a&gt; (&lt;strong&gt;1981&lt;/strong&gt;). &lt;em&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://comjnl.oxfordjournals.org/content/24/3/263.abstract&quot; rel=&quot;nofollow&quot;&gt;Recognition of Complex Patterns Using Cellular Arrays&lt;/a&gt;&lt;/em&gt;. &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://comjnl.oxfordjournals.org/content/24/3.toc&quot; rel=&quot;nofollow&quot;&gt;The Computer Journal, Vol. 24, No. 3&lt;/a&gt;, pp. 263-270&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Stuart%20Cracraft&quot;&gt;Stuart Cracraft&lt;/a&gt; (&lt;strong&gt;1984&lt;/strong&gt;). &lt;em&gt;Bitmap move generation in Chess&lt;/em&gt;. &lt;a class=&quot;wiki_link&quot; href=&quot;/ICGA%20Journal#7_3&quot;&gt;ICCA Journal, Vol. 7, No. 3&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Burton%20Wendroff&quot;&gt;Burton Wendroff&lt;/a&gt; (&lt;strong&gt;1985&lt;/strong&gt;). &lt;em&gt;Attack Detection and Move Generation on the X-MP/48.&lt;/em&gt; &lt;a class=&quot;wiki_link&quot; href=&quot;/ICGA%20Journal#8_2&quot;&gt;ICCA Journal, Vol. 8, No. 2&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Arch%20D.%20Robison&quot;&gt;Arch D. Robison&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Brian%20J.%20Hafner&quot;&gt;Brian J. Hafner&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Steven%20Skiena&quot;&gt;Steven Skiena&lt;/a&gt; (&lt;strong&gt;1989&lt;/strong&gt;). &lt;em&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://comjnl.oxfordjournals.org/content/32/6/567.abstract&quot; rel=&quot;nofollow&quot;&gt;Eight Pieces Cannot Cover a Chess Board&lt;/a&gt;&lt;/em&gt;. &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/The_Computer_Journal&quot; rel=&quot;nofollow&quot;&gt;The Computer Journal&lt;/a&gt;, Vol. 32, No. 6, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://comjnl.oxfordjournals.org/content/32/6/567.full.pdf&quot; rel=&quot;nofollow&quot;&gt;pdf&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;!-- ws:start:WikiTextHeadingRule:129:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc12&quot;&gt;&lt;a name=&quot;Publications-1990 ...&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:129 --&gt;1990 ...&lt;/h2&gt;
 &lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Ernst%20A.%20Heinz&quot;&gt;Ernst A. Heinz&lt;/a&gt; (&lt;strong&gt;1997&lt;/strong&gt;). &lt;em&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://people.csail.mit.edu/heinz/dt/node2.html&quot; rel=&quot;nofollow&quot;&gt;How DarkThought Plays Chess&lt;/a&gt;.&lt;/em&gt; &lt;a class=&quot;wiki_link&quot; href=&quot;/ICGA%20Journal#20_3&quot;&gt;ICCA Journal, Vol. 20, No. 3&lt;/a&gt; » &lt;a class=&quot;wiki_link&quot; href=&quot;/DarkThought&quot;&gt;DarkThought&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Robert%20Hyatt&quot;&gt;Robert Hyatt&lt;/a&gt; (&lt;strong&gt;1999&lt;/strong&gt;). &lt;em&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.craftychess.com/hyatt/bitmaps.html&quot; rel=&quot;nofollow&quot;&gt;Rotated Bitmaps, a New Twist on an Old Idea&lt;/a&gt;&lt;/em&gt;. &lt;a class=&quot;wiki_link&quot; href=&quot;/ICGA%20Journal#22_4&quot;&gt;ICCA Journal, Vol. 22, No. 4&lt;/a&gt; » &lt;a class=&quot;wiki_link&quot; href=&quot;/Rotated%20Bitboards&quot;&gt;Rotated Bitboards&lt;/a&gt; &lt;!-- ws:start:WikiTextRefRule:93:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.stmintz.com/ccc/index.php?id=71880&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Bitboard user&#039;s information request&amp;lt;/a&amp;gt; by &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Robert%20Hyatt&amp;quot;&amp;gt;Robert Hyatt&amp;lt;/a&amp;gt;, &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/CCC&amp;quot;&amp;gt;CCC&amp;lt;/a&amp;gt;, October 05, 1999&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-15&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-15&quot;&gt;[15]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:93 --&gt;&lt;/li&gt;&lt;/ul&gt;&lt;!-- ws:start:WikiTextHeadingRule:131:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc13&quot;&gt;&lt;a name=&quot;Publications-2000 ...&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:131 --&gt;2000 ...&lt;/h2&gt;
 &lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/David%20Rasmussen&quot;&gt;David Rasmussen&lt;/a&gt; (&lt;strong&gt;2004&lt;/strong&gt;). &lt;em&gt;Parallel Chess Searching and Bitboards&lt;/em&gt;. Master&#039;s thesis, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www2.imm.dtu.dk/pubdb/views/edoc_download.php/3267/ps/imm3267.ps&quot; rel=&quot;nofollow&quot;&gt;ps&lt;/a&gt; » &lt;a class=&quot;wiki_link&quot; href=&quot;/Parallel%20Search&quot;&gt;Parallel Search&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Borko%20Bo%C5%A1kovi%C4%87&quot;&gt;Borko Bošković&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Sa%C5%A1o%20Greiner&quot;&gt;Sašo Greiner&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Janez%20Brest&quot;&gt;Janez Brest&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Viljem%20%C5%BDumer&quot;&gt;Viljem Žumer&lt;/a&gt; (&lt;strong&gt;2005&lt;/strong&gt;). &lt;em&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1491153&quot; rel=&quot;nofollow&quot;&gt;The Representation of Chess Game&lt;/a&gt;&lt;/em&gt;. Proceedings of the 27th International Conference on Information Technology Interfaces&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Pablo%20San%20Segundo&quot;&gt;Pablo San Segundo&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Ram%C3%B3n%20Gal%C3%A1n&quot;&gt;Ramón Galán&lt;/a&gt; (&lt;strong&gt;2005&lt;/strong&gt;). &lt;em&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.actapress.com/Abstract.aspx?paperId=18953&quot; rel=&quot;nofollow&quot;&gt;Bitboards: A New Approach&lt;/a&gt;&lt;/em&gt;. &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.informatik.uni-trier.de/~ley/db/conf/aia/aia2005.html#SegundoG05&quot; rel=&quot;nofollow&quot;&gt;AIA 2005&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Pablo%20San%20Segundo&quot;&gt;Pablo San Segundo&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Ram%C3%B3n%20Gal%C3%A1n&quot;&gt;Ramón Galán&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Fernando%20Mat%C3%ADa&quot;&gt;Fernando Matía&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Diego%20Rodr%C3%ADguez-Losada&quot;&gt;Diego Rodríguez-Losada&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Agust%C3%ADn%20Jim%C3%A9nez&quot;&gt;Agustín Jiménez&lt;/a&gt; (&lt;strong&gt;2006&lt;/strong&gt;). &lt;em&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://dl.acm.org/citation.cfm?id=1191130&quot; rel=&quot;nofollow&quot;&gt;Efficient Search Using Bitboard Models&lt;/a&gt;&lt;/em&gt;. &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.informatik.uni-trier.de/~ley/db/conf/ictai/ictai2006.html#SegundoGMRJ06&quot; rel=&quot;nofollow&quot;&gt;ICTAI 2006&lt;/a&gt;, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.intelligentcontrol.es/diego/publications/SanSegundo_Ictai06.pdf&quot; rel=&quot;nofollow&quot;&gt;pdf&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Fridel%20Fainshtein&quot;&gt;Fridel Fainshtein&lt;/a&gt; (&lt;strong&gt;2006&lt;/strong&gt;). &lt;em&gt;An Orthodox k-Move Problem-Composer for Chess Directmates&lt;/em&gt;. M.Sc. thesis, &lt;a class=&quot;wiki_link&quot; href=&quot;/Bar-Ilan%20University&quot;&gt;Bar-Ilan University&lt;/a&gt;, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.problemschach.de/KMOVEComposer.pdf&quot; rel=&quot;nofollow&quot;&gt;pdf&lt;/a&gt;, Appendix D - 64-bit Representation, pp. 105&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Fridel%20Fainshtein&quot;&gt;Fridel Fainshtein&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Yaakov%20HaCohen-Kerner&quot;&gt;Yaakov HaCohen-Kerner&lt;/a&gt; (&lt;strong&gt;2006&lt;/strong&gt;). &lt;em&gt;A Chess Composer of Two-Move Mate Problems&lt;/em&gt;. &lt;a class=&quot;wiki_link&quot; href=&quot;/ICGA%20Journal#29_1&quot;&gt;ICGA Journal, Vol. 29, No. 1&lt;/a&gt;, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://homedir.jct.ac.il/~kerner/pdf_docs/ICGA_computer_composer.pdf&quot; rel=&quot;nofollow&quot;&gt;pdf&lt;/a&gt;, Appendix E: 64-bit representation, pp. 22&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Reijer%20Grimbergen&quot;&gt;Reijer Grimbergen&lt;/a&gt; (&lt;strong&gt;2007&lt;/strong&gt;). &lt;em&gt;Using Bitboards for Move Generation in Shogi&lt;/em&gt;. &lt;a class=&quot;wiki_link&quot; href=&quot;/ICGA%20Journal#30_1&quot;&gt;ICGA Journal, Vol. 30, No. 1&lt;/a&gt;, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www2.teu.ac.jp/gamelab/RESEARCH/ICGAJournal2007.pdf&quot; rel=&quot;nofollow&quot;&gt;pdf&lt;/a&gt; » &lt;a class=&quot;wiki_link&quot; href=&quot;/Move%20Generation&quot;&gt;Move Generation&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Shogi&quot;&gt;Shogi&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/James%20Glenn&quot;&gt;James Glenn&lt;/a&gt;, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.cs.loyola.edu/~binkley/&quot; rel=&quot;nofollow&quot;&gt;David Binkley&lt;/a&gt; (&lt;strong&gt;2008&lt;/strong&gt;) &lt;em&gt;An Investigation of Hierarchical Bit Vectors&lt;/em&gt;. &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://www.novapublishers.com/catalog/product_info.php?products_id=6555&quot; rel=&quot;nofollow&quot;&gt;New Topics in Theoretical Computer Science&lt;/a&gt;, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.cs.loyola.edu/~binkley/papers/tcsrt08-hbit-vectors.pdf&quot; rel=&quot;nofollow&quot;&gt;pdf&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Shi-Jim%20Yen&quot;&gt;Shi-Jim Yen&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Jung-Kuei%20Yang&quot;&gt;Jung-Kuei Yang&lt;/a&gt; (&lt;strong&gt;2009&lt;/strong&gt;). &lt;em&gt;The Bitboard Design and Bitwise Computing in Connect Six&lt;/em&gt;. &lt;a class=&quot;wiki_link&quot; href=&quot;/Conferences#GPW&quot;&gt;14th Game Programming Workshop&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Fritz%20Reul&quot;&gt;Fritz Reul&lt;/a&gt; (&lt;strong&gt;2009&lt;/strong&gt;). &lt;em&gt;New Architectures in Computer Chess&lt;/em&gt;, Ph.D. Thesis, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://pure.uvt.nl/ws/files/1098572/Proefschrift_Fritz_Reul_170609.pdf&quot; rel=&quot;nofollow&quot;&gt;pdf&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;!-- ws:start:WikiTextHeadingRule:133:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc14&quot;&gt;&lt;a name=&quot;Publications-2010 ...&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:133 --&gt;2010 ...&lt;/h2&gt;
 &lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Stefano%20Carlini&quot;&gt;Stefano Carlini&lt;/a&gt; (&lt;strong&gt;2010&lt;/strong&gt;). &lt;em&gt;Arimaa, a New Challenge for Artificial Intelligence&lt;/em&gt;. M.Sc. thesis, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/University_of_Modena_and_Reggio_Emilia&quot; rel=&quot;nofollow&quot;&gt;University of Modena and Reggio Emilia&lt;/a&gt;, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://arimaa.com/arimaa/papers/StefanoCarlini/Arimaa2.pdf&quot; rel=&quot;nofollow&quot;&gt;pdf&lt;/a&gt; » Chapter 4, Bitboards in &lt;a class=&quot;wiki_link&quot; href=&quot;/Arimaa&quot;&gt;Arimaa&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Shi-Jim%20Yen&quot;&gt;Shi-Jim Yen&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Jung-Kuei%20Yang&quot;&gt;Jung-Kuei Yang&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Kuo-Yuan%20Kao&quot;&gt;Kuo-Yuan Kao&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Tai-Ning%20Yang&quot;&gt;Tai-Ning Yang&lt;/a&gt; (&lt;strong&gt;2012&lt;/strong&gt;). &lt;em&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.sciencedirect.com/science/article/pii/S0950705112001293&quot; rel=&quot;nofollow&quot;&gt;Bitboard Knowledge Base System and Elegant Search Architectures for Connect6&lt;/a&gt;&lt;/em&gt;. &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://www.journals.elsevier.com/knowledge-based-systems/&quot; rel=&quot;nofollow&quot;&gt;Knowledge-Based Systems&lt;/a&gt;, Vol. 34 » &lt;a class=&quot;wiki_link&quot; href=&quot;/Connect6&quot;&gt;Connect6&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Cameron%20Browne&quot;&gt;Cameron Browne&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Stephen%20Tavener&quot;&gt;Stephen Tavener&lt;/a&gt; (&lt;strong&gt;2013&lt;/strong&gt;). &lt;em&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.aifactory.co.uk/newsletter/2012_02_fast_lane.htm&quot; rel=&quot;nofollow&quot;&gt;Life in the Fast Lane&lt;/a&gt;&lt;/em&gt;. &lt;a class=&quot;wiki_link&quot; href=&quot;/AI%20Factory&quot;&gt;AI Factory&lt;/a&gt; » &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life&quot; rel=&quot;nofollow&quot;&gt;Conway&#039;s Game of Life&lt;/a&gt; within a &lt;a class=&quot;wiki_link&quot; href=&quot;/Bitboards&quot;&gt;Bitboard&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Cameron%20Browne&quot;&gt;Cameron Browne&lt;/a&gt; (&lt;strong&gt;2014&lt;/strong&gt;). &lt;em&gt;Bitboard Methods for Games&lt;/em&gt;. &lt;a class=&quot;wiki_link&quot; href=&quot;/ICGA%20Journal#37_2&quot;&gt;ICGA Journal, Vol. 37, No. 2&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:135:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc15&quot;&gt;&lt;a name=&quot;Forum Posts&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:135 --&gt;Forum Posts&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextHeadingRule:137:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc16&quot;&gt;&lt;a name=&quot;Forum Posts-1994&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:137 --&gt;1994&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://groups.google.com/d/msg/rec.games.chess/vvl1nLv1MD8/oHVKdLXuiaUJ&quot; rel=&quot;nofollow&quot;&gt;bitboard move generation&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Robert%20Hyatt&quot;&gt;Robert Hyatt&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Computer%20Chess%20Forums&quot;&gt;rgc&lt;/a&gt;, October 25, 1994&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://groups.google.com/d/msg/rec.games.chess/106wKFeI8BA/zNuzu-2aMowJ&quot; rel=&quot;nofollow&quot;&gt;bitboard move generator&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Jo%C3%ABl%20Rivat&quot;&gt;Joël Rivat&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Computer%20Chess%20Forums&quot;&gt;rgc&lt;/a&gt;, November 13, 1994&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://groups.google.com/d/msg/rec.games.chess/M4CKCmqDNkI/TjVJEQY0GC0J&quot; rel=&quot;nofollow&quot;&gt;bitboard position evaluations&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Robert%20Hyatt&quot;&gt;Robert Hyatt&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Computer%20Chess%20Forums&quot;&gt;rgc&lt;/a&gt;, November 17, 1994 » &lt;a class=&quot;wiki_link&quot; href=&quot;/Evaluation&quot;&gt;Evaluation&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;!-- ws:start:WikiTextHeadingRule:139:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc17&quot;&gt;&lt;a name=&quot;Forum Posts-1995 ...&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:139 --&gt;1995 ...&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://groups.google.com/group/rec.games.chess.computer/browse_frm/thread/71f7b5ee3764f082&quot; rel=&quot;nofollow&quot;&gt;Chess programming using bitboards&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Jo%C3%ABl%20Rivat&quot;&gt;Joël Rivat&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Computer%20Chess%20Forums&quot;&gt;rgcc&lt;/a&gt;, August 18, 1995&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://groups.google.com/group/rec.games.chess.computer/browse_frm/thread/834fa3c273fafffe/cab7c12ea99e9a35&quot; rel=&quot;nofollow&quot;&gt;Bit Board Bonkers??&lt;/a&gt; by Dave, &lt;a class=&quot;wiki_link&quot; href=&quot;/Computer%20Chess%20Forums&quot;&gt;rec.games.chess.computer&lt;/a&gt;, July 28, 1997&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=30562&quot; rel=&quot;nofollow&quot;&gt;Efficient Bitboard Implementation on 32-bit Architecture&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Roberto%20Waldteufel&quot;&gt;Roberto Waldteufel&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, October 25, 1998&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=34506&quot; rel=&quot;nofollow&quot;&gt;Bitboard question&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Werner%20Inmann&quot;&gt;Werner Inmann&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, December 02, 1998&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=34852&quot; rel=&quot;nofollow&quot;&gt;Bitboards&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Frank%20Phillips&quot;&gt;Frank Phillips&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, December 05, 1998&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=48176&quot; rel=&quot;nofollow&quot;&gt;bitboards in java?&lt;/a&gt; by vitor, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, April 06, 1999 » &lt;a class=&quot;wiki_link&quot; href=&quot;/Java&quot;&gt;Java&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=53446&quot; rel=&quot;nofollow&quot;&gt;BitBoards&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Frank%20Phillips&quot;&gt;Frank Phillips&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, May 29, 1999&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=71880&quot; rel=&quot;nofollow&quot;&gt;Bitboard user&#039;s information request&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Robert%20Hyatt&quot;&gt;Robert Hyatt&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, October 05, 1999 » &lt;a class=&quot;wiki_link&quot; href=&quot;/Rotated%20Bitboards&quot;&gt;Rotated Bitboards&lt;/a&gt; &lt;!-- ws:start:WikiTextRefRule:101:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Robert%20Hyatt&amp;quot;&amp;gt;Robert Hyatt&amp;lt;/a&amp;gt; (&amp;lt;strong&amp;gt;1999&amp;lt;/strong&amp;gt;). &amp;lt;em&amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.craftychess.com/hyatt/bitmaps.html&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Rotated Bitmaps, a New Twist on an Old Idea&amp;lt;/a&amp;gt;&amp;lt;/em&amp;gt;. &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/ICGA%20Journal#22_4&amp;quot;&amp;gt;ICCA Journal, Vol. 22, No. 4&amp;lt;/a&amp;gt;&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-16&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-16&quot;&gt;[16]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:101 --&gt;&lt;/li&gt;&lt;/ul&gt;&lt;!-- ws:start:WikiTextHeadingRule:141:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc18&quot;&gt;&lt;a name=&quot;Forum Posts-2000 ...&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:141 --&gt;2000 ...&lt;/h2&gt;
 &lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=313504&quot; rel=&quot;nofollow&quot;&gt;To bitboard or not to bitboard?&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Tord%20Romstad&quot;&gt;Tord Romstad&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, August 30, 2003&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=352040&quot; rel=&quot;nofollow&quot;&gt;How important are Bitboards?&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Martin%20Schreiber&quot;&gt;Martin Schreiber&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, February 29, 2004&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.open-aurec.com/wbforum/viewtopic.php?f=4&amp;amp;t=516&quot; rel=&quot;nofollow&quot;&gt;Two questions for bitboard experts&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Tord%20Romstad&quot;&gt;Tord Romstad&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Computer%20Chess%20Forums&quot;&gt;Winboard Forum&lt;/a&gt;, November 06, 2004 » &lt;a class=&quot;wiki_link&quot; href=&quot;/Square%20Attacked%20By#InBetween&quot;&gt;In Between&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Piece-Lists&quot;&gt;Piece-Lists&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;!-- ws:start:WikiTextHeadingRule:143:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc19&quot;&gt;&lt;a name=&quot;Forum Posts-2005 ...&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:143 --&gt;2005 ...&lt;/h2&gt;
 &lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.open-aurec.com/wbforum/viewtopic.php?f=4&amp;amp;t=4521&quot; rel=&quot;nofollow&quot;&gt;Bitboard question&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Tord%20Romstad&quot;&gt;Tord Romstad&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Computer%20Chess%20Forums&quot;&gt;Winboard Forum&lt;/a&gt;, March 14, 2006&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=13426&quot; rel=&quot;nofollow&quot;&gt;Speedup with bitboards on 64-bit CPUs&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Tord%20Romstad&quot;&gt;Tord Romstad&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, April 27, 2007&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.open-aurec.com/wbforum/viewtopic.php?f=4&amp;amp;t=6651&quot; rel=&quot;nofollow&quot;&gt;Speedup by bitboards&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Onno%20Garms&quot;&gt;Onno Garms&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Computer%20Chess%20Forums&quot;&gt;Winboard Forum&lt;/a&gt;, July 13, 2007&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=17138&quot; rel=&quot;nofollow&quot;&gt;BitBoard representations of the board&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Uri%20Blass&quot;&gt;Uri Blass&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, October 14, 2007&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=25917&quot; rel=&quot;nofollow&quot;&gt;Bitboards / move generation on larger boards&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Gregory%20Strong&quot;&gt;Gregory Strong&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, January 09, 2009&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=26527&quot; rel=&quot;nofollow&quot;&gt;Bitboard techniques in Xiangqi&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Harm%20Geert%20Muller&quot;&gt;Harm Geert Muller&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, February 12, 2009 » &lt;a class=&quot;wiki_link&quot; href=&quot;/Chinese%20Chess&quot;&gt;Chinese Chess&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=28207&quot; rel=&quot;nofollow&quot;&gt;Bitboards using 2 DOUBLE&#039;s ?&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Carey%20Bloodworth&quot;&gt;Carey&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, June 02, 2009 » &lt;a class=&quot;wiki_link&quot; href=&quot;/Double&quot;&gt;Double&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;!-- ws:start:WikiTextHeadingRule:145:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc20&quot;&gt;&lt;a name=&quot;Forum Posts-2010 ...&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:145 --&gt;2010 ...&lt;/h2&gt;
 &lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=42108&quot; rel=&quot;nofollow&quot;&gt;Bitboard implementation, how much time?&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Ed%20Schroder&quot;&gt;Ed Schröder&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, January 22, 2012&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://macechess.blogspot.de/2013/04/64-bits-for-64-squares.html&quot; rel=&quot;nofollow&quot;&gt;64 bits for 64 squares ?&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Thomas%20Petzke&quot;&gt;Thomas Petzke&lt;/a&gt;, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://macechess.blogspot.de/&quot; rel=&quot;nofollow&quot;&gt;mACE Chess&lt;/a&gt;, April 28, 2013 » &lt;a class=&quot;wiki_link&quot; href=&quot;/Population%20Count&quot;&gt;Population Count&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=54208&quot; rel=&quot;nofollow&quot;&gt;Bitboard Tricks for Large Chess Variants&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Ed%20Trice&quot;&gt;Ed Trice&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, November 01, 2014&lt;/li&gt;&lt;/ul&gt;&lt;!-- ws:start:WikiTextHeadingRule:147:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc21&quot;&gt;&lt;a name=&quot;Forum Posts-2015 ...&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:147 --&gt;2015 ...&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=56476&quot; rel=&quot;nofollow&quot;&gt;Bitboard database code samples&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Steven%20Edwards&quot;&gt;Steven Edwards&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, May 25, 2015 » &lt;a class=&quot;wiki_link&quot; href=&quot;/Symbolic&quot;&gt;Symbolic&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=60007&quot; rel=&quot;nofollow&quot;&gt;M42 - A C++ library for Bitboard attack mask generation&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Syed%20Fahad&quot;&gt;Syed Fahad&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, April 30, 2016 &lt;!-- ws:start:WikiTextRefRule:104:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;https://sites.google.com/site/sydfhd/projects/m42&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;M42&amp;lt;/a&amp;gt; by &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Syed%20Fahad&amp;quot;&amp;gt;Syed Fahad&amp;lt;/a&amp;gt;&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-17&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-17&quot;&gt;[17]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:104 --&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=64487&quot; rel=&quot;nofollow&quot;&gt;Checkers Bitboard representation&lt;/a&gt; by Pranav Deshpande, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, July 02, 2017 » &lt;a class=&quot;wiki_link&quot; href=&quot;/Checkers&quot;&gt;Checkers&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=65724&quot; rel=&quot;nofollow&quot;&gt;Bitboards and Java&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Fred%20Hamilton&quot;&gt;Fred Hamilton&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, November 14, 2017 » &lt;a class=&quot;wiki_link&quot; href=&quot;/Java&quot;&gt;Java&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:149:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc22&quot;&gt;&lt;a name=&quot;Viewer &amp;amp; Calculator&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:149 --&gt;Viewer &amp;amp; Calculator&lt;/h1&gt;
 &lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Bibob&quot;&gt;Bibob&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://cinnamonchess.altervista.org/bitboard_calculator/Calc.html&quot; rel=&quot;nofollow&quot;&gt;Bitboard Calculator&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Giuseppe%20Cannella&quot;&gt;Giuseppe Cannella&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.chessprogramming.net/computerchess/free-chess-bitboard-viewer/&quot; rel=&quot;nofollow&quot;&gt;Free Chess Bitboard Viewer - Computer Chess Programming&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Steve%20Maughan&quot;&gt;Steve Maughan&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.chess2u.com/t2159-new-free-tool-bitboards-helper&quot; rel=&quot;nofollow&quot;&gt;New free tool : Bitboards Helper&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Julien%20Marcel&quot;&gt;Julien Marcel&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:151:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc23&quot;&gt;&lt;a name=&quot;External Links&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:151 --&gt;External Links&lt;/h1&gt;
 &lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/Bitboard&quot; rel=&quot;nofollow&quot;&gt;Bitboards from Wikipedia&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/Bit_array&quot; rel=&quot;nofollow&quot;&gt;Bit-Array from Wikipedia&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/Bitboard#History&quot; rel=&quot;nofollow&quot;&gt;Bitboard-History from Wikipedia&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.craftychess.com/hyatt/boardrep.html&quot; rel=&quot;nofollow&quot;&gt;Chess board representations&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Robert%20Hyatt&quot;&gt;Robert Hyatt&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://webpages.charter.net/tlikens/bitmaps/bit_intro.html&quot; rel=&quot;nofollow&quot;&gt;Bitboards (aka bitmaps)&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Tom%20Likens&quot;&gt;Tom Likens&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.fzibi.com/cchess/bitboards.htm&quot; rel=&quot;nofollow&quot;&gt;An Introduction to BITBOARDS&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Franck%20Zibi&quot;&gt;Franck Zibi&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.onjava.com/pub/a/onjava/2005/02/02/bitsets.html&quot; rel=&quot;nofollow&quot;&gt;Bitwise Optimization in Java: Bitfields, Bitboards, and Beyond&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Glen%20Pepicelli&quot;&gt;Glen Pepicelli&lt;/a&gt;, 2005, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/O%27Reilly_Media&quot; rel=&quot;nofollow&quot;&gt;O&#039;Reilly&#039;s&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://onjava.com/&quot; rel=&quot;nofollow&quot;&gt;OnJava.com&lt;/a&gt; » &lt;a class=&quot;wiki_link&quot; href=&quot;/Java&quot;&gt;Java&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Bit-Twiddling&quot;&gt;Bit-Twiddling&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://pages.cs.wisc.edu/~psilord/blog/data/chess-pages/index.html&quot; rel=&quot;nofollow&quot;&gt;Chess and Bitboards&lt;/a&gt; by &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://pages.cs.wisc.edu/~psilord/&quot; rel=&quot;nofollow&quot;&gt;Peter Keller&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://sanher.de/index.htm?lang=eng&amp;amp;url=bitfuncs&quot; rel=&quot;nofollow&quot;&gt;Bit functions for Delphi&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Andreas%20Herrmann&quot;&gt;Andreas Herrmann&lt;/a&gt; » &lt;a class=&quot;wiki_link&quot; href=&quot;/Delphi&quot;&gt;Delphi&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://labraj.uni-mb.si/en/Position_Representation&quot; rel=&quot;nofollow&quot;&gt;Position Representation - Computer Architecture and Languages Laboratory&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/University%20of%20Maribor&quot;&gt;University of Maribor&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://stackoverflow.com/questions/tagged/bitboard&quot; rel=&quot;nofollow&quot;&gt;Newest &#039;bitboard&#039; Questions&lt;/a&gt; - &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/Stack_Overflow&quot; rel=&quot;nofollow&quot;&gt;Stack Overflow&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:153:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc24&quot;&gt;&lt;a name=&quot;References&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:153 --&gt;References&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextReferencesRule:867:&amp;amp;lt;references /&amp;amp;gt; --&gt;&lt;ol class=&quot;references&quot;&gt;
&lt;li id=&quot;cite_note-1&quot;&gt;&lt;a href=&quot;#cite_ref-1&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link&quot; href=&quot;/Reijer%20Grimbergen&quot;&gt;Reijer Grimbergen&lt;/a&gt; (&lt;strong&gt;2007&lt;/strong&gt;). &lt;em&gt;Using Bitboards for &lt;a class=&quot;wiki_link&quot; href=&quot;/Move%20Generation&quot;&gt;Move Generation&lt;/a&gt; in &lt;a class=&quot;wiki_link&quot; href=&quot;/Shogi&quot;&gt;Shogi&lt;/a&gt;&lt;/em&gt;. &lt;a class=&quot;wiki_link&quot; href=&quot;/ICGA%20Journal#30_1&quot;&gt;ICGA Journal, Vol. 30, No. 1&lt;/a&gt;, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www2.teu.ac.jp/gamelab/RESEARCH/ICGAJournal2007.pdfICGAJournal2007.pdf&quot; rel=&quot;nofollow&quot;&gt;pdf&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;cite_note-2&quot;&gt;&lt;a href=&quot;#cite_ref-2&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.3dkingdoms.com/checkers/bitboards.htm&quot; rel=&quot;nofollow&quot;&gt;Checker Bitboards Tutorial&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Jonathan%20Kreuzer&quot;&gt;Jonathan Kreuzer&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;cite_note-3&quot;&gt;&lt;a href=&quot;#cite_ref-3&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=64487&quot; rel=&quot;nofollow&quot;&gt;Checkers Bitboard representation&lt;/a&gt; by Pranav Deshpande, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, July 02, 2017&lt;/li&gt;
&lt;li id=&quot;cite_note-4&quot;&gt;&lt;a href=&quot;#cite_ref-4&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.chgs.umn.edu/museum/responses/bak/chess.html&quot; rel=&quot;nofollow&quot;&gt;Chess in the Art of Samuel Bak&lt;/a&gt;, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.chgs.umn.edu/&quot; rel=&quot;nofollow&quot;&gt;Center for Holocaust &amp;amp; Genocide Studies&lt;/a&gt;, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/University_of_Minnesota&quot; rel=&quot;nofollow&quot;&gt;University of Minnesota&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;cite_note-5&quot;&gt;&lt;a href=&quot;#cite_ref-5&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/Lazar_Lyusternik&quot; rel=&quot;nofollow&quot;&gt;Lazar A. Lyusternik&lt;/a&gt;, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.mathnet.ru/php/person.phtml?personid=30351&amp;amp;option_lang=eng&quot; rel=&quot;nofollow&quot;&gt;Aleksandr A. Abramov&lt;/a&gt;, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/Victor_Shestakov&quot; rel=&quot;nofollow&quot;&gt;Victor I. Shestakov&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Mikhail%20R.%20Shura-Bura&quot;&gt;Mikhail R. Shura-Bura&lt;/a&gt; (&lt;strong&gt;1952&lt;/strong&gt;). &lt;em&gt;Programming for High-Speed Electronic Computers&lt;/em&gt;. (Программирование для электронных счетных машин)&lt;/li&gt;
&lt;li id=&quot;cite_note-6&quot;&gt;&lt;a href=&quot;#cite_ref-6&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link&quot; href=&quot;/Mathematician#Ershov&quot;&gt;Andrey Ershov&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Mikhail%20R.%20Shura-Bura&quot;&gt;Mikhail R. Shura-Bura&lt;/a&gt; (&lt;strong&gt;1980&lt;/strong&gt;). &lt;em&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://ershov.iis.nsk.su/archive/eaindex.asp?lang=2&amp;amp;gid=910&quot; rel=&quot;nofollow&quot;&gt;The Early Development of Programming in the USSR&lt;/a&gt;&lt;/em&gt;. in &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/Nicholas_C._Metropolis&quot; rel=&quot;nofollow&quot;&gt;Nicholas C. Metropolis&lt;/a&gt; (ed.) &lt;em&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://dl.acm.org/citation.cfm?id=578384&quot; rel=&quot;nofollow&quot;&gt;A History of Computing in the Twentieth Century&lt;/a&gt;&lt;/em&gt;. &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/Academic_Press&quot; rel=&quot;nofollow&quot;&gt;Academic Press&lt;/a&gt;, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://ershov.iis.nsk.su/archive/eaimage.asp?did=28792&amp;amp;fileid=173670&quot; rel=&quot;nofollow&quot;&gt;preprint pp. 43&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;cite_note-7&quot;&gt;&lt;a href=&quot;#cite_ref-7&quot;&gt;^&lt;/a&gt; On &lt;a class=&quot;wiki_link&quot; href=&quot;/Bitboards&quot;&gt;Bitboards&lt;/a&gt; for White, Black and Kings to &lt;a class=&quot;wiki_link&quot; href=&quot;/Board%20Representation&quot;&gt;represent the checkers board&lt;/a&gt;, see &lt;a class=&quot;wiki_link&quot; href=&quot;/Ferranti%20Mark%201#DavidLinkVideo&quot;&gt;David Link Video&lt;/a&gt; at 1:04:02&lt;/li&gt;
&lt;li id=&quot;cite_note-8&quot;&gt;&lt;a href=&quot;#cite_ref-8&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://groups.google.com/group/rec.games.chess/browse_frm/thread/0e3a93f45ff07d31#&quot; rel=&quot;nofollow&quot;&gt;Early Reference on Bit-Boards&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Tony%20Warnock&quot;&gt;Tony Warnock&lt;/a&gt; from &lt;a class=&quot;wiki_link&quot; href=&quot;/Computer%20Chess%20Forums&quot;&gt;rec.games.chess&lt;/a&gt;, October 29, 1994&lt;/li&gt;
&lt;li id=&quot;cite_note-9&quot;&gt;&lt;a href=&quot;#cite_ref-9&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link&quot; href=&quot;/Georgy%20Adelson-Velsky&quot;&gt;Georgy Adelson-Velsky&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Vladimir%20Arlazarov&quot;&gt;Vladimir Arlazarov&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Alexander%20Bitman&quot;&gt;Alexander Bitman&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Alexander%20Zhivotovsky&quot;&gt;Alexander Zhivotovsky&lt;/a&gt; and &lt;a class=&quot;wiki_link&quot; href=&quot;/Anatoly%20Uskov&quot;&gt;Anatoly Uskov&lt;/a&gt; (&lt;strong&gt;1970&lt;/strong&gt;). &lt;em&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://iopscience.iop.org/0036-0279/25/2/R07&quot; rel=&quot;nofollow&quot;&gt;Programming a Computer to Play Chess&lt;/a&gt;&lt;/em&gt;. &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://iopscience.iop.org/0036-0279/25/2&quot; rel=&quot;nofollow&quot;&gt;Russian Mathematical Surveys, Vol. 25&lt;/a&gt;, pp. 221-262.&lt;/li&gt;
&lt;li id=&quot;cite_note-10&quot;&gt;&lt;a href=&quot;#cite_ref-10&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link&quot; href=&quot;/Robert%20Hyatt&quot;&gt;Robert Hyatt&lt;/a&gt; (&lt;strong&gt;1999&lt;/strong&gt;). &lt;em&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.craftychess.com/hyatt/bitmaps.html&quot; rel=&quot;nofollow&quot;&gt;Rotated Bitmaps, a New Twist on an Old Idea&lt;/a&gt;&lt;/em&gt;. &lt;a class=&quot;wiki_link&quot; href=&quot;/ICGA%20Journal#22_4&quot;&gt;ICCA Journal, Vol. 22, No. 4&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;cite_note-11&quot;&gt;&lt;a href=&quot;#cite_ref-11&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.open-aurec.com/wbforum/viewtopic.php?t=5015&quot; rel=&quot;nofollow&quot;&gt;Fast(er) bitboard move generator&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Lasse%20Hansen&quot;&gt;Lasse Hansen&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Computer%20Chess%20Forums&quot;&gt;Winboard Forum&lt;/a&gt;, June 14, &lt;a class=&quot;wiki_link&quot; href=&quot;/Timeline#2006&quot;&gt;2006&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;cite_note-12&quot;&gt;&lt;a href=&quot;#cite_ref-12&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.open-aurec.com/wbforum/viewtopic.php?t=5441&quot; rel=&quot;nofollow&quot;&gt;List of magics for bitboard move generation&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Pradu%20Kannan&quot;&gt;Pradu Kannan&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Computer%20Chess%20Forums&quot;&gt;Winboard Forum&lt;/a&gt;, August 23, &lt;a class=&quot;wiki_link&quot; href=&quot;/Timeline#2006&quot;&gt;2006&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;cite_note-13&quot;&gt;&lt;a href=&quot;#cite_ref-13&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=30562&quot; rel=&quot;nofollow&quot;&gt;Efficient Bitboard Implementation on 32-bit Architecture&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Roberto%20Waldteufel&quot;&gt;Roberto Waldteufel&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, October 25, 1998&lt;/li&gt;
&lt;li id=&quot;cite_note-14&quot;&gt;&lt;a href=&quot;#cite_ref-14&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.open-aurec.com/wbforum/viewtopic.php?f=4&amp;amp;t=6651&quot; rel=&quot;nofollow&quot;&gt;Speedup by bitboards&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Onno%20Garms&quot;&gt;Onno Garms&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Computer%20Chess%20Forums&quot;&gt;Winboard Forum&lt;/a&gt;, July 13, 2007&lt;/li&gt;
&lt;li id=&quot;cite_note-15&quot;&gt;&lt;a href=&quot;#cite_ref-15&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=71880&quot; rel=&quot;nofollow&quot;&gt;Bitboard user&#039;s information request&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Robert%20Hyatt&quot;&gt;Robert Hyatt&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, October 05, 1999&lt;/li&gt;
&lt;li id=&quot;cite_note-16&quot;&gt;&lt;a href=&quot;#cite_ref-16&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link&quot; href=&quot;/Robert%20Hyatt&quot;&gt;Robert Hyatt&lt;/a&gt; (&lt;strong&gt;1999&lt;/strong&gt;). &lt;em&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.craftychess.com/hyatt/bitmaps.html&quot; rel=&quot;nofollow&quot;&gt;Rotated Bitmaps, a New Twist on an Old Idea&lt;/a&gt;&lt;/em&gt;. &lt;a class=&quot;wiki_link&quot; href=&quot;/ICGA%20Journal#22_4&quot;&gt;ICCA Journal, Vol. 22, No. 4&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;cite_note-17&quot;&gt;&lt;a href=&quot;#cite_ref-17&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://sites.google.com/site/sydfhd/projects/m42&quot; rel=&quot;nofollow&quot;&gt;M42&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Syed%20Fahad&quot;&gt;Syed Fahad&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;!-- ws:end:WikiTextReferencesRule:867 --&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Board%20Representation&quot;&gt;Up one level&lt;/a&gt;&lt;/strong&gt;</description>
          </item>
    <item>
      <title>BitScan</title>
      <link>https://chessprogramming.wikispaces.com/BitScan</link>
      <dc:creator>GerdIsenberg</dc:creator>
      <guid isPermaLink="true">https://chessprogramming.wikispaces.com/BitScan</guid>
      <comments>https://chessprogramming.wikispaces.com/page/messages/BitScan</comments>
      <pubDate>Sun, 10 Sep 2017 15:44:37 GMT</pubDate>
      <description>&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Home&quot;&gt;Home&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Board%20Representation&quot;&gt;Board Representation&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Bitboards&quot;&gt;Bitboards&lt;/a&gt; * BitScan&lt;/strong&gt;&lt;br /&gt;


&lt;table class=&quot;wiki_table&quot;&gt;
    &lt;tr&gt;
        &lt;td&gt;&lt;!-- ws:start:WikiTextLocalImageRule:1479:&amp;lt;a href=&amp;quot;http://www.mcescher.com/Gallery/back-bmp/LW344.jpg&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;/file/view/Eye.jpg/157874885/187x141/Eye.jpg&amp;quot; alt=&amp;quot;&amp;quot; title=&amp;quot;&amp;quot; style=&amp;quot;height: 141px; width: 187px;&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt; --&gt;&lt;a href=&quot;http://www.mcescher.com/Gallery/back-bmp/LW344.jpg&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;/file/view/Eye.jpg/157874885/187x141/Eye.jpg&quot; alt=&quot;Eye.jpg&quot; title=&quot;Eye.jpg&quot; style=&quot;height: 141px; width: 187px;&quot; /&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextLocalImageRule:1479 --&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td rowspan=&quot;2&quot;&gt;&lt;strong&gt;BitScan&lt;/strong&gt;,&lt;br /&gt;
a function that determines the bit-index of the least significant 1 &lt;a class=&quot;wiki_link&quot; href=&quot;/Bit&quot;&gt;bit&lt;/a&gt; (&lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#TheLeastSignificantOneBitLS1B&quot;&gt;LS1B&lt;/a&gt;) or the most significant 1 &lt;a class=&quot;wiki_link&quot; href=&quot;/Bit&quot;&gt;bit&lt;/a&gt; (&lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#TheMostSignificantOneBitMS1B&quot;&gt;MS1B&lt;/a&gt;) in an integer such as &lt;a class=&quot;wiki_link&quot; href=&quot;/Bitboards&quot;&gt;bitboards&lt;/a&gt;. If exactly one bit is set in an unsigned integer, representing a numerical value of a &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/Power_of_two&quot; rel=&quot;nofollow&quot;&gt;power of two&lt;/a&gt;, this is equivalent to a &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/Binary_logarithm&quot; rel=&quot;nofollow&quot;&gt;base-2 logarithm&lt;/a&gt;. Many implementations have been devised since the advent of bitboards, as described on this page, and some &lt;a class=&quot;wiki_link&quot; href=&quot;/BitScan#EngineSamples&quot;&gt;implementation samples&lt;/a&gt; of concrete &lt;a class=&quot;wiki_link&quot; href=&quot;/Open%20Source%20Engines&quot;&gt;open source engines&lt;/a&gt; listed for didactic purpose.&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Arts#Escher&quot;&gt;M. C. Escher&lt;/a&gt;, Eye, 1946 &lt;!-- ws:start:WikiTextRefRule:25:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.mcescher.com/Gallery/gallery-back.htm&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Picture gallery &amp;amp;quot;Back in Holland 1941 - 1954&amp;amp;quot;&amp;lt;/a&amp;gt; from &amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.mcescher.com/&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;The Official M.C. Escher Website&amp;lt;/a&amp;gt;&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-1&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:25 --&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
    &lt;/tr&gt;
&lt;/table&gt;

&lt;!-- ws:start:WikiTextTocRule:241:&amp;lt;img id=&amp;quot;wikitext@@toc@@normal&amp;quot; class=&amp;quot;WikiMedia WikiMediaToc&amp;quot; title=&amp;quot;Table of Contents&amp;quot; src=&amp;quot;/site/embedthumbnail/toc/normal?w=225&amp;amp;h=100&amp;quot;/&amp;gt; --&gt;&lt;div id=&quot;toc&quot;&gt;&lt;h1 class=&quot;nopad&quot;&gt;Table of Contents&lt;/h1&gt;&lt;!-- ws:end:WikiTextTocRule:241 --&gt;&lt;!-- ws:start:WikiTextTocRule:242: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Hardware vs. Software&quot;&gt;Hardware vs. Software&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:242 --&gt;&lt;!-- ws:start:WikiTextTocRule:243: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Non Empty Sets&quot;&gt;Non Empty Sets&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:243 --&gt;&lt;!-- ws:start:WikiTextTocRule:244: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Bitscan forward&quot;&gt;Bitscan forward&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:244 --&gt;&lt;!-- ws:start:WikiTextTocRule:245: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Bitscan forward-Trailing Zero Count&quot;&gt;Trailing Zero Count&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:245 --&gt;&lt;!-- ws:start:WikiTextTocRule:246: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Bitscan forward-De Bruijn Multiplication&quot;&gt;De Bruijn Multiplication&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:246 --&gt;&lt;!-- ws:start:WikiTextTocRule:247: --&gt;&lt;div style=&quot;margin-left: 3em;&quot;&gt;&lt;a href=&quot;#Bitscan forward-De Bruijn Multiplication-With isolated LS1B&quot;&gt;With isolated LS1B&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:247 --&gt;&lt;!-- ws:start:WikiTextTocRule:248: --&gt;&lt;div style=&quot;margin-left: 3em;&quot;&gt;&lt;a href=&quot;#Bitscan forward-De Bruijn Multiplication-With separated LS1B&quot;&gt;With separated LS1B&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:248 --&gt;&lt;!-- ws:start:WikiTextTocRule:249: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Bitscan forward-Matt Taylor&#039;s Folding trick&quot;&gt;Matt Taylor&#039;s Folding trick&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:249 --&gt;&lt;!-- ws:start:WikiTextTocRule:250: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Bitscan forward-Walter Faxon&#039;s magic Bitscan&quot;&gt;Walter Faxon&#039;s magic Bitscan&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:250 --&gt;&lt;!-- ws:start:WikiTextTocRule:251: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Bitscan forward-Bitscan by Modulo&quot;&gt;Bitscan by Modulo&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:251 --&gt;&lt;!-- ws:start:WikiTextTocRule:252: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Bitscan forward-Divide and Conquer&quot;&gt;Divide and Conquer&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:252 --&gt;&lt;!-- ws:start:WikiTextTocRule:253: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Bitscan forward-Double conversion of LS1B&quot;&gt;Double conversion of LS1B&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:253 --&gt;&lt;!-- ws:start:WikiTextTocRule:254: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Bitscan forward-Index of LS1B by Popcount&quot;&gt;Index of LS1B by Popcount&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:254 --&gt;&lt;!-- ws:start:WikiTextTocRule:255: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Bitscan reverse&quot;&gt;Bitscan reverse&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:255 --&gt;&lt;!-- ws:start:WikiTextTocRule:256: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Bitscan reverse-Divide and Conquer&quot;&gt;Divide and Conquer&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:256 --&gt;&lt;!-- ws:start:WikiTextTocRule:257: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Bitscan reverse-Tribute to Frank Zappa&quot;&gt;Tribute to Frank Zappa&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:257 --&gt;&lt;!-- ws:start:WikiTextTocRule:258: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Bitscan reverse-De Bruijn Multiplication&quot;&gt;De Bruijn Multiplication&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:258 --&gt;&lt;!-- ws:start:WikiTextTocRule:259: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Bitscan reverse-Double conversion&quot;&gt;Double conversion&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:259 --&gt;&lt;!-- ws:start:WikiTextTocRule:260: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Bitscan reverse-Leading Zero Count&quot;&gt;Leading Zero Count&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:260 --&gt;&lt;!-- ws:start:WikiTextTocRule:261: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Bitscan versus Zero Count&quot;&gt;Bitscan versus Zero Count&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:261 --&gt;&lt;!-- ws:start:WikiTextTocRule:262: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Bitscan with Reset&quot;&gt;Bitscan with Reset&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:262 --&gt;&lt;!-- ws:start:WikiTextTocRule:263: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Generalized Bitscan&quot;&gt;Generalized Bitscan&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:263 --&gt;&lt;!-- ws:start:WikiTextTocRule:264: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Processor Instructions for Bitscans&quot;&gt;Processor Instructions for Bitscans&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:264 --&gt;&lt;!-- ws:start:WikiTextTocRule:265: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Processor Instructions for Bitscans-x86&quot;&gt;x86&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:265 --&gt;&lt;!-- ws:start:WikiTextTocRule:266: --&gt;&lt;div style=&quot;margin-left: 3em;&quot;&gt;&lt;a href=&quot;#Processor Instructions for Bitscans-x86-Emulating Intrinsics&quot;&gt;Emulating Intrinsics&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:266 --&gt;&lt;!-- ws:start:WikiTextTocRule:267: --&gt;&lt;div style=&quot;margin-left: 3em;&quot;&gt;&lt;a href=&quot;#Processor Instructions for Bitscans-x86-Intrinsics versus asm&quot;&gt;Intrinsics versus asm&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:267 --&gt;&lt;!-- ws:start:WikiTextTocRule:268: --&gt;&lt;div style=&quot;margin-left: 3em;&quot;&gt;&lt;a href=&quot;#Processor Instructions for Bitscans-x86-Bsf/Bsr x86-64 Timings&quot;&gt;Bsf/Bsr x86-64 Timings&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:268 --&gt;&lt;!-- ws:start:WikiTextTocRule:269: --&gt;&lt;div style=&quot;margin-left: 3em;&quot;&gt;&lt;a href=&quot;#Processor Instructions for Bitscans-x86-Bsf/Bsr behavior with zero source&quot;&gt;Bsf/Bsr behavior with zero source&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:269 --&gt;&lt;!-- ws:start:WikiTextTocRule:270: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Processor Instructions for Bitscans-ARM&quot;&gt;ARM&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:270 --&gt;&lt;!-- ws:start:WikiTextTocRule:271: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Engine Samples&quot;&gt;Engine Samples&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:271 --&gt;&lt;!-- ws:start:WikiTextTocRule:272: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#See also&quot;&gt;See also&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:272 --&gt;&lt;!-- ws:start:WikiTextTocRule:273: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Publications&quot;&gt;Publications&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:273 --&gt;&lt;!-- ws:start:WikiTextTocRule:274: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Forum Posts&quot;&gt;Forum Posts&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:274 --&gt;&lt;!-- ws:start:WikiTextTocRule:275: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Forum Posts-1996 ...&quot;&gt;1996 ...&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:275 --&gt;&lt;!-- ws:start:WikiTextTocRule:276: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Forum Posts-2000 ...&quot;&gt;2000 ...&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:276 --&gt;&lt;!-- ws:start:WikiTextTocRule:277: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Forum Posts-2005 ...&quot;&gt;2005 ...&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:277 --&gt;&lt;!-- ws:start:WikiTextTocRule:278: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Forum Posts-2010 ...&quot;&gt;2010 ...&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:278 --&gt;&lt;!-- ws:start:WikiTextTocRule:279: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Forum Posts-2015 ...&quot;&gt;2015 ...&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:279 --&gt;&lt;!-- ws:start:WikiTextTocRule:280: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#External Links&quot;&gt;External Links&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:280 --&gt;&lt;!-- ws:start:WikiTextTocRule:281: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#References&quot;&gt;References&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:281 --&gt;&lt;!-- ws:start:WikiTextTocRule:282: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#What links here?&quot;&gt;What links here?&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:282 --&gt;&lt;!-- ws:start:WikiTextTocRule:283: --&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:283 --&gt;&lt;!-- ws:start:WikiTextHeadingRule:159:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc0&quot;&gt;&lt;a name=&quot;Hardware vs. Software&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:159 --&gt;Hardware vs. Software&lt;/h1&gt;
 For recent &lt;a class=&quot;wiki_link&quot; href=&quot;/x86-64&quot;&gt;x86-64&lt;/a&gt; architectures like &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/Intel_Core_2&quot; rel=&quot;nofollow&quot;&gt;Core 2 duo&lt;/a&gt; and &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/AMD_K10&quot; rel=&quot;nofollow&quot;&gt;K10&lt;/a&gt;, one should use the &lt;a class=&quot;wiki_link&quot; href=&quot;/BitScan#bsfbsr&quot;&gt;Processor Instructions for Bitscans&lt;/a&gt; via intrinsics or &lt;a class=&quot;wiki_link&quot; href=&quot;/Assembly#InlineAssembly&quot;&gt;inline assembly&lt;/a&gt;, see &lt;a class=&quot;wiki_link&quot; href=&quot;/BitScan#x86Timing&quot;&gt;x86-64 timing&lt;/a&gt;. &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/Pentium_4&quot; rel=&quot;nofollow&quot;&gt;P4&lt;/a&gt; and &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/Athlon_64&quot; rel=&quot;nofollow&quot;&gt;K8&lt;/a&gt; have rather slow bitscan-instructions. K8 uses so called &lt;em&gt;vector path instructions&lt;/em&gt; &lt;!-- ws:start:WikiTextRefRule:28:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.chip-architect.com/news/2003_09_21_Detailed_Architecture_of_AMDs_64bit_Core.html#1.3&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Chip Architect: Detailed Architecture of AMD&#039;s Opteron - 1.3 A third class of Instructions&amp;lt;/a&amp;gt; by &amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.chip-architect.com/&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Hans de Vries&amp;lt;/a&amp;gt;&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-2&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:28 --&gt; with 9 or 11 cycles latency, even blocking other processor resources. For these processors, specially K8 with already fast multiplication, the &lt;a class=&quot;wiki_link&quot; href=&quot;/BitScan#DeBruijnMultiplation&quot;&gt;De Bruijn Multiplication&lt;/a&gt; (64-bit mode) or &lt;a class=&quot;wiki_link&quot; href=&quot;/Matt%20Taylor&quot;&gt;Matt Taylor&#039;s&lt;/a&gt; &lt;a class=&quot;wiki_link&quot; href=&quot;/BitScan#MattTaylorsFoldingtrick&quot;&gt;Folded 32-bit Multiplication&lt;/a&gt; (32-bit mode) might be the right choice. Other routines mentioned might be advantageous on certain architectures, specially with slow integer multiplications.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:161:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc1&quot;&gt;&lt;a name=&quot;Non Empty Sets&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:161 --&gt;Non Empty Sets&lt;/h1&gt;
 Bitscan is most often used in &lt;a class=&quot;wiki_link&quot; href=&quot;/Bitboard%20Serialization&quot;&gt; serializing bitboards&lt;/a&gt;, and is therefor - due to a leading while-condition - not called with empty sets. Until stated otherwise, most mentioned bitscan-routines in &lt;a class=&quot;wiki_link&quot; href=&quot;/C&quot;&gt;C&lt;/a&gt;/&lt;a class=&quot;wiki_link&quot; href=&quot;/Cpp&quot;&gt;C++&lt;/a&gt; have the same prototype and assume none empty sets as actual parameter.&lt;br /&gt;
&lt;!-- ws:start:WikiTextAnchorRule:284:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@Bitscanforward&amp;quot; title=&amp;quot;Anchor: Bitscanforward&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;Bitscanforward&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:284 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:163:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc2&quot;&gt;&lt;a name=&quot;Bitscan forward&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:163 --&gt;Bitscan forward&lt;/h1&gt;
 A bitscan &lt;strong&gt;forward&lt;/strong&gt; is used to find the index of the &lt;strong&gt;least&lt;/strong&gt; significant 1 bit (&lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#TheLeastSignificantOneBitLS1B&quot;&gt;LS1B&lt;/a&gt;).&lt;br /&gt;
&lt;!-- ws:start:WikiTextAnchorRule:285:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@TrailingZeroCount&amp;quot; title=&amp;quot;Anchor: TrailingZeroCount&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;TrailingZeroCount&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:285 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:165:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc3&quot;&gt;&lt;a name=&quot;Bitscan forward-Trailing Zero Count&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:165 --&gt;Trailing Zero Count&lt;/h2&gt;
 Bitscan forward is identical with a &lt;strong&gt;Trailing Zero Count&lt;/strong&gt; for none empty sets, possibly available as machine instruction on some architectures, for instance the &lt;a class=&quot;wiki_link&quot; href=&quot;/x86-64&quot;&gt;x86-64&lt;/a&gt; bit-manipulation expansion set &lt;a class=&quot;wiki_link&quot; href=&quot;/BMI1&quot;&gt;BMI1&lt;/a&gt;.&lt;br /&gt;
&lt;!-- ws:start:WikiTextAnchorRule:286:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@DeBruijnMultiplation&amp;quot; title=&amp;quot;Anchor: DeBruijnMultiplation&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;DeBruijnMultiplation&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:286 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:167:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc4&quot;&gt;&lt;a name=&quot;Bitscan forward-De Bruijn Multiplication&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:167 --&gt;De Bruijn Multiplication&lt;/h2&gt;
 The &lt;strong&gt;De Bruijn&lt;/strong&gt; bitscan was devised in 1997, according to &lt;a class=&quot;wiki_link&quot; href=&quot;/Donald%20Knuth&quot;&gt;Donald Knuth&lt;/a&gt; &lt;!-- ws:start:WikiTextRefRule:36:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Donald%20Knuth&amp;quot;&amp;gt;Donald Knuth&amp;lt;/a&amp;gt; (&amp;lt;strong&amp;gt;2009&amp;lt;/strong&amp;gt;). &amp;lt;em&amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www-cs-faculty.stanford.edu/%7Eknuth/taocp.html&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;The Art of Computer Programming&amp;lt;/a&amp;gt;, Volume 4, Fascicle 1: Bitwise tricks &amp;amp;amp; techniques&amp;lt;/em&amp;gt;, as &amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www-cs-faculty.stanford.edu/%7Eknuth/fasc1a.ps.gz&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Pre-Fascicle 1a postscript&amp;lt;/a&amp;gt;, p 10&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-3&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:36 --&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Mathematician#MartinLaeuter&quot;&gt;Martin Läuter&lt;/a&gt;, and independently by &lt;a class=&quot;wiki_link&quot; href=&quot;/Charles%20Leiserson&quot;&gt;Charles Leiserson&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Harald%20Prokop&quot;&gt;Harald Prokop&lt;/a&gt; and &lt;a class=&quot;wiki_link&quot; href=&quot;/Keith%20H.%20Randall&quot;&gt;Keith H. Randall&lt;/a&gt; a few month later &lt;!-- ws:start:WikiTextRefRule:45:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Charles%20Leiserson&amp;quot;&amp;gt;Charles E. Leiserson&amp;lt;/a&amp;gt;, &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Harald%20Prokop&amp;quot;&amp;gt;Harald Prokop&amp;lt;/a&amp;gt; and &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Keith%20H.%20Randall&amp;quot;&amp;gt;Keith H. Randall&amp;lt;/a&amp;gt; (&amp;lt;strong&amp;gt;1998&amp;lt;/strong&amp;gt;). &amp;lt;em&amp;gt;Using de Bruijn Sequences to Index a 1 in a Computer Word&amp;lt;/em&amp;gt;, &amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://supertech.csail.mit.edu/papers/debruijn.pdf&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;pdf&amp;lt;/a&amp;gt;&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-4&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:45 --&gt; &lt;!-- ws:start:WikiTextRefRule:48:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.stmintz.com/ccc/index.php?id=212586&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;&amp;amp;quot;Using de Bruijn Sequences to Index a 1 in a Computer Word&amp;amp;quot;&amp;lt;/a&amp;gt; discussion in &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/CCC&amp;quot;&amp;gt;CCC&amp;lt;/a&amp;gt;, February 08, 2002&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-5&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:48 --&gt; , to determine the &lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#TheLeastSignificantOneBitLS1B&quot;&gt;LS1B&lt;/a&gt; index by &lt;a class=&quot;wiki_link&quot; href=&quot;/Hash%20Table#MinimalPerfectHashing&quot;&gt;minimal perfect hashing&lt;/a&gt;. &lt;a class=&quot;wiki_link&quot; href=&quot;/De%20Bruijn%20sequence&quot;&gt;De Bruijn sequences&lt;/a&gt; were named after the Dutch mathematician &lt;a class=&quot;wiki_link&quot; href=&quot;/Nicolaas%20de%20Bruijn&quot;&gt;Nicolaas de Bruijn&lt;/a&gt;. Interestingly sequences with the binary alphabet were already investigated by the French mathematician &lt;strong&gt;Camille Flye Sainte-Marie&lt;/strong&gt; in 1894, but later &amp;quot;forgotten&amp;quot; and re-investigated and generalized by De Bruijn and &lt;a class=&quot;wiki_link&quot; href=&quot;/Mathematician#Ehrenfest&quot;&gt;Tanja van Ardenne-Ehrenfest&lt;/a&gt; half a century later &lt;!-- ws:start:WikiTextRefRule:55:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Nicolaas%20de%20Bruijn&amp;quot;&amp;gt;N. G. de Bruijn&amp;lt;/a&amp;gt; (&amp;lt;strong&amp;gt;1975&amp;lt;/strong&amp;gt;). &amp;lt;em&amp;gt;Acknowledgement of priority to C. Flye Sainte-Marie on the counting of circular arrangements of 2n zeros and ones that show each n-letter word exactly once&amp;lt;/em&amp;gt;. Technical Report, Technische Hogeschool Eindhoven, available as &amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://alexandria.tue.nl/repository/books/252901.pdf&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;pdf reprint&amp;lt;/a&amp;gt;&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-6&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-6&quot;&gt;[6]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:55 --&gt; .&lt;br /&gt;
&lt;br /&gt;
A 64-bit De Bruijn sequence contains 64-overlapped unique 6-bit sequences, thus a circle of 64 bits, where five leading zeros overlap five hidden &amp;quot;trailing&amp;quot; zeros. There are 2&lt;span style=&quot;vertical-align: super;
font-size: 80%;&quot;&gt;26&lt;/span&gt; = 67108864 odd sequences with 6 leading binary zeros and 2&lt;span style=&quot;vertical-align: super;
font-size: 80%;&quot;&gt;26&lt;/span&gt; even sequences with 5 leading binary zeros, which may be calculated from the odd ones by shifting left one. &lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:169:&amp;lt;h3&amp;gt; --&gt;&lt;h3 id=&quot;toc5&quot;&gt;&lt;a name=&quot;Bitscan forward-De Bruijn Multiplication-With isolated LS1B&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:169 --&gt;With isolated LS1B&lt;/h3&gt;
A multiplication with a power of two value (the &lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#LS1BIsolation&quot;&gt;isolated LS1B&lt;/a&gt;) acts like a left shift by it&#039;s exponent. Thus, if we multiply a 64-bit De Bruijn sequence with the isolated LS1B, we get a unique six bit subsequence inside the most significant bits. To obtain the bit-index we need to extract these upper six bits by shifting right the product, to lookup an &lt;a class=&quot;wiki_link&quot; href=&quot;/Array&quot;&gt;array&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:0:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;const int index64[64] = {&amp;lt;br/&amp;gt;    0,  1, 48,  2, 57, 49, 28,  3,&amp;lt;br/&amp;gt;   61, 58, 50, 42, 38, 29, 17,  4,&amp;lt;br/&amp;gt;   62, 55, 59, 36, 53, 51, 43, 22,&amp;lt;br/&amp;gt;   45, 39, 33, 30, 24, 18, 12,  5,&amp;lt;br/&amp;gt;   63, 47, 56, 27, 60, 41, 37, 16,&amp;lt;br/&amp;gt;   54, 35, 52, 21, 44, 32, 23, 11,&amp;lt;br/&amp;gt;   46, 26, 40, 15, 34, 20, 31, 10,&amp;lt;br/&amp;gt;   25, 14, 19,  9, 13,  8,  7,  6&amp;lt;br/&amp;gt;};&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;/**&amp;lt;br/&amp;gt; * bitScanForward&amp;lt;br/&amp;gt; * @author Martin Läuter (1997)&amp;lt;br/&amp;gt; *         Charles E. Leiserson&amp;lt;br/&amp;gt; *         Harald Prokop&amp;lt;br/&amp;gt; *         Keith H. Randall&amp;lt;br/&amp;gt; * &amp;amp;quot;Using de Bruijn Sequences to Index a 1 in a Computer Word&amp;amp;quot;&amp;lt;br/&amp;gt; * @param bb bitboard to scan&amp;lt;br/&amp;gt; * @precondition bb != 0&amp;lt;br/&amp;gt; * @return index (0..63) of least significant one bit&amp;lt;br/&amp;gt; */&amp;lt;br/&amp;gt;int bitScanForward(U64 bb) {&amp;lt;br/&amp;gt;   const U64 debruijn64 = C64(0x03f79d71b4cb0a89);&amp;lt;br/&amp;gt;   assert (bb != 0);&amp;lt;br/&amp;gt;   return index64[((bb &amp;amp;amp; -bb) * debruijn64) &amp;amp;gt;&amp;amp;gt; 58];&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; index64&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;64&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;48&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;57&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;49&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;28&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;,
   &lt;span class=&quot;nu0&quot;&gt;61&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;58&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;42&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;38&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;29&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;17&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,
   &lt;span class=&quot;nu0&quot;&gt;62&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;55&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;59&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;36&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;53&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;51&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;43&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;22&lt;/span&gt;,
   &lt;span class=&quot;nu0&quot;&gt;45&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;39&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;33&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;30&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;24&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;18&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,
   &lt;span class=&quot;nu0&quot;&gt;63&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;47&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;56&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;27&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;41&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;37&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;,
   &lt;span class=&quot;nu0&quot;&gt;54&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;35&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;52&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;21&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;44&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;32&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;23&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;11&lt;/span&gt;,
   &lt;span class=&quot;nu0&quot;&gt;46&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;26&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;40&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;34&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;31&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;,
   &lt;span class=&quot;nu0&quot;&gt;25&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;19&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;13&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/**
 * bitScanForward
 * @author Martin Läuter (1997)
 *         Charles E. Leiserson
 *         Harald Prokop
 *         Keith H. Randall
 * &amp;quot;Using de Bruijn Sequences to Index a 1 in a Computer Word&amp;quot;
 * @param bb bitboard to scan
 * @precondition bb != 0
 * @return index (0..63) of least significant one bit
 */&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; bitScanForward&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 bb&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; U64 debruijn64 &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; C64&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu12&quot;&gt;0x03f79d71b4cb0a89&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw3&quot;&gt;assert&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bb &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; index64&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bb &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;bb&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; debruijn64&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;58&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:0 --&gt;&lt;br /&gt;
See also how to &lt;a class=&quot;wiki_link&quot; href=&quot;/De%20Bruijn%20Sequence%20Generator&quot;&gt;Generate your &amp;quot;private&amp;quot; De Bruijn Bitscan Routine&lt;/a&gt;.&lt;br /&gt;
&lt;!-- ws:start:WikiTextAnchorRule:287:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@KimWalisch&amp;quot; title=&amp;quot;Anchor: KimWalisch&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;KimWalisch&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:287 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:171:&amp;lt;h3&amp;gt; --&gt;&lt;h3 id=&quot;toc6&quot;&gt;&lt;a name=&quot;Bitscan forward-De Bruijn Multiplication-With separated LS1B&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:171 --&gt;With separated LS1B&lt;/h3&gt;
Instead of the classical &lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#LS1BIsolation&quot;&gt;LS1B isolation&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Kim%20Walisch&quot;&gt;Kim Walisch&lt;/a&gt; proposed the faster &lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#ExclusiveOr&quot;&gt;xor&lt;/a&gt; with the ones&#039; decrement. The separation &lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#LS1BSeparation&quot;&gt;bb ^ (bb-1)&lt;/a&gt; contains all bits set including and below the &lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#TheLeastSignificantOneBitLS1B&quot;&gt;LS1B&lt;/a&gt;. The 2&lt;span style=&quot;vertical-align: super;
font-size: 80%;&quot;&gt;22&lt;/span&gt; (4,194,304) upper De Bruijn sequences of the 2&lt;span style=&quot;vertical-align: super;
font-size: 80%;&quot;&gt;26&lt;/span&gt; available leave unique 6-bit indices. Using LS1B separation takes advantage of the x86 lea instruction, which saves the move instruction and unlike negate, has no data dependency on the flag register. Kim reported a 10 to 15 percent faster execution (compilers: g++-4.7 -O2, clang++-3.1 -O2, x86_64) than the traditional 64-bit De Bruijn bitscan on &lt;a class=&quot;wiki_link&quot; href=&quot;/Intel&quot;&gt;Intel&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/Nehalem_%28microarchitecture%29&quot; rel=&quot;nofollow&quot;&gt;Nehalem&lt;/a&gt; and &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/Sandy_Bridge_%28microarchitecture%29&quot; rel=&quot;nofollow&quot;&gt;Sandy Bridge&lt;/a&gt; CPUs. &lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:1:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;const int index64[64] = {&amp;lt;br/&amp;gt;    0, 47,  1, 56, 48, 27,  2, 60,&amp;lt;br/&amp;gt;   57, 49, 41, 37, 28, 16,  3, 61,&amp;lt;br/&amp;gt;   54, 58, 35, 52, 50, 42, 21, 44,&amp;lt;br/&amp;gt;   38, 32, 29, 23, 17, 11,  4, 62,&amp;lt;br/&amp;gt;   46, 55, 26, 59, 40, 36, 15, 53,&amp;lt;br/&amp;gt;   34, 51, 20, 43, 31, 22, 10, 45,&amp;lt;br/&amp;gt;   25, 39, 14, 33, 19, 30,  9, 24,&amp;lt;br/&amp;gt;   13, 18,  8, 12,  7,  6,  5, 63&amp;lt;br/&amp;gt;};&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;/**&amp;lt;br/&amp;gt; * bitScanForward&amp;lt;br/&amp;gt; * @author Kim Walisch (2012)&amp;lt;br/&amp;gt; * @param bb bitboard to scan&amp;lt;br/&amp;gt; * @precondition bb != 0&amp;lt;br/&amp;gt; * @return index (0..63) of least significant one bit&amp;lt;br/&amp;gt; */&amp;lt;br/&amp;gt;int bitScanForward(U64 bb) {&amp;lt;br/&amp;gt;   const U64 debruijn64 = C64(0x03f79d71b4cb0a89);&amp;lt;br/&amp;gt;   assert (bb != 0);&amp;lt;br/&amp;gt;   return index64[((bb ^ (bb-1)) * debruijn64) &amp;amp;gt;&amp;amp;gt; 58];&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; index64&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;64&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;47&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;56&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;48&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;27&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt;,
   &lt;span class=&quot;nu0&quot;&gt;57&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;49&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;41&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;37&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;28&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;61&lt;/span&gt;,
   &lt;span class=&quot;nu0&quot;&gt;54&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;58&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;35&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;52&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;42&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;21&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;44&lt;/span&gt;,
   &lt;span class=&quot;nu0&quot;&gt;38&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;32&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;29&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;23&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;17&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;11&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;62&lt;/span&gt;,
   &lt;span class=&quot;nu0&quot;&gt;46&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;55&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;26&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;59&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;40&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;36&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;53&lt;/span&gt;,
   &lt;span class=&quot;nu0&quot;&gt;34&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;51&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;43&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;31&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;22&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;45&lt;/span&gt;,
   &lt;span class=&quot;nu0&quot;&gt;25&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;39&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;33&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;19&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;30&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;24&lt;/span&gt;,
   &lt;span class=&quot;nu0&quot;&gt;13&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;18&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;63&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/**
 * bitScanForward
 * @author Kim Walisch (2012)
 * @param bb bitboard to scan
 * @precondition bb != 0
 * @return index (0..63) of least significant one bit
 */&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; bitScanForward&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 bb&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; U64 debruijn64 &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; C64&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu12&quot;&gt;0x03f79d71b4cb0a89&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw3&quot;&gt;assert&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bb &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; index64&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bb &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bb&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; debruijn64&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;58&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:1 --&gt;&lt;!-- ws:start:WikiTextAnchorRule:288:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@MattTaylorsFoldingtrick&amp;quot; title=&amp;quot;Anchor: MattTaylorsFoldingtrick&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;MattTaylorsFoldingtrick&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:288 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:173:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc7&quot;&gt;&lt;a name=&quot;Bitscan forward-Matt Taylor&#039;s Folding trick&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:173 --&gt;Matt Taylor&#039;s Folding trick&lt;/h2&gt;
 A 32-bit friendly implementation to find the the bit-index of &lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#TheLeastSignificantOneBitLS1B&quot;&gt;LS1B&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Matt%20Taylor&quot;&gt;Matt Taylor&lt;/a&gt; &lt;!-- ws:start:WikiTextRefRule:59:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://groups.google.com/group/comp.lang.asm.x86/browse_frm/thread/de9546cd019bd72b/f46209f47d2a7ddb?lnk=gst&amp;amp;amp;q=Matt+Taylor+magic#f46209f47d2a7ddb&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Bit magic&amp;lt;/a&amp;gt; by &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Matt%20Taylor&amp;quot;&amp;gt;Matt Taylor&amp;lt;/a&amp;gt;, &amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://groups.google.com/group/comp.lang.asm.x86/topics&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;comp.lang.asm.x86&amp;lt;/a&amp;gt;, June 26, 2003&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-7&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-7&quot;&gt;[7]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:59 --&gt;. The &lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#ExclusiveOr&quot;&gt;xor&lt;/a&gt; with the ones&#039; decrement, &lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#LS1BSeparation&quot;&gt;bb ^ (bb-1)&lt;/a&gt; contains all bits set including and below the &lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#TheLeastSignificantOneBitLS1B&quot;&gt;LS1B&lt;/a&gt;. The 32-bit xor-difference of both halves yields either the complement of the upper half, or the lower half otherwise. Some samples:&lt;br /&gt;


&lt;table class=&quot;wiki_table&quot;&gt;
    &lt;tr&gt;
        &lt;th&gt;ls1b&lt;br /&gt;
&lt;/th&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;th&gt;bb ^ (bb-1)&lt;br /&gt;
&lt;/th&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;th&gt;folded&lt;br /&gt;
&lt;/th&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;63&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td&gt;&lt;tt&gt;0xffffffffffffffff&lt;/tt&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td&gt;&lt;tt&gt;0x00000000&lt;/tt&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;62&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td&gt;&lt;tt&gt;0x7fffffffffffffff&lt;/tt&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td&gt;&lt;tt&gt;0x80000000&lt;/tt&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;59&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td&gt;&lt;tt&gt;0x0fffffffffffffff&lt;/tt&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td&gt;&lt;tt&gt;0xf0000000&lt;/tt&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;32&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td&gt;&lt;tt&gt;0x00000001ffffffff&lt;/tt&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td&gt;&lt;tt&gt;0xfffffffe&lt;/tt&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;31&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td&gt;&lt;tt&gt;0x00000000ffffffff&lt;/tt&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td&gt;&lt;tt&gt;0xffffffff&lt;/tt&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;30&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td&gt;&lt;tt&gt;0x000000007fffffff&lt;/tt&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td&gt;&lt;tt&gt;0x7fffffff&lt;/tt&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;0&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td&gt;&lt;tt&gt;0x0000000000000001&lt;/tt&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td&gt;&lt;tt&gt;0x00000001&lt;/tt&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
&lt;/table&gt;

&lt;br /&gt;
Even if this folded &amp;quot;LS1B&amp;quot; contains multiple consecutive one-bits, the multiplication is De Bruijn like. There are only two magic 32-bit constants with the combined property of 32- and 64-bit De Bruijn sequences to apply this &lt;a class=&quot;wiki_link&quot; href=&quot;/Hash%20Table#MinimalPerfectHashing&quot;&gt;minimal perfect hashing&lt;/a&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:2:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;const int lsb_64_table[64] =&amp;lt;br/&amp;gt;{&amp;lt;br/&amp;gt;   63, 30,  3, 32, 59, 14, 11, 33,&amp;lt;br/&amp;gt;   60, 24, 50,  9, 55, 19, 21, 34,&amp;lt;br/&amp;gt;   61, 29,  2, 53, 51, 23, 41, 18,&amp;lt;br/&amp;gt;   56, 28,  1, 43, 46, 27,  0, 35,&amp;lt;br/&amp;gt;   62, 31, 58,  4,  5, 49, 54,  6,&amp;lt;br/&amp;gt;   15, 52, 12, 40,  7, 42, 45, 16,&amp;lt;br/&amp;gt;   25, 57, 48, 13, 10, 39,  8, 44,&amp;lt;br/&amp;gt;   20, 47, 38, 22, 17, 37, 36, 26&amp;lt;br/&amp;gt;};&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;/**&amp;lt;br/&amp;gt; * bitScanForward&amp;lt;br/&amp;gt; * @author Matt Taylor (2003)&amp;lt;br/&amp;gt; * @param bb bitboard to scan&amp;lt;br/&amp;gt; * @precondition bb != 0&amp;lt;br/&amp;gt; * @return index (0..63) of least significant one bit&amp;lt;br/&amp;gt; */&amp;lt;br/&amp;gt;int bitScanForward(U64 bb) {&amp;lt;br/&amp;gt;   unsigned int folded;&amp;lt;br/&amp;gt;   assert (bb != 0);&amp;lt;br/&amp;gt;   bb ^= bb - 1;&amp;lt;br/&amp;gt;   folded = (int) bb ^ (bb &amp;amp;gt;&amp;amp;gt; 32);&amp;lt;br/&amp;gt;   return lsb_64_table[folded * 0x78291ACF &amp;amp;gt;&amp;amp;gt; 26];&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; lsb_64_table&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;64&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;nu0&quot;&gt;63&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;30&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;32&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;59&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;11&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;33&lt;/span&gt;,
   &lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;24&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;55&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;19&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;21&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;34&lt;/span&gt;,
   &lt;span class=&quot;nu0&quot;&gt;61&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;29&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;53&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;51&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;23&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;41&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;18&lt;/span&gt;,
   &lt;span class=&quot;nu0&quot;&gt;56&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;28&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;43&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;46&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;27&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;35&lt;/span&gt;,
   &lt;span class=&quot;nu0&quot;&gt;62&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;31&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;58&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;49&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;54&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;,
   &lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;52&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;40&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;42&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;45&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;,
   &lt;span class=&quot;nu0&quot;&gt;25&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;57&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;48&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;13&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;39&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;44&lt;/span&gt;,
   &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;47&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;38&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;22&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;17&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;37&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;36&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;26&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/**
 * bitScanForward
 * @author Matt Taylor (2003)
 * @param bb bitboard to scan
 * @precondition bb != 0
 * @return index (0..63) of least significant one bit
 */&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; bitScanForward&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 bb&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; folded&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw3&quot;&gt;assert&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bb &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   bb &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bb &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   folded &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; bb &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bb &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;32&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; lsb_64_table&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;folded &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;nu12&quot;&gt;0x78291ACF&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;26&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:2 --&gt;A slightly modified version may take one &lt;a class=&quot;wiki_link&quot; href=&quot;/x86&quot;&gt;x86&lt;/a&gt;-register less in 32-bit mode, but calculates bb-1 twice:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:3:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;int bitScanForwardM(BitBoard bb) {&amp;lt;br/&amp;gt;   unsigned int folded;&amp;lt;br/&amp;gt;   assert (bb != 0);&amp;lt;br/&amp;gt;   folded  = (int)((bb ^ (bb-1)) &amp;amp;gt;&amp;amp;gt; 32);&amp;lt;br/&amp;gt;   folded ^= (int)( bb ^ (bb-1)); // lea&amp;lt;br/&amp;gt;   return lsb_64_table[folded * 0x78291ACF &amp;amp;gt;&amp;amp;gt; 26];&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; bitScanForwardM&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BitBoard bb&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; folded&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw3&quot;&gt;assert&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bb &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   folded  &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bb &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bb&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;32&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   folded &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; bb &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bb&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// lea&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; lsb_64_table&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;folded &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;nu12&quot;&gt;0x78291ACF&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;26&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:3 --&gt;with this VC6 generated &lt;a class=&quot;wiki_link&quot; href=&quot;/x86&quot;&gt;x86&lt;/a&gt; &lt;a class=&quot;wiki_link&quot; href=&quot;/Assembly&quot;&gt;assembly&lt;/a&gt; to compare:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:4:
&amp;lt;pre class=&amp;quot;text&amp;quot;&amp;gt;bitScanForward PROC NEAR                   bitScanForwardM PROC NEAR&amp;lt;br/&amp;gt;   mov  ecx, DWORD PTR _bb$[esp-4]            mov  eax, DWORD PTR _bb$[esp-4]&amp;lt;br/&amp;gt;   mov  eax, DWORD PTR _bb$[esp]              mov  ecx, eax&amp;lt;br/&amp;gt;   mov  edx, ecx                              add  ecx, -1&amp;lt;br/&amp;gt;   push esi                                   mov  ecx, DWORD PTR _bb$[esp]&amp;lt;br/&amp;gt;   add  edx, -1                               mov  edx, ecx&amp;lt;br/&amp;gt;   mov  esi, eax                              adc  edx, -1&amp;lt;br/&amp;gt;   adc  esi, -1                               xor  edx, ecx&amp;lt;br/&amp;gt;   xor  ecx, edx                              lea  ecx, DWORD PTR [eax-1]&amp;lt;br/&amp;gt;   xor  eax, esi                              xor  edx, ecx&amp;lt;br/&amp;gt;   pop  esi&amp;lt;br/&amp;gt;   xor  eax, ecx                              xor  edx, eax&amp;lt;br/&amp;gt;   imul eax, 78291acfH                        imul edx, 78291acfH&amp;lt;br/&amp;gt;   shr  eax, 26                               shr  edx, 26&amp;lt;br/&amp;gt;   mov  eax, DWORD PTR _lsb_64_table[eax*4]   mov  eax, DWORD PTR _lsb_64_table[edx*4]&amp;lt;br/&amp;gt;   ret  0                                     ret  0&amp;lt;br/&amp;gt;bitScanForward ENDP                        bitScanForward ENDP&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.text  {font-family:monospace;}
.text .imp {font-weight: bold; color: red;}
.text span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;text&quot;&gt;bitScanForward PROC NEAR                   bitScanForwardM PROC NEAR
   mov  ecx, DWORD PTR _bb$[esp-4]            mov  eax, DWORD PTR _bb$[esp-4]
   mov  eax, DWORD PTR _bb$[esp]              mov  ecx, eax
   mov  edx, ecx                              add  ecx, -1
   push esi                                   mov  ecx, DWORD PTR _bb$[esp]
   add  edx, -1                               mov  edx, ecx
   mov  esi, eax                              adc  edx, -1
   adc  esi, -1                               xor  edx, ecx
   xor  ecx, edx                              lea  ecx, DWORD PTR [eax-1]
   xor  eax, esi                              xor  edx, ecx
   pop  esi
   xor  eax, ecx                              xor  edx, eax
   imul eax, 78291acfH                        imul edx, 78291acfH
   shr  eax, 26                               shr  edx, 26
   mov  eax, DWORD PTR _lsb_64_table[eax*4]   mov  eax, DWORD PTR _lsb_64_table[edx*4]
   ret  0                                     ret  0
bitScanForward ENDP                        bitScanForward ENDP&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:4 --&gt;&lt;!-- ws:start:WikiTextAnchorRule:289:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@WalterFaxonsmagicBitscan&amp;quot; title=&amp;quot;Anchor: WalterFaxonsmagicBitscan&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;WalterFaxonsmagicBitscan&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:289 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:175:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc8&quot;&gt;&lt;a name=&quot;Bitscan forward-Walter Faxon&#039;s magic Bitscan&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:175 --&gt;Walter Faxon&#039;s magic Bitscan&lt;/h2&gt;
 &lt;a class=&quot;wiki_link&quot; href=&quot;/Walter%20Faxon&quot;&gt;Walter Faxon&#039;s&lt;/a&gt; 32-bit friendly magic bitscan &lt;!-- ws:start:WikiTextRefRule:63:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.stmintz.com/ccc/index.php?id=265635&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Another hacky method for bitboard bit extraction&amp;lt;/a&amp;gt; by &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Walter%20Faxon&amp;quot;&amp;gt;Walter Faxon&amp;lt;/a&amp;gt;, &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/CCC&amp;quot;&amp;gt;CCC&amp;lt;/a&amp;gt;, November 17, 2002&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-8&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-8&quot;&gt;[8]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:63 --&gt; uses a fast none minimal &lt;a class=&quot;wiki_link&quot; href=&quot;/Hash%20Table#PerfectHashing&quot;&gt;perfect hashing&lt;/a&gt; function:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:5:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;const char LSB_64_table[154] =&amp;lt;br/&amp;gt;{&amp;lt;br/&amp;gt;#define __ 0&amp;lt;br/&amp;gt;   22,__,__,__,30,__,__,38,18,__, 16,15,17,__,46, 9,19, 8, 7,10,&amp;lt;br/&amp;gt;   0, 63, 1,56,55,57, 2,11,__,58, __,__,20,__, 3,__,__,59,__,__,&amp;lt;br/&amp;gt;   __,__,__,12,__,__,__,__,__,__, 4,__,__,60,__,__,__,__,__,__,&amp;lt;br/&amp;gt;   __,__,__,__,21,__,__,__,29,__, __,37,__,__,__,13,__,__,45,__,&amp;lt;br/&amp;gt;   __,__, 5,__,__,61,__,__,__,53, __,__,__,__,__,__,__,__,__,__,&amp;lt;br/&amp;gt;   28,__,__,36,__,__,__,__,__,__, 44,__,__,__,__,__,27,__,__,35,&amp;lt;br/&amp;gt;   __,52,__,__,26,__,43,34,25,23, 24,33,31,32,42,39,40,51,41,14,&amp;lt;br/&amp;gt;   __,49,47,48,__,50, 6,__,__,62, __,__,__,54&amp;lt;br/&amp;gt;#undef __&amp;lt;br/&amp;gt;};&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;/**&amp;lt;br/&amp;gt; * bitScanForward&amp;lt;br/&amp;gt; * @author Walter Faxon, slightly modified&amp;lt;br/&amp;gt; * @param bb bitboard to scan&amp;lt;br/&amp;gt; * @precondition bb != 0&amp;lt;br/&amp;gt; * @return index (0..63) of least significant one bit&amp;lt;br/&amp;gt; */&amp;lt;br/&amp;gt;int bitScanForward(U64 bb)&amp;lt;br/&amp;gt;{&amp;lt;br/&amp;gt;   unsigned int t32;&amp;lt;br/&amp;gt;   assert(bb);&amp;lt;br/&amp;gt;   bb  ^= bb - 1;&amp;lt;br/&amp;gt;   t32  = (int)bb ^ (int)(bb &amp;amp;gt;&amp;amp;gt; 32);&amp;lt;br/&amp;gt;   t32 ^= 0x01C5FC81;&amp;lt;br/&amp;gt;   t32 +=  t32 &amp;amp;gt;&amp;amp;gt; 16;&amp;lt;br/&amp;gt;   t32 -= (t32 &amp;amp;gt;&amp;amp;gt; 8) + 51;&amp;lt;br/&amp;gt;   return LSB_64_table [t32 &amp;amp;amp; 255]; // 0..63&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; LSB_64_table&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;154&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#define __ 0&lt;/span&gt;
   &lt;span class=&quot;nu0&quot;&gt;22&lt;/span&gt;,__,__,__,&lt;span class=&quot;nu0&quot;&gt;30&lt;/span&gt;,__,__,&lt;span class=&quot;nu0&quot;&gt;38&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;18&lt;/span&gt;,__, &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;17&lt;/span&gt;,__,&lt;span class=&quot;nu0&quot;&gt;46&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;19&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;,
   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;63&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;56&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;55&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;57&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;11&lt;/span&gt;,__,&lt;span class=&quot;nu0&quot;&gt;58&lt;/span&gt;, __,__,&lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;,__, &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;,__,__,&lt;span class=&quot;nu0&quot;&gt;59&lt;/span&gt;,__,__,
   __,__,__,&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;,__,__,__,__,__,__, &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;,__,__,&lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt;,__,__,__,__,__,__,
   __,__,__,__,&lt;span class=&quot;nu0&quot;&gt;21&lt;/span&gt;,__,__,__,&lt;span class=&quot;nu0&quot;&gt;29&lt;/span&gt;,__, __,&lt;span class=&quot;nu0&quot;&gt;37&lt;/span&gt;,__,__,__,&lt;span class=&quot;nu0&quot;&gt;13&lt;/span&gt;,__,__,&lt;span class=&quot;nu0&quot;&gt;45&lt;/span&gt;,__,
   __,__, &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;,__,__,&lt;span class=&quot;nu0&quot;&gt;61&lt;/span&gt;,__,__,__,&lt;span class=&quot;nu0&quot;&gt;53&lt;/span&gt;, __,__,__,__,__,__,__,__,__,__,
   &lt;span class=&quot;nu0&quot;&gt;28&lt;/span&gt;,__,__,&lt;span class=&quot;nu0&quot;&gt;36&lt;/span&gt;,__,__,__,__,__,__, &lt;span class=&quot;nu0&quot;&gt;44&lt;/span&gt;,__,__,__,__,__,&lt;span class=&quot;nu0&quot;&gt;27&lt;/span&gt;,__,__,&lt;span class=&quot;nu0&quot;&gt;35&lt;/span&gt;,
   __,&lt;span class=&quot;nu0&quot;&gt;52&lt;/span&gt;,__,__,&lt;span class=&quot;nu0&quot;&gt;26&lt;/span&gt;,__,&lt;span class=&quot;nu0&quot;&gt;43&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;34&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;25&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;23&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;24&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;33&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;31&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;32&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;42&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;39&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;40&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;51&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;41&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt;,
   __,&lt;span class=&quot;nu0&quot;&gt;49&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;47&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;48&lt;/span&gt;,__,&lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;,__,__,&lt;span class=&quot;nu0&quot;&gt;62&lt;/span&gt;, __,__,__,&lt;span class=&quot;nu0&quot;&gt;54&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#undef __&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/**
 * bitScanForward
 * @author Walter Faxon, slightly modified
 * @param bb bitboard to scan
 * @precondition bb != 0
 * @return index (0..63) of least significant one bit
 */&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; bitScanForward&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 bb&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; t32&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw3&quot;&gt;assert&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bb&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   bb  &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bb &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   t32  &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;bb &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bb &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;32&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   t32 &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu12&quot;&gt;0x01C5FC81&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   t32 &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;  t32 &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   t32 &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;t32 &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;51&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; LSB_64_table &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;t32 &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;255&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// 0..63&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:5 --&gt;A slightly modified version may take one &lt;a class=&quot;wiki_link&quot; href=&quot;/x86&quot;&gt;x86&lt;/a&gt;-register less in 32-bit mode, but calculates bb-1 twice:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:6:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;int bitScanForward(U64 bb)&amp;lt;br/&amp;gt;{&amp;lt;br/&amp;gt;   int t32 = 0x01C5FC81;&amp;lt;br/&amp;gt;   assert(bb);&amp;lt;br/&amp;gt;   t32 ^= (int)((bb ^ (bb-1)) &amp;amp;gt;&amp;amp;gt; 32);&amp;lt;br/&amp;gt;   t32 ^= (int)( bb ^ (bb-1)); // lea&amp;lt;br/&amp;gt;   t32 += t32 &amp;amp;gt;&amp;amp;gt; 16;&amp;lt;br/&amp;gt;   t32 -=(t32 &amp;amp;gt;&amp;amp;gt;  8) + 51;&amp;lt;br/&amp;gt;   return LSB_64_table [t32 &amp;amp;amp; 255];&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; bitScanForward&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 bb&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; t32 &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu12&quot;&gt;0x01C5FC81&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw3&quot;&gt;assert&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bb&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   t32 &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bb &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bb&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;32&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   t32 &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; bb &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bb&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// lea&lt;/span&gt;
   t32 &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; t32 &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   t32 &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;t32 &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt;  &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;51&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; LSB_64_table &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;t32 &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;255&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:6 --&gt;The initial &lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#LS1BSeparation&quot;&gt;LS1B separation&lt;/a&gt; by bb ^ (bb-1) and folding is equivalent to &lt;a class=&quot;wiki_link&quot; href=&quot;/BitScan#MattTaylorsFoldingtrick&quot;&gt;Matt&#039;s&lt;/a&gt;,&lt;br /&gt;


&lt;table class=&quot;wiki_table&quot;&gt;
    &lt;tr&gt;
        &lt;th&gt;ls1b&lt;br /&gt;
&lt;/th&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;th&gt;bb ^ (bb-1)&lt;br /&gt;
&lt;/th&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;th&gt;folded&lt;br /&gt;
&lt;/th&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;63&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td&gt;&lt;tt&gt;0xffffffffffffffff&lt;/tt&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td&gt;&lt;tt&gt;0x00000000&lt;/tt&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;62&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td&gt;&lt;tt&gt;0x7fffffffffffffff&lt;/tt&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td&gt;&lt;tt&gt;0x80000000&lt;/tt&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;59&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td&gt;&lt;tt&gt;0x0fffffffffffffff&lt;/tt&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td&gt;&lt;tt&gt;0xf0000000&lt;/tt&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;32&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td&gt;&lt;tt&gt;0x00000001ffffffff&lt;/tt&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td&gt;&lt;tt&gt;0xfffffffe&lt;/tt&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;31&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td&gt;&lt;tt&gt;0x00000000ffffffff&lt;/tt&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td&gt;&lt;tt&gt;0xffffffff&lt;/tt&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;30&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td&gt;&lt;tt&gt;0x000000007fffffff&lt;/tt&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td&gt;&lt;tt&gt;0x7fffffff&lt;/tt&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;0&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td&gt;&lt;tt&gt;0x0000000000000001&lt;/tt&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td&gt;&lt;tt&gt;0x00000001&lt;/tt&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
&lt;/table&gt;

while Walter originally resets the LS1B, yielding in a cyclic index wrap:&lt;br /&gt;


&lt;table class=&quot;wiki_table&quot;&gt;
    &lt;tr&gt;
        &lt;th&gt;LS1B&lt;br /&gt;
&lt;/th&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;th&gt;(bb &amp;amp; (bb-1)) ^ (bb-1)&lt;br /&gt;
&lt;/th&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;th&gt;folded&lt;br /&gt;
&lt;/th&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;0&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td&gt;&lt;tt&gt;0x0000000000000000&lt;/tt&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td&gt;&lt;tt&gt;0x00000000&lt;/tt&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;63&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td&gt;&lt;tt&gt;0x7fffffffffffffff&lt;/tt&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td&gt;&lt;tt&gt;0x80000000&lt;/tt&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;60&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td&gt;&lt;tt&gt;0x0fffffffffffffff&lt;/tt&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td&gt;&lt;tt&gt;0xf0000000&lt;/tt&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;33&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td&gt;&lt;tt&gt;0x00000001ffffffff&lt;/tt&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td&gt;&lt;tt&gt;0xfffffffe&lt;/tt&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;32&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td&gt;&lt;tt&gt;0x00000000ffffffff&lt;/tt&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td&gt;&lt;tt&gt;0xffffffff&lt;/tt&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;31&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td&gt;&lt;tt&gt;0x000000007fffffff&lt;/tt&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td&gt;&lt;tt&gt;0x7fffffff&lt;/tt&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;1&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td&gt;&lt;tt&gt;0x0000000000000001&lt;/tt&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td&gt;&lt;tt&gt;0x00000001&lt;/tt&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
&lt;/table&gt;

&lt;!-- ws:start:WikiTextAnchorRule:290:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@BitscanByModulo&amp;quot; title=&amp;quot;Anchor: BitscanByModulo&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;BitscanByModulo&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:290 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:177:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc9&quot;&gt;&lt;a name=&quot;Bitscan forward-Bitscan by Modulo&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:177 --&gt;Bitscan by Modulo&lt;/h2&gt;
 Another idea is to apply a &lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#Modulo&quot;&gt;modulo&lt;/a&gt; (remainder of a division) operation of the isolated &lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#TheLeastSignificantOneBitLS1B&quot;&gt;LS1B&lt;/a&gt; by the prime number 67 &lt;!-- ws:start:WikiTextRefRule:67:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://groups.google.com/group/rec.games.chess.computer/browse_frm/thread/d5dbf08c66e83517#&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;bitboard 2^i mod 67 is unique&amp;lt;/a&amp;gt; by &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Stefan%20Plenkner&amp;quot;&amp;gt;Stefan Plenkner&amp;lt;/a&amp;gt;, &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Computer%20Chess%20Forums&amp;quot;&amp;gt;rgcc&amp;lt;/a&amp;gt;, August 6, 1996&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-9&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-9&quot;&gt;[9]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:67 --&gt; &lt;!-- ws:start:WikiTextRefRule:76:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Pablo%20San%20Segundo&amp;quot;&amp;gt;Pablo San Segundo&amp;lt;/a&amp;gt;, &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Ram%C3%B3n%20Gal%C3%A1n&amp;quot;&amp;gt;Ramón Galán&amp;lt;/a&amp;gt; (&amp;lt;strong&amp;gt;2005&amp;lt;/strong&amp;gt;). &amp;lt;em&amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.actapress.com/Abstract.aspx?paperId=18953&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Bitboards: A New Approach&amp;lt;/a&amp;gt;&amp;lt;/em&amp;gt;. &amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.informatik.uni-trier.de/%7Eley/db/conf/aia/aia2005.html#SegundoG05&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;AIA 2005&amp;lt;/a&amp;gt;&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-10&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-10&quot;&gt;[10]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:76 --&gt; . The remainder 0..66 can be used to &lt;a class=&quot;wiki_link&quot; href=&quot;/Hash%20Table#PerfectHashing&quot;&gt;perfectly hash&lt;/a&gt; the bit-index table. Three gaps are 0, 17, and 34, so the mod 67 can make a branchless trailing zero count:&lt;br /&gt;


&lt;table class=&quot;wiki_table&quot;&gt;
    &lt;tr&gt;
        &lt;th&gt;Bit-Index&lt;br /&gt;
&lt;/th&gt;
        &lt;th&gt;Bitboard&lt;br /&gt;
&lt;/th&gt;
        &lt;th&gt;mod 67&lt;br /&gt;
&lt;/th&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;-&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000000000000000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;0&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;0&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000000000000001&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;1&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;1&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000000000000002&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;2&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;2&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000000000000004&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;4&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;3&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000000000000008&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;8&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;4&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000000000000010&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;16&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000000000000020&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;32&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;6&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000000000000040&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;64&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;7&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000000000000080&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;61&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;8&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000000000000100&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;55&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;9&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000000000000200&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;43&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000000000000400&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;19&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;11&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000000000000800&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;38&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;12&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000000000001000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;9&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;13&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000000000002000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;18&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;14&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000000000004000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;36&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;15&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000000000008000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;5&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;16&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000000000010000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;10&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;17&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000000000020000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;20&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;18&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000000000040000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;40&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;19&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000000000080000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;13&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;20&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000000000100000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;26&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;21&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000000000200000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;52&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;22&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000000000400000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;37&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;23&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000000000800000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;7&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;24&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000000001000000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;14&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;25&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000000002000000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;28&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;26&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000000004000000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;56&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;27&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000000008000000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;45&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;28&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000000010000000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;23&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;29&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000000020000000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;46&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;30&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000000040000000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;25&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;31&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000000080000000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;50&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;32&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000000100000000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;33&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;33&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000000200000000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;66&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;34&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000000400000000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;65&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;35&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000000800000000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;63&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;36&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000001000000000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;59&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;37&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000002000000000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;51&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;38&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000004000000000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;35&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;39&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000008000000000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;3&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;40&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000010000000000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;6&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;41&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000020000000000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;12&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;42&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000040000000000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;24&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;43&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000080000000000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;48&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;44&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000100000000000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;29&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;45&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000200000000000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;58&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;46&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000400000000000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;49&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;47&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0000800000000000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;31&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;48&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0001000000000000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;62&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;49&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0002000000000000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;57&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;50&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0004000000000000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;47&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;51&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0008000000000000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;27&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;52&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0010000000000000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;54&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;53&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0020000000000000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;41&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;54&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0040000000000000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;15&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;55&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0080000000000000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;30&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;56&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0100000000000000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;60&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;57&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0200000000000000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;53&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;58&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0400000000000000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;39&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;59&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x0800000000000000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;11&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;60&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x1000000000000000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;22&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;61&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x2000000000000000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;44&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;62&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x4000000000000000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;21&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;63&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;0x8000000000000000&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;42&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
&lt;/table&gt;

&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:7:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;/**&amp;lt;br/&amp;gt; * trailingZeroCount&amp;lt;br/&amp;gt; * @param bb bitboard to scan&amp;lt;br/&amp;gt; * @return index (0..63) of least significant one bit, 64 if bb is zero&amp;lt;br/&amp;gt; */&amp;lt;br/&amp;gt;int trailingZeroCount(U64 bb) {&amp;lt;br/&amp;gt;   static const int lookup67[67+1] = {&amp;lt;br/&amp;gt;      64,  0,  1, 39,  2, 15, 40, 23,&amp;lt;br/&amp;gt;       3, 12, 16, 59, 41, 19, 24, 54,&amp;lt;br/&amp;gt;       4, -1, 13, 10, 17, 62, 60, 28,&amp;lt;br/&amp;gt;      42, 30, 20, 51, 25, 44, 55, 47,&amp;lt;br/&amp;gt;       5, 32, -1, 38, 14, 22, 11, 58,&amp;lt;br/&amp;gt;      18, 53, 63,  9, 61, 27, 29, 50,&amp;lt;br/&amp;gt;      43, 46, 31, 37, 21, 57, 52,  8,&amp;lt;br/&amp;gt;      26, 49, 45, 36, 56,  7, 48, 35,&amp;lt;br/&amp;gt;       6, 34, 33, -1 };&amp;lt;br/&amp;gt;   return lookup67[(bb &amp;amp;amp; -bb) % 67];&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;/**
 * trailingZeroCount
 * @param bb bitboard to scan
 * @return index (0..63) of least significant one bit, 64 if bb is zero
 */&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; trailingZeroCount&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 bb&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;kw4&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; lookup67&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;67&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
      &lt;span class=&quot;nu0&quot;&gt;64&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;39&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;40&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;23&lt;/span&gt;,
       &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;59&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;41&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;19&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;24&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;54&lt;/span&gt;,
       &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;13&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;17&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;62&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;28&lt;/span&gt;,
      &lt;span class=&quot;nu0&quot;&gt;42&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;30&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;51&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;25&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;44&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;55&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;47&lt;/span&gt;,
       &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;32&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;38&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;22&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;11&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;58&lt;/span&gt;,
      &lt;span class=&quot;nu0&quot;&gt;18&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;53&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;63&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;61&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;27&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;29&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;,
      &lt;span class=&quot;nu0&quot;&gt;43&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;46&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;31&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;37&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;21&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;57&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;52&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,
      &lt;span class=&quot;nu0&quot;&gt;26&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;49&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;45&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;36&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;56&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;48&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;35&lt;/span&gt;,
       &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;34&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;33&lt;/span&gt;, &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; lookup67&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bb &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;bb&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;67&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:7 --&gt;Since div/mod is an expensive instruction, a &lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#Modulo&quot;&gt;modulo by a constant&lt;/a&gt; is likely replaced by reciprocal fixed point multiplication to get the quotient and a second multiplication and difference to get the remainder. Compared with De Bruijn multiplication it is still too slow.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:179:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc10&quot;&gt;&lt;a name=&quot;Bitscan forward-Divide and Conquer&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:179 --&gt;Divide and Conquer&lt;/h2&gt;
 This is a broad group of bitscans that test in succession, like the trailing zero count based on &lt;a class=&quot;wiki_link&quot; href=&quot;/Reinhard%20Scharnagl&quot;&gt;Reinhard Scharnagl&#039;s&lt;/a&gt; proposal &lt;!-- ws:start:WikiTextRefRule:80:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.open-aurec.com/wbforum/viewtopic.php?f=4&amp;amp;amp;t=3141&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Best BitBoard LSB funktion?&amp;lt;/a&amp;gt; by &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Reinhard%20Scharnagl&amp;quot;&amp;gt;Reinhard Scharnagl&amp;lt;/a&amp;gt;, &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Computer%20Chess%20Forums&amp;quot;&amp;gt;Winboard Programming Forum&amp;lt;/a&amp;gt;, July 20, 2005&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-11&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-11&quot;&gt;[11]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:80 --&gt; :&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:8:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;/**&amp;lt;br/&amp;gt; * trailingZeroCount&amp;lt;br/&amp;gt; *  like bitScanForward for none empty sets&amp;lt;br/&amp;gt; * @author Reinhard Scharnagl&amp;lt;br/&amp;gt; * @param bb bitboard to scan&amp;lt;br/&amp;gt; * @return index (0..64)&amp;lt;br/&amp;gt; */&amp;lt;br/&amp;gt;unsigned char lsbRS[256] = {&amp;lt;br/&amp;gt;    8, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,&amp;lt;br/&amp;gt;    4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,&amp;lt;br/&amp;gt;    5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,&amp;lt;br/&amp;gt;    4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,&amp;lt;br/&amp;gt;    6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,&amp;lt;br/&amp;gt;    4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,&amp;lt;br/&amp;gt;    5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,&amp;lt;br/&amp;gt;    4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,&amp;lt;br/&amp;gt;    7, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,&amp;lt;br/&amp;gt;    4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,&amp;lt;br/&amp;gt;    5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,&amp;lt;br/&amp;gt;    4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,&amp;lt;br/&amp;gt;    6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,&amp;lt;br/&amp;gt;    4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,&amp;lt;br/&amp;gt;    5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,&amp;lt;br/&amp;gt;    4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0&amp;lt;br/&amp;gt;};&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int trailingZeroCount(U64 b) {&amp;lt;br/&amp;gt;  unsigned buf;&amp;lt;br/&amp;gt;  int acc = 0;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;  if ((buf = (unsigned)b) == 0) {&amp;lt;br/&amp;gt;    buf = (unsigned)(b &amp;amp;gt;&amp;amp;gt; 32);&amp;lt;br/&amp;gt;    acc = 32;&amp;lt;br/&amp;gt;  }&amp;lt;br/&amp;gt;  if ((unsigned short)buf == 0) {&amp;lt;br/&amp;gt;    buf &amp;amp;gt;&amp;amp;gt;= 16;&amp;lt;br/&amp;gt;    acc += 16;&amp;lt;br/&amp;gt;  }&amp;lt;br/&amp;gt;  if ((unsigned char)buf == 0) {&amp;lt;br/&amp;gt;    buf &amp;amp;gt;&amp;amp;gt;= 8;&amp;lt;br/&amp;gt;    acc += 8;&amp;lt;br/&amp;gt;  }&amp;lt;br/&amp;gt;  return acc + lsbRS[buf &amp;amp;amp; 0xff];&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;/**
 * trailingZeroCount
 *  like bitScanForward for none empty sets
 * @author Reinhard Scharnagl
 * @param bb bitboard to scan
 * @return index (0..64)
 */&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; lsbRS&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;256&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,
    &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,
    &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,
    &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,
    &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,
    &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,
    &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,
    &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,
    &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,
    &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,
    &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,
    &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,
    &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,
    &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,
    &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,
    &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; trailingZeroCount&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 b&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; buf&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; acc &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;buf &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;b&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    buf &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;32&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    acc &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;32&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;short&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;buf &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    buf &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    acc &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;buf &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    buf &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    acc &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; acc &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; lsbRS&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;buf &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;nu12&quot;&gt;0xff&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:8 --&gt;What about direct calculation? On &lt;a class=&quot;wiki_link&quot; href=&quot;/x86&quot;&gt;x86&lt;/a&gt; this is a chain of test, set and lea instructions:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:9:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;/**&amp;lt;br/&amp;gt; * bitScanForward&amp;lt;br/&amp;gt; * @author Gerd Isenberg&amp;lt;br/&amp;gt; * @param bb bitboard to scan&amp;lt;br/&amp;gt; * @precondition bb != 0&amp;lt;br/&amp;gt; * @return index (0..63) of least significant one bit&amp;lt;br/&amp;gt; */&amp;lt;br/&amp;gt;int bitScanForward(U64 bb) {&amp;lt;br/&amp;gt;   unsigned int lsb;&amp;lt;br/&amp;gt;   assert (bb != 0);&amp;lt;br/&amp;gt;   bb &amp;amp;amp;= -bb; // LS1B-Isolation&amp;lt;br/&amp;gt;   lsb = (unsigned)bb&amp;lt;br/&amp;gt;       | (unsigned)(bb&amp;amp;gt;&amp;amp;gt;32);&amp;lt;br/&amp;gt;   return (((((((((((unsigned)(bb&amp;amp;gt;&amp;amp;gt;32) !=0)  * 2)&amp;lt;br/&amp;gt;                 + ((lsb &amp;amp;amp; 0xffff0000) !=0)) * 2)&amp;lt;br/&amp;gt;                 + ((lsb &amp;amp;amp; 0xff00ff00) !=0)) * 2)&amp;lt;br/&amp;gt;                 + ((lsb &amp;amp;amp; 0xf0f0f0f0) !=0)) * 2)&amp;lt;br/&amp;gt;                 + ((lsb &amp;amp;amp; 0xcccccccc) !=0)) * 2)&amp;lt;br/&amp;gt;                 + ((lsb &amp;amp;amp; 0xaaaaaaaa) !=0);&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;/**
 * bitScanForward
 * @author Gerd Isenberg
 * @param bb bitboard to scan
 * @precondition bb != 0
 * @return index (0..63) of least significant one bit
 */&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; bitScanForward&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 bb&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; lsb&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw3&quot;&gt;assert&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bb &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   bb &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;bb&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// LS1B-Isolation&lt;/span&gt;
   lsb &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;bb
       &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bb&lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;32&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bb&lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;32&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                 &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;lsb &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;nu12&quot;&gt;0xffff0000&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                 &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;lsb &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;nu12&quot;&gt;0xff00ff00&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                 &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;lsb &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;nu12&quot;&gt;0xf0f0f0f0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                 &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;lsb &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;nu12&quot;&gt;0xcccccccc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                 &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;lsb &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;nu12&quot;&gt;0xaaaaaaaa&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:9 --&gt;&lt;!-- ws:start:WikiTextAnchorRule:291:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@DoubleConversionofLS1B&amp;quot; title=&amp;quot;Anchor: DoubleConversionofLS1B&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;DoubleConversionofLS1B&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:291 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:181:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc11&quot;&gt;&lt;a name=&quot;Bitscan forward-Double conversion of LS1B&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:181 --&gt;Double conversion of LS1B&lt;/h2&gt;
 Assuming 64-bit &lt;a class=&quot;wiki_link&quot; href=&quot;/Double&quot;&gt;doubles&lt;/a&gt; and &lt;a class=&quot;wiki_link&quot; href=&quot;/little-endian&quot;&gt;little-endian&lt;/a&gt; structure (&lt;em&gt;not portable&lt;/em&gt;). We convert the isolated &lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#TheLeastSignificantOneBitLS1B&quot;&gt;LS1B&lt;/a&gt; to a double and interprete the exponent:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:10:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;/**&amp;lt;br/&amp;gt; * bitScanForward&amp;lt;br/&amp;gt; * @author Gerd Isenberg&amp;lt;br/&amp;gt; * @param bb bitboard to scan&amp;lt;br/&amp;gt; * @return index (0..63) of least significant one bit&amp;lt;br/&amp;gt; *         -1023 if passing zero&amp;lt;br/&amp;gt; */&amp;lt;br/&amp;gt;int bitScanForward(U64 bb)&amp;lt;br/&amp;gt;{&amp;lt;br/&amp;gt;   union {&amp;lt;br/&amp;gt;      double d;&amp;lt;br/&amp;gt;      struct {&amp;lt;br/&amp;gt;         unsigned int mantissal : 32;&amp;lt;br/&amp;gt;         unsigned int mantissah : 20;&amp;lt;br/&amp;gt;         unsigned int exponent : 11;&amp;lt;br/&amp;gt;         unsigned int sign : 1;&amp;lt;br/&amp;gt;      };&amp;lt;br/&amp;gt;   } ud;&amp;lt;br/&amp;gt;   ud.d = (double)(bb &amp;amp;amp; -bb); // isolated LS1B to double&amp;lt;br/&amp;gt;   return ud.exponent - 1023;&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;/**
 * bitScanForward
 * @author Gerd Isenberg
 * @param bb bitboard to scan
 * @return index (0..63) of least significant one bit
 *         -1023 if passing zero
 */&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; bitScanForward&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 bb&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;kw4&quot;&gt;union&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
      &lt;span class=&quot;kw4&quot;&gt;double&lt;/span&gt; d&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;kw4&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
         &lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; mantissal &lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;32&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
         &lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; mantissah &lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
         &lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; exponent &lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
         &lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; sign &lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; ud&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   ud.&lt;span class=&quot;me1&quot;&gt;d&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;double&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bb &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;bb&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// isolated LS1B to double&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; ud.&lt;span class=&quot;me1&quot;&gt;exponent&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1023&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:10 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:183:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc12&quot;&gt;&lt;a name=&quot;Bitscan forward-Index of LS1B by Popcount&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:183 --&gt;Index of LS1B by Popcount&lt;/h2&gt;
 If we have a fast &lt;a class=&quot;wiki_link&quot; href=&quot;/Population%20Count&quot;&gt;population-count&lt;/a&gt; instruction, we can count the trailing zeros of &lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#TheLeastSignificantOneBitLS1B&quot;&gt;LS1B&lt;/a&gt; after subtracting one:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:11:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;// precondition bb != 0&amp;lt;br/&amp;gt;int bitScanForward(U64 bb) {&amp;lt;br/&amp;gt;   assert (bb != 0);&amp;lt;br/&amp;gt;   return popCount( (bb &amp;amp;amp; -bb) - 1 );&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;co1&quot;&gt;// precondition bb != 0&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; bitScanForward&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 bb&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;kw3&quot;&gt;assert&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bb &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; popCount&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bb &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;bb&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:11 --&gt;&lt;!-- ws:start:WikiTextAnchorRule:292:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@Bitscanreverse&amp;quot; title=&amp;quot;Anchor: Bitscanreverse&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;Bitscanreverse&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:292 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:185:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc13&quot;&gt;&lt;a name=&quot;Bitscan reverse&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:185 --&gt;Bitscan reverse&lt;/h1&gt;
 A bitscan &lt;strong&gt;reverse&lt;/strong&gt; is used to find the index of the &lt;strong&gt;most&lt;/strong&gt; significant 1 bit (&lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#TheMostSignificantOneBitMS1B&quot;&gt;MS1B&lt;/a&gt;). For non empty sets it is equivalent to &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/Floor_and_ceiling_functions&quot; rel=&quot;nofollow&quot;&gt;floor&lt;/a&gt; of the &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/Binary_logarithm&quot; rel=&quot;nofollow&quot;&gt;base-2 logarithm&lt;/a&gt;. MS1B isolalation or separation is more expensive than LS1B isolalation or separation, due to the LS1B related &lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#TheTwosComplement&quot;&gt;Two&#039;s complement&lt;/a&gt; tricks are not applicable. However, beside Divide and Conquer and Double conversion, Bitscan reverse with MS1B separation is mentioned.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:187:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc14&quot;&gt;&lt;a name=&quot;Bitscan reverse-Divide and Conquer&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:187 --&gt;Divide and Conquer&lt;/h2&gt;
 As introduced by &lt;a class=&quot;wiki_link&quot; href=&quot;/Eugene%20Nalimov&quot;&gt;Eugene Nalimov&lt;/a&gt; in 2000, for an &lt;a class=&quot;wiki_link&quot; href=&quot;/Itanium&quot;&gt;IA-64&lt;/a&gt; version of &lt;a class=&quot;wiki_link&quot; href=&quot;/Crafty&quot;&gt;Crafty&lt;/a&gt; &lt;!-- ws:start:WikiTextRefRule:84:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.stmintz.com/ccc/index.php?id=124712&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Re: Will the Itanium have a BSF or BSR instruction?&amp;lt;/a&amp;gt; by &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Eugene%20Nalimov&amp;quot;&amp;gt;Eugene Nalimov&amp;lt;/a&amp;gt;, &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/CCC&amp;quot;&amp;gt;CCC&amp;lt;/a&amp;gt;, August 16, 2000&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-12&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-12&quot;&gt;[12]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:84 --&gt; &lt;!-- ws:start:WikiTextRefRule:88:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.talkchess.com/forum/viewtopic.php?t=38777&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;ms1bTable array in Eugene Nalimovs bitScanReverse&amp;lt;/a&amp;gt; by &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Stef%20Luijten&amp;quot;&amp;gt;Stef Luijten&amp;lt;/a&amp;gt;, &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/CCC&amp;quot;&amp;gt;CCC&amp;lt;/a&amp;gt;, April 17, 2011&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-13&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-13&quot;&gt;[13]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:88 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:12:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;/**&amp;lt;br/&amp;gt; * bitScanReverse&amp;lt;br/&amp;gt; * @author Eugene Nalimov&amp;lt;br/&amp;gt; * @param bb bitboard to scan&amp;lt;br/&amp;gt; * @return index (0..63) of most significant one bit&amp;lt;br/&amp;gt; */&amp;lt;br/&amp;gt;int bitScanReverse(U64 bb)&amp;lt;br/&amp;gt;{&amp;lt;br/&amp;gt;   int result = 0;&amp;lt;br/&amp;gt;   if (bb &amp;amp;gt; 0xFFFFFFFF) {&amp;lt;br/&amp;gt;      bb &amp;amp;gt;&amp;amp;gt;= 32;&amp;lt;br/&amp;gt;      result = 32;&amp;lt;br/&amp;gt;   }&amp;lt;br/&amp;gt;   if (bb &amp;amp;gt; 0xFFFF) {&amp;lt;br/&amp;gt;      bb &amp;amp;gt;&amp;amp;gt;= 16;&amp;lt;br/&amp;gt;      result += 16;&amp;lt;br/&amp;gt;   }&amp;lt;br/&amp;gt;   if (bb &amp;amp;gt; 0xFF) {&amp;lt;br/&amp;gt;      bb &amp;amp;gt;&amp;amp;gt;= 8;&amp;lt;br/&amp;gt;      result += 8;&amp;lt;br/&amp;gt;   }&amp;lt;br/&amp;gt;   return result + ms1bTable[bb];&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;/**
 * bitScanReverse
 * @author Eugene Nalimov
 * @param bb bitboard to scan
 * @return index (0..63) of most significant one bit
 */&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; bitScanReverse&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 bb&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; result &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bb &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu12&quot;&gt;0xFFFFFFFF&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
      bb &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;32&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
      result &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;32&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bb &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu12&quot;&gt;0xFFFF&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
      bb &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
      result &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bb &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu12&quot;&gt;0xFF&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
      bb &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
      result &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result &lt;span class=&quot;sy2&quot;&gt;+&lt;/span&gt; ms1bTable&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;bb&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:12 --&gt;&lt;!-- ws:start:WikiTextAnchorRule:293:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@FrankZappa&amp;quot; title=&amp;quot;Anchor: FrankZappa&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;FrankZappa&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:293 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:189:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc15&quot;&gt;&lt;a name=&quot;Bitscan reverse-Tribute to Frank Zappa&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:189 --&gt;Tribute to Frank Zappa&lt;/h2&gt;
 A branchless and little bit obfuscated version of the devide and conquer bitScanReverse with in-register-lookup &lt;!-- ws:start:WikiTextRefRule:92:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.stmintz.com/ccc/index.php?id=472455&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;just another reverse bitscan&amp;lt;/a&amp;gt; by &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Gerd%20Isenberg&amp;quot;&amp;gt;Gerd Isenberg&amp;lt;/a&amp;gt;, &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/CCC&amp;quot;&amp;gt;CCC&amp;lt;/a&amp;gt;, December 22, 2005&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-14&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-14&quot;&gt;[14]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:92 --&gt; - as tribute to &lt;a class=&quot;wiki_link&quot; href=&quot;/Videos#FrankZappa&quot;&gt;Frank Zappa&lt;/a&gt; with identifiers from &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/Freak_Out!&quot; rel=&quot;nofollow&quot;&gt;Freak Out!&lt;/a&gt; (1966), &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/Hot_Rats&quot; rel=&quot;nofollow&quot;&gt;Hot Rats&lt;/a&gt; (1969), &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/Waka/Jawaka&quot; rel=&quot;nofollow&quot;&gt;Waka/Jawaka&lt;/a&gt; (1972), &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/Sofa_%28Frank_Zappa_song%29&quot; rel=&quot;nofollow&quot;&gt;Sofa&lt;/a&gt; (1975), &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/One_Size_Fits_All_%28Frank_Zappa_album%29&quot; rel=&quot;nofollow&quot;&gt;One Size Fits All&lt;/a&gt; (1975), &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/Sheik_Yerbouti&quot; rel=&quot;nofollow&quot;&gt;Sheik Yerbouti&lt;/a&gt; (1979), and &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/Jazz_from_Hell&quot; rel=&quot;nofollow&quot;&gt;Jazz from Hell&lt;/a&gt; (1986):&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:13:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;typedef unsigned __int64 OneSizeFits;&amp;lt;br/&amp;gt;typedef unsigned int HotRats;&amp;lt;br/&amp;gt;const HotRats s      =   0;&amp;lt;br/&amp;gt;const HotRats heik   = 457;&amp;lt;br/&amp;gt;const HotRats y      =   1;&amp;lt;br/&amp;gt;const HotRats e      =   2;&amp;lt;br/&amp;gt;const HotRats r      =   3;&amp;lt;br/&amp;gt;const HotRats b      =   4;&amp;lt;br/&amp;gt;const HotRats o      =   5;&amp;lt;br/&amp;gt;const HotRats u      =   8;&amp;lt;br/&amp;gt;const HotRats t      =  16;&amp;lt;br/&amp;gt;const HotRats i      =  32;&amp;lt;br/&amp;gt;const HotRats     ka = (1&amp;amp;lt;&amp;amp;lt; 4)-1;&amp;lt;br/&amp;gt;const HotRats   waka = (1&amp;amp;lt;&amp;amp;lt; 8)-1;&amp;lt;br/&amp;gt;const HotRats jawaka = (1&amp;amp;lt;&amp;amp;lt;16)-1;&amp;lt;br/&amp;gt;const HotRats jazzFromHell = 0-(16*3*heik);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;HotRats freakOut(OneSizeFits all) {&amp;lt;br/&amp;gt;   HotRats so,fa;&amp;lt;br/&amp;gt;   fa   = (HotRats)(all &amp;amp;gt;&amp;amp;gt; i);&amp;lt;br/&amp;gt;   so   = (fa!=s)       &amp;amp;lt;&amp;amp;lt; o;&amp;lt;br/&amp;gt;   fa  ^= (HotRats) all &amp;amp;amp; (fa!=s)-y;&amp;lt;br/&amp;gt;   so  ^= (jawaka &amp;amp;lt; fa) &amp;amp;lt;&amp;amp;lt; b;&amp;lt;br/&amp;gt;   fa &amp;amp;gt;&amp;amp;gt;= (jawaka &amp;amp;lt; fa) &amp;amp;lt;&amp;amp;lt; b;&amp;lt;br/&amp;gt;   so  ^= (  waka - fa) &amp;amp;gt;&amp;amp;gt; t    &amp;amp;amp; u;&amp;lt;br/&amp;gt;   fa &amp;amp;gt;&amp;amp;gt;= (  waka - fa) &amp;amp;gt;&amp;amp;gt; t    &amp;amp;amp; u;&amp;lt;br/&amp;gt;   so  ^= (    ka - fa) &amp;amp;gt;&amp;amp;gt; u    &amp;amp;amp; b;&amp;lt;br/&amp;gt;   fa &amp;amp;gt;&amp;amp;gt;= (    ka - fa) &amp;amp;gt;&amp;amp;gt; u    &amp;amp;amp; b;&amp;lt;br/&amp;gt;   so  ^=  jazzFromHell &amp;amp;gt;&amp;amp;gt; e*fa &amp;amp;amp; r;&amp;lt;br/&amp;gt;   return so;&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;kw4&quot;&gt;typedef&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; __int64 OneSizeFits&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;typedef&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; HotRats&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; HotRats s      &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; HotRats heik   &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;457&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; HotRats y      &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; HotRats e      &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;   &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; HotRats r      &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;   &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; HotRats b      &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;   &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; HotRats o      &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;   &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; HotRats u      &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;   &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; HotRats t      &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;  &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; HotRats i      &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;  &lt;span class=&quot;nu0&quot;&gt;32&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; HotRats     ka &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; HotRats   waka &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; HotRats jawaka &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; HotRats jazzFromHell &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt;heik&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
HotRats freakOut&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;OneSizeFits all&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   HotRats so,fa&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   fa   &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;HotRats&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;all &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; i&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   so   &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;fa&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;s&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;       &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; o&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   fa  &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;HotRats&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; all &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;fa&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;s&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;y&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   so  &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;jawaka &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; fa&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; b&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   fa &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;jawaka &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; fa&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; b&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   so  &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;  waka &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; fa&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; t    &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; u&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   fa &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;  waka &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; fa&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; t    &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; u&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   so  &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;    ka &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; fa&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; u    &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; b&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   fa &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;    ka &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; fa&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; u    &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; b&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   so  &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;  jazzFromHell &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; e&lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt;fa &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; r&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; so&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:13 --&gt;&lt;!-- ws:start:WikiTextAnchorRule:294:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@FillDeBruijn&amp;quot; title=&amp;quot;Anchor: FillDeBruijn&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;FillDeBruijn&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:294 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:191:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc16&quot;&gt;&lt;a name=&quot;Bitscan reverse-De Bruijn Multiplication&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:191 --&gt;De Bruijn Multiplication&lt;/h2&gt;
While the &lt;a class=&quot;wiki_link&quot; href=&quot;/BitScan#FrankZappa&quot;&gt;tribute&lt;/a&gt; to &lt;a class=&quot;wiki_link&quot; href=&quot;/Videos#FrankZappa&quot;&gt;Frank Zappa&lt;/a&gt; is quite 32-bit friendly &lt;!-- ws:start:WikiTextRefRule:96:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.stmintz.com/ccc/index.php?id=472762&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;final version - homage to FZ&amp;lt;/a&amp;gt; by &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Gerd%20Isenberg&amp;quot;&amp;gt;Gerd Isenberg&amp;lt;/a&amp;gt;, &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/CCC&amp;quot;&amp;gt;CCC&amp;lt;/a&amp;gt;, December 23, 2005&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-15&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-15&quot;&gt;[15]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:96 --&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Kim%20Walisch&quot;&gt;Kim Walisch&lt;/a&gt; suggested to use the &lt;a class=&quot;wiki_link&quot; href=&quot;/Parallel%20Prefix%20Algorithms&quot;&gt;parallel prefix fill&lt;/a&gt; for a &lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#TheMostSignificantOneBitMS1B&quot;&gt;MS1B&lt;/a&gt; separation with the same &lt;a class=&quot;wiki_link&quot; href=&quot;/De%20Bruijn%20sequence&quot;&gt;De Bruijn&lt;/a&gt; multiplication and lookup as in his &lt;a class=&quot;wiki_link&quot; href=&quot;/BitScan#KimWalisch&quot;&gt;bitScanForward&lt;/a&gt; routine with &lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#LS1BSeparation&quot;&gt;separated LS1B&lt;/a&gt;, with less instructions in 64-bit mode. A log base 2 method was already devised by Eric Cole on January 8, 2006, and shaved off rounded up to one less than the next power of 2 by Mark Dickinson &lt;!-- ws:start:WikiTextRefRule:98:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;https://ep2012.europython.eu/conference/p/mark-dickinson&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;EuroPython 2012: Florence, July 2–8 | Mark Dickinson&amp;lt;/a&amp;gt;&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-16&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-16&quot;&gt;[16]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:98 --&gt; on December 10, 2009, as published in Sean Eron Anderson&#039;s &lt;em&gt;Bit Twiddling Hacks&lt;/em&gt; for 32-bit integers &lt;!-- ws:start:WikiTextRefRule:102:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://graphics.stanford.edu/~seander/bithacks.html#IntegerLogDeBruijn&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Find the log base 2 of an N-bit integer in O(lg(N)) operations with multiply and lookup&amp;lt;/a&amp;gt; from &amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://graphics.stanford.edu/%7Eseander/bithacks.html&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Bit Twiddling Hacks&amp;lt;/a&amp;gt; by &amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://graphics.stanford.edu/%7Eseander/&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Sean Eron Anderson&amp;lt;/a&amp;gt;&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-17&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-17&quot;&gt;[17]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:102 --&gt;.&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:14:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;const int index64[64] = {&amp;lt;br/&amp;gt;    0, 47,  1, 56, 48, 27,  2, 60,&amp;lt;br/&amp;gt;   57, 49, 41, 37, 28, 16,  3, 61,&amp;lt;br/&amp;gt;   54, 58, 35, 52, 50, 42, 21, 44,&amp;lt;br/&amp;gt;   38, 32, 29, 23, 17, 11,  4, 62,&amp;lt;br/&amp;gt;   46, 55, 26, 59, 40, 36, 15, 53,&amp;lt;br/&amp;gt;   34, 51, 20, 43, 31, 22, 10, 45,&amp;lt;br/&amp;gt;   25, 39, 14, 33, 19, 30,  9, 24,&amp;lt;br/&amp;gt;   13, 18,  8, 12,  7,  6,  5, 63&amp;lt;br/&amp;gt;};&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;/**&amp;lt;br/&amp;gt; * bitScanReverse&amp;lt;br/&amp;gt; * @authors Kim Walisch, Mark Dickinson&amp;lt;br/&amp;gt; * @param bb bitboard to scan&amp;lt;br/&amp;gt; * @precondition bb != 0&amp;lt;br/&amp;gt; * @return index (0..63) of most significant one bit&amp;lt;br/&amp;gt; */&amp;lt;br/&amp;gt;int bitScanReverse(U64 bb) {&amp;lt;br/&amp;gt;   const U64 debruijn64 = C64(0x03f79d71b4cb0a89);&amp;lt;br/&amp;gt;   assert (bb != 0);&amp;lt;br/&amp;gt;   bb |= bb &amp;amp;gt;&amp;amp;gt; 1; &amp;lt;br/&amp;gt;   bb |= bb &amp;amp;gt;&amp;amp;gt; 2;&amp;lt;br/&amp;gt;   bb |= bb &amp;amp;gt;&amp;amp;gt; 4;&amp;lt;br/&amp;gt;   bb |= bb &amp;amp;gt;&amp;amp;gt; 8;&amp;lt;br/&amp;gt;   bb |= bb &amp;amp;gt;&amp;amp;gt; 16;&amp;lt;br/&amp;gt;   bb |= bb &amp;amp;gt;&amp;amp;gt; 32;&amp;lt;br/&amp;gt;   return index64[(bb * debruijn64) &amp;amp;gt;&amp;amp;gt; 58];&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; index64&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;64&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;47&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;56&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;48&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;27&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt;,
   &lt;span class=&quot;nu0&quot;&gt;57&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;49&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;41&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;37&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;28&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;61&lt;/span&gt;,
   &lt;span class=&quot;nu0&quot;&gt;54&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;58&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;35&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;52&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;42&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;21&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;44&lt;/span&gt;,
   &lt;span class=&quot;nu0&quot;&gt;38&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;32&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;29&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;23&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;17&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;11&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;62&lt;/span&gt;,
   &lt;span class=&quot;nu0&quot;&gt;46&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;55&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;26&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;59&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;40&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;36&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;53&lt;/span&gt;,
   &lt;span class=&quot;nu0&quot;&gt;34&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;51&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;43&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;31&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;22&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;45&lt;/span&gt;,
   &lt;span class=&quot;nu0&quot;&gt;25&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;39&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;33&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;19&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;30&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;24&lt;/span&gt;,
   &lt;span class=&quot;nu0&quot;&gt;13&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;18&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;,  &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;63&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/**
 * bitScanReverse
 * @authors Kim Walisch, Mark Dickinson
 * @param bb bitboard to scan
 * @precondition bb != 0
 * @return index (0..63) of most significant one bit
 */&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; bitScanReverse&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 bb&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; U64 debruijn64 &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; C64&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu12&quot;&gt;0x03f79d71b4cb0a89&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw3&quot;&gt;assert&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bb &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   bb &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bb &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; 
   bb &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bb &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   bb &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bb &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   bb &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bb &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   bb &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bb &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   bb &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bb &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;32&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; index64&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bb &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; debruijn64&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;58&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:14 --&gt;&lt;!-- ws:start:WikiTextAnchorRule:295:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@DoubleConversionBSR&amp;quot; title=&amp;quot;Anchor: DoubleConversionBSR&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;DoubleConversionBSR&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:295 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:193:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc17&quot;&gt;&lt;a name=&quot;Bitscan reverse-Double conversion&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:193 --&gt;Double conversion&lt;/h2&gt;
 Assuming 64-bit &lt;a class=&quot;wiki_link&quot; href=&quot;/Double&quot;&gt;doubles&lt;/a&gt; and &lt;a class=&quot;wiki_link&quot; href=&quot;/little-endian&quot;&gt;little-endian&lt;/a&gt; structure (&lt;em&gt;not portable&lt;/em&gt;!). Conversion to a double, interpreting the exponent. To avoid possible rounding errors, some lower bits may be cleared.&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:15:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;/**&amp;lt;br/&amp;gt; * bitScanReverse&amp;lt;br/&amp;gt; * @author Gerd Isenberg&amp;lt;br/&amp;gt; * @param bb bitboard to scan&amp;lt;br/&amp;gt; * @return index (0..63) of most significant one bit&amp;lt;br/&amp;gt; *         -1023 if passing zero&amp;lt;br/&amp;gt; */&amp;lt;br/&amp;gt;int bitScanReverse(U64 bb)&amp;lt;br/&amp;gt;{&amp;lt;br/&amp;gt;   union {&amp;lt;br/&amp;gt;      double d;&amp;lt;br/&amp;gt;      struct {&amp;lt;br/&amp;gt;         unsigned int mantissal : 32;&amp;lt;br/&amp;gt;         unsigned int mantissah : 20;&amp;lt;br/&amp;gt;         unsigned int exponent : 11;&amp;lt;br/&amp;gt;         unsigned int sign : 1;&amp;lt;br/&amp;gt;      };&amp;lt;br/&amp;gt;   } ud;&amp;lt;br/&amp;gt;   ud.d = (double)(bb &amp;amp;amp; ~(bb &amp;amp;gt;&amp;amp;gt; 32));  // avoid rounding error&amp;lt;br/&amp;gt;   return ud.exponent - 1023;&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;/**
 * bitScanReverse
 * @author Gerd Isenberg
 * @param bb bitboard to scan
 * @return index (0..63) of most significant one bit
 *         -1023 if passing zero
 */&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; bitScanReverse&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 bb&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;kw4&quot;&gt;union&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
      &lt;span class=&quot;kw4&quot;&gt;double&lt;/span&gt; d&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;kw4&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
         &lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; mantissal &lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;32&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
         &lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; mantissah &lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
         &lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; exponent &lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
         &lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; sign &lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; ud&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   ud.&lt;span class=&quot;me1&quot;&gt;d&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;double&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bb &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; ~&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bb &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;32&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;// avoid rounding error&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; ud.&lt;span class=&quot;me1&quot;&gt;exponent&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1023&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:15 --&gt;&lt;!-- ws:start:WikiTextAnchorRule:296:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@LeadingZeroCount&amp;quot; title=&amp;quot;Anchor: LeadingZeroCount&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;LeadingZeroCount&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:296 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:195:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc18&quot;&gt;&lt;a name=&quot;Bitscan reverse-Leading Zero Count&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:195 --&gt;Leading Zero Count&lt;/h2&gt;
 Some processors have a fast leading zero count instruction. The &lt;a class=&quot;wiki_link&quot; href=&quot;/Motorola&quot;&gt;Motorola&lt;/a&gt; &lt;a class=&quot;wiki_link&quot; href=&quot;/68020&quot;&gt;68020&lt;/a&gt; has a &lt;em&gt;bit field find first one&lt;/em&gt; instruction (BFFFO), which actually performs an up to 32-bit &lt;em&gt;Leading Zero Count&lt;/em&gt; &lt;!-- ws:start:WikiTextRefRule:104:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www-scm.tees.ac.uk/users/a.clements/BF/BF.htm&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;68020 Bit Field Instructions&amp;lt;/a&amp;gt;&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-18&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-18&quot;&gt;[18]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:104 --&gt; . &lt;a class=&quot;wiki_link&quot; href=&quot;/x86-64&quot;&gt;x86-64&lt;/a&gt; &lt;a class=&quot;wiki_link&quot; href=&quot;/AMD&quot;&gt;AMD&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/AMD_K10&quot; rel=&quot;nofollow&quot;&gt;K10&lt;/a&gt; has &lt;em&gt;lzcnt&lt;/em&gt; as part of the &lt;a class=&quot;wiki_link&quot; href=&quot;/SSE4#SSE4a&quot;&gt;SSE4a&lt;/a&gt; extension &lt;!-- ws:start:WikiTextRefRule:106:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;https://en.wikipedia.org/wiki/SSE4#SSE4a&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;SSE4a from Wikipedia&amp;lt;/a&amp;gt;&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-19&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-19&quot;&gt;[19]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:106 --&gt; &lt;!-- ws:start:WikiTextRefRule:108:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://msdn.microsoft.com/en-us/library/bb384809.aspx&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;__lzcnt16, __lzcnt, __lzcnt64&amp;lt;/a&amp;gt; Visual C++ Language Reference&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-20&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-20&quot;&gt;[20]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:108 --&gt; , &lt;a class=&quot;wiki_link&quot; href=&quot;/BMI1&quot;&gt;BMI1&lt;/a&gt; has &lt;em&gt;lzcnt&lt;/em&gt; as well, while &lt;a class=&quot;wiki_link&quot; href=&quot;/AVX-512#VPLZCNT&quot;&gt;AVX-512CD&lt;/a&gt; even features leading zero count on vectors of eight bitbaords.&lt;br /&gt;
&lt;br /&gt;
One can replace bitScanReverse of non empty sets by leadingZeroCount xor 63. Like trailing zero count, it returns 64 for empty sets, and might therefor save the leading condition in some applications.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextAnchorRule:297:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@BitscanversusZeroCount&amp;quot; title=&amp;quot;Anchor: BitscanversusZeroCount&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;BitscanversusZeroCount&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:297 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:197:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc19&quot;&gt;&lt;a name=&quot;Bitscan versus Zero Count&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:197 --&gt;Bitscan versus Zero Count&lt;/h1&gt;
 While the presented bitscan routines are suited to work only on none empty sets and return a value-range from 0 to 63 as bit-index, leading or trailing zero-count instructions or routines leave 64 for empty sets. Zero-counting has a immanent property of dealing correctly with empty sets - while it likely takes a conditional branch to implement this semantic in bit-scanning.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:16:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;int trailingZeroCount(U64 bb) {&amp;lt;br/&amp;gt;    if ( bb )&amp;lt;br/&amp;gt;       return bitScanForward(bb);&amp;lt;br/&amp;gt;    return 64;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;int leadingZeroCount(U64 bb) {&amp;lt;br/&amp;gt;    if ( bb )&amp;lt;br/&amp;gt;       return bitScanReverse(bb) ^ 63;&amp;lt;br/&amp;gt;    return 64;&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; trailingZeroCount&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 bb&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; bb &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
       &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; bitScanForward&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bb&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;64&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; leadingZeroCount&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 bb&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; bb &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
       &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; bitScanReverse&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bb&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;63&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;64&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:16 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextAnchorRule:298:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@BitscanwithReset&amp;quot; title=&amp;quot;Anchor: BitscanwithReset&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;BitscanwithReset&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:298 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:199:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc20&quot;&gt;&lt;a name=&quot;Bitscan with Reset&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:199 --&gt;Bitscan with Reset&lt;/h1&gt;
 While &lt;a class=&quot;wiki_link&quot; href=&quot;/Bitboard%20Serialization&quot;&gt;traversing sets&lt;/a&gt;, one may combine bitscanning with reset found bit. That implies passing the bitboard per reference or pointer, and tends to confuse compilers to keep all inside registers inside a typical serialization loop &lt;!-- ws:start:WikiTextRefRule:112:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.stmintz.com/ccc/index.php?id=283655&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Bitscan&amp;lt;/a&amp;gt; by &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Matt%20Taylor&amp;quot;&amp;gt;Matt Taylor&amp;lt;/a&amp;gt;, &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/CCC&amp;quot;&amp;gt;CCC&amp;lt;/a&amp;gt;, February 11, 2003&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-21&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-21&quot;&gt;[21]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:112 --&gt; .&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:17:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;int bitScanForwardWithReset(U64 &amp;amp;amp;bb) { // also called dropForward&amp;lt;br/&amp;gt;    int idx = bitScanForward(bb);&amp;lt;br/&amp;gt;    bb &amp;amp;amp;= bb - 1; // reset bit outside&amp;lt;br/&amp;gt;    return idx;&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; bitScanForwardWithReset&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;bb&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// also called dropForward&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; idx &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bitScanForward&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bb&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    bb &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bb &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// reset bit outside&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; idx&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:17 --&gt;&lt;!-- ws:start:WikiTextAnchorRule:299:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@GeneralizedBitscan&amp;quot; title=&amp;quot;Anchor: GeneralizedBitscan&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;GeneralizedBitscan&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:299 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:201:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc21&quot;&gt;&lt;a name=&quot;Generalized Bitscan&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:201 --&gt;Generalized Bitscan&lt;/h1&gt;
 This generalized bitscan uses a boolean parameter to scan reverse or forward. It relies on bitScanReverse, but conditionally masks the &lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#TheLeastSignificantOneBitLS1B&quot;&gt;LS1B&lt;/a&gt; in case of scanning forward. It might be used in the &lt;a class=&quot;wiki_link&quot; href=&quot;/Classical%20Approach&quot;&gt;classical approach&lt;/a&gt; to get positive or negative ray directions with one generalized routine.&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:18:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt; /**&amp;lt;br/&amp;gt; * generalized bitScan&amp;lt;br/&amp;gt; * @author Gerd Isenberg&amp;lt;br/&amp;gt; * @param bb bitboard to scan&amp;lt;br/&amp;gt; * @precondition bb != 0&amp;lt;br/&amp;gt; * @param reverse, true bitScanReverse, false bitScanForward&amp;lt;br/&amp;gt; * @return index (0..63) of least/most significant one bit&amp;lt;br/&amp;gt; */&amp;lt;br/&amp;gt; int bitScan(U64 bb, bool reverse) {&amp;lt;br/&amp;gt;    U64 rMask;&amp;lt;br/&amp;gt;    assert (bb != 0);&amp;lt;br/&amp;gt;    rMask = -(U64)reverse;&amp;lt;br/&amp;gt;    bb &amp;amp;amp;= -bb | rMask;&amp;lt;br/&amp;gt;    return bitScanReverse(bb);&amp;lt;br/&amp;gt; }&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt; &lt;span class=&quot;coMULTI&quot;&gt;/**
 * generalized bitScan
 * @author Gerd Isenberg
 * @param bb bitboard to scan
 * @precondition bb != 0
 * @param reverse, true bitScanReverse, false bitScanForward
 * @return index (0..63) of least/most significant one bit
 */&lt;/span&gt;
 &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; bitScan&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 bb, &lt;span class=&quot;kw4&quot;&gt;bool&lt;/span&gt; reverse&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    U64 rMask&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw3&quot;&gt;assert&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bb &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    rMask &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;reverse&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    bb &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;bb &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; rMask&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; bitScanReverse&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bb&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
 &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:18 --&gt;&lt;!-- ws:start:WikiTextAnchorRule:300:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@bsfbsr&amp;quot; title=&amp;quot;Anchor: bsfbsr&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;bsfbsr&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:300 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:203:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc22&quot;&gt;&lt;a name=&quot;Processor Instructions for Bitscans&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:203 --&gt;Processor Instructions for Bitscans&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextHeadingRule:205:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc23&quot;&gt;&lt;a name=&quot;Processor Instructions for Bitscans-x86&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:205 --&gt;x86&lt;/h2&gt;
 &lt;a class=&quot;wiki_link&quot; href=&quot;/x86-64&quot;&gt;x86-64&lt;/a&gt; processors have &lt;a class=&quot;wiki_link&quot; href=&quot;/x86-64#gpinstructions&quot;&gt;bitscan instructions&lt;/a&gt; and can be accessed with compilers today through either &lt;a class=&quot;wiki_link&quot; href=&quot;/Assembly#InlineAssembly&quot;&gt;inline assembly&lt;/a&gt; or compiler intrinsics. For the Microsoft/Intel C compiler, the intrinsics can be accessed by including and using the instructions &lt;em&gt;_BitScanForward64&lt;/em&gt; &lt;!-- ws:start:WikiTextRefRule:114:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://msdn.microsoft.com/en-us/library/wfd9z0bb%28v=VS.100%29.aspx&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;_BitScanForward, _BitScanForward64&amp;lt;/a&amp;gt; Visual C++ Language Reference&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-22&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-22&quot;&gt;[22]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:114 --&gt; , &lt;em&gt;_BitScanReverse64&lt;/em&gt; &lt;!-- ws:start:WikiTextRefRule:116:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://msdn.microsoft.com/en-us/library/fbxyd7zd%28v=VS.100%29.aspx&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;_BitScanReverse, _BitScanReverse64&amp;lt;/a&amp;gt; Visual C++ Language Reference&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-23&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-23&quot;&gt;[23]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:116 --&gt; or _lzcnt64 &lt;!-- ws:start:WikiTextRefRule:118:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://msdn.microsoft.com/en-us/library/bb384809.aspx&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;__lzcnt16, __lzcnt, __lzcnt64&amp;lt;/a&amp;gt; Visual C++ Language Reference&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-24&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-24&quot;&gt;[24]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:118 --&gt; .&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:19:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;unsigned char_BitScanForward64(unsigned long * Index,  unsigned __int64 Mask);&amp;lt;br/&amp;gt;unsigned char _BitScanReverse64(unsigned long * Index,  unsigned __int64 Mask);&amp;lt;br/&amp;gt;unsigned __int64 __lzcnt64(unsigned __int64 value); // AMD K10 only see CPUID&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; char_BitScanForward64&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; Index,  &lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; __int64 Mask&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; _BitScanReverse64&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; Index,  &lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; __int64 Mask&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; __int64 __lzcnt64&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; __int64 value&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// AMD K10 only see CPUID&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:19 --&gt;&lt;br /&gt;
&lt;a class=&quot;wiki_link&quot; href=&quot;/Linux&quot;&gt;Linux&lt;/a&gt; provides library functions &lt;!-- ws:start:WikiTextRefRule:120:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://linux.die.net/man/3/&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Section 3: library functions - Linux man pages&amp;lt;/a&amp;gt;&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-25&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-25&quot;&gt;[25]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:120 --&gt; , find first bit set (ffsll) in a word leaves an index of 1..64, and zero of no bit is set &lt;!-- ws:start:WikiTextRefRule:122:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://linux.die.net/man/3/ffsll&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;ffsll(3): find first bit set in word - Linux man page&amp;lt;/a&amp;gt;&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-26&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-26&quot;&gt;[26]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:122 --&gt; . &lt;a class=&quot;wiki_link&quot; href=&quot;/Free%20Software%20Foundation#GCC&quot;&gt;GCC&lt;/a&gt; 4.4.5 further has the Built-in Function &lt;em&gt;_builtin_ffsll&lt;/em&gt; for finding the least significant one bit, &lt;em&gt;_builtin_ctzll&lt;/em&gt; for trailing, and &lt;em&gt;_builtin_clzll&lt;/em&gt; for leading zero count &lt;!-- ws:start:WikiTextRefRule:124:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://gcc.gnu.org/onlinedocs/gcc-4.4.5/gcc/Other-Builtins.html#Other-Builtins&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Other Builtins - Using the GNU Compiler Collection (GCC)&amp;lt;/a&amp;gt;&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-27&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-27&quot;&gt;[27]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:124 --&gt; :&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:20:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;/* Returns one plus the index of the least significant 1-bit of x, or if x is zero, returns zero */&amp;lt;br/&amp;gt;int __builtin_ffsll (unsigned long long);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;/* Returns the number of trailing 0-bits in x, starting at the least significant bit position.&amp;lt;br/&amp;gt;   If x is 0, the result is undefined */&amp;lt;br/&amp;gt;int __builtin_ctzll (unsigned long long);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;/* Returns the number of leading 0-bits in x, starting at the most significant bit position.&amp;lt;br/&amp;gt;   If x is 0, the result is undefined */&amp;lt;br/&amp;gt;int __builtin_clzll (unsigned long long);&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;/* Returns one plus the index of the least significant 1-bit of x, or if x is zero, returns zero */&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; __builtin_ffsll &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/* Returns the number of trailing 0-bits in x, starting at the least significant bit position.
   If x is 0, the result is undefined */&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; __builtin_ctzll &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/* Returns the number of leading 0-bits in x, starting at the most significant bit position.
   If x is 0, the result is undefined */&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; __builtin_clzll &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:20 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:207:&amp;lt;h3&amp;gt; --&gt;&lt;h3 id=&quot;toc24&quot;&gt;&lt;a name=&quot;Processor Instructions for Bitscans-x86-Emulating Intrinsics&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:207 --&gt;Emulating Intrinsics&lt;/h3&gt;
 For the GNU C compiler, the intrinsics can be emulated with &lt;a class=&quot;wiki_link&quot; href=&quot;/Assembly#InlineAssembly&quot;&gt;inline assembly&lt;/a&gt; &lt;!-- ws:start:WikiTextRefRule:128:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.stmintz.com/ccc/index.php?id=388787&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Re: Nalimov: bsf/bsr intrinsics implementation still not optimal&amp;lt;/a&amp;gt; by &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Eugene%20Nalimov&amp;quot;&amp;gt;Eugene Nalimov&amp;lt;/a&amp;gt;, &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/CCC&amp;quot;&amp;gt;CCC&amp;lt;/a&amp;gt;, September 23, 2004&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-28&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-28&quot;&gt;[28]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:128 --&gt; .&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:21:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;//These processor instructions work only for 64-bit processors&amp;lt;br/&amp;gt;#ifdef _MSC_VER&amp;lt;br/&amp;gt;    #include &amp;amp;lt;intrin.h&amp;amp;gt;&amp;lt;br/&amp;gt;    #ifdef _WIN64&amp;lt;br/&amp;gt;        #pragma intrinsic(_BitScanForward64)&amp;lt;br/&amp;gt;        #pragma intrinsic(_BitScanReverse64)&amp;lt;br/&amp;gt;        #define USING_INTRINSICS&amp;lt;br/&amp;gt;    #endif&amp;lt;br/&amp;gt;#elif defined(__GNUC__) &amp;amp;amp;&amp;amp;amp; defined(__LP64__)&amp;lt;br/&amp;gt;    static INLINE unsigned char _BitScanForward64(unsigned long* Index, U64 Mask)&amp;lt;br/&amp;gt;    {&amp;lt;br/&amp;gt;        U64 Ret;&amp;lt;br/&amp;gt;        __asm__&amp;lt;br/&amp;gt;        (&amp;lt;br/&amp;gt;            &amp;amp;quot;bsfq %[Mask], %[Ret]&amp;amp;quot;&amp;lt;br/&amp;gt;            :[Ret] &amp;amp;quot;=r&amp;amp;quot; (Ret)&amp;lt;br/&amp;gt;            :[Mask] &amp;amp;quot;mr&amp;amp;quot; (Mask)&amp;lt;br/&amp;gt;        );&amp;lt;br/&amp;gt;        *Index = (unsigned long)Ret;&amp;lt;br/&amp;gt;        return Mask?1:0;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;    static INLINE unsigned char _BitScanReverse64(unsigned long* Index, U64 Mask)&amp;lt;br/&amp;gt;    {&amp;lt;br/&amp;gt;        U64 Ret;&amp;lt;br/&amp;gt;        __asm__&amp;lt;br/&amp;gt;        (&amp;lt;br/&amp;gt;            &amp;amp;quot;bsrq %[Mask], %[Ret]&amp;amp;quot;&amp;lt;br/&amp;gt;            :[Ret] &amp;amp;quot;=r&amp;amp;quot; (Ret)&amp;lt;br/&amp;gt;            :[Mask] &amp;amp;quot;mr&amp;amp;quot; (Mask)&amp;lt;br/&amp;gt;        );&amp;lt;br/&amp;gt;        *Index = (unsigned long)Ret;&amp;lt;br/&amp;gt;        return Mask?1:0;&amp;lt;br/&amp;gt;    }&amp;lt;br/&amp;gt;    #define USING_INTRINSICS&amp;lt;br/&amp;gt;#endif&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;co1&quot;&gt;//These processor instructions work only for 64-bit processors&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#ifdef _MSC_VER&lt;/span&gt;
    &lt;span class=&quot;co2&quot;&gt;#include &amp;lt;intrin.h&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;co2&quot;&gt;#ifdef _WIN64&lt;/span&gt;
        &lt;span class=&quot;co2&quot;&gt;#pragma intrinsic(_BitScanForward64)&lt;/span&gt;
        &lt;span class=&quot;co2&quot;&gt;#pragma intrinsic(_BitScanReverse64)&lt;/span&gt;
        &lt;span class=&quot;co2&quot;&gt;#define USING_INTRINSICS&lt;/span&gt;
    &lt;span class=&quot;co2&quot;&gt;#endif&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#elif defined(__GNUC__) &amp;amp;&amp;amp; defined(__LP64__)&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;static&lt;/span&gt; INLINE &lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; _BitScanForward64&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; Index, U64 Mask&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        U64 Ret&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        __asm__
        &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
            &lt;span class=&quot;st0&quot;&gt;&amp;quot;bsfq %[Mask], %[Ret]&amp;quot;&lt;/span&gt;
            &lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;Ret&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;=r&amp;quot;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Ret&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;Mask&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;mr&amp;quot;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Mask&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt;Index &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;Ret&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; Mask&lt;span class=&quot;sy4&quot;&gt;?&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw4&quot;&gt;static&lt;/span&gt; INLINE &lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; _BitScanReverse64&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt; Index, U64 Mask&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        U64 Ret&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        __asm__
        &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
            &lt;span class=&quot;st0&quot;&gt;&amp;quot;bsrq %[Mask], %[Ret]&amp;quot;&lt;/span&gt;
            &lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;Ret&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;=r&amp;quot;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Ret&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;Mask&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;mr&amp;quot;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Mask&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt;Index &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;Ret&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; Mask&lt;span class=&quot;sy4&quot;&gt;?&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;co2&quot;&gt;#define USING_INTRINSICS&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#endif&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:21 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:209:&amp;lt;h3&amp;gt; --&gt;&lt;h3 id=&quot;toc25&quot;&gt;&lt;a name=&quot;Processor Instructions for Bitscans-x86-Intrinsics versus asm&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:209 --&gt;Intrinsics versus asm&lt;/h3&gt;
 Alternatively, rather than to emulate the intrinsics one might use the standard prototype, by using intrinsics or &lt;a class=&quot;wiki_link&quot; href=&quot;/Assembly#InlineAssembly&quot;&gt;inline assembly&lt;/a&gt; for &lt;a class=&quot;wiki_link&quot; href=&quot;/Free%20Software%20Foundation#GCC&quot;&gt;GCC&lt;/a&gt; &lt;!-- ws:start:WikiTextRefRule:131:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.jjj.de/fxt/fxtbook.pdf&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Matters Computational - ideas, algorithms, source code&amp;lt;/a&amp;gt; (pdf) Ideas and Source Code by &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Mathematician#Arndt&amp;quot;&amp;gt;Jörg Arndt&amp;lt;/a&amp;gt;&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-29&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-29&quot;&gt;[29]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:131 --&gt; :&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:22:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;#ifdef USE_X86INTRINSICS&amp;lt;br/&amp;gt;#include &amp;amp;lt;intrin.h&amp;amp;gt;&amp;lt;br/&amp;gt;#pragma intrinsic(_BitScanForward64)&amp;lt;br/&amp;gt;#pragma intrinsic(_BitScanReverse64)&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;/**&amp;lt;br/&amp;gt; * bitScanForward&amp;lt;br/&amp;gt; * @param bb bitboard to scan&amp;lt;br/&amp;gt; * @precondition bb != 0&amp;lt;br/&amp;gt; * @return index (0..63) of least significant one bit&amp;lt;br/&amp;gt; */&amp;lt;br/&amp;gt;int bitScanForward(U64 x) {&amp;lt;br/&amp;gt;   unsigned long index;&amp;lt;br/&amp;gt;   assert (x != 0);&amp;lt;br/&amp;gt;   _BitScanForward64(&amp;amp;amp;index, x);&amp;lt;br/&amp;gt;   return (int) index;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;/**&amp;lt;br/&amp;gt; * bitScanReverse&amp;lt;br/&amp;gt; * @param bb bitboard to scan&amp;lt;br/&amp;gt; * @precondition bb != 0&amp;lt;br/&amp;gt; * @return index (0..63) of most significant one bit&amp;lt;br/&amp;gt; */&amp;lt;br/&amp;gt;int bitScanReverse(U64 x) {&amp;lt;br/&amp;gt;   unsigned long index;&amp;lt;br/&amp;gt;   assert (x != 0);&amp;lt;br/&amp;gt;   _BitScanReverse64(&amp;amp;amp;index, x);&amp;lt;br/&amp;gt;   return (int) index;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;#else&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;/**&amp;lt;br/&amp;gt; * bitScanForward&amp;lt;br/&amp;gt; * @param bb bitboard to scan&amp;lt;br/&amp;gt; * @precondition bb != 0&amp;lt;br/&amp;gt; * @return index (0..63) of least significant one bit&amp;lt;br/&amp;gt; */&amp;lt;br/&amp;gt;int bitScanForward(U64 x) {&amp;lt;br/&amp;gt;   assert (x != 0);&amp;lt;br/&amp;gt;   asm (&amp;amp;quot;bsfq %0, %0&amp;amp;quot; : &amp;amp;quot;=r&amp;amp;quot; (x) : &amp;amp;quot;0&amp;amp;quot; (x));&amp;lt;br/&amp;gt;   return (int) x;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;/**&amp;lt;br/&amp;gt; * bitScanReverse&amp;lt;br/&amp;gt; * @param bb bitboard to scan&amp;lt;br/&amp;gt; * @precondition bb != 0&amp;lt;br/&amp;gt; * @return index (0..63) of most significant one bit&amp;lt;br/&amp;gt; */&amp;lt;br/&amp;gt;int bitScanReverse(U64 x) {&amp;lt;br/&amp;gt;   assert (x != 0);&amp;lt;br/&amp;gt;   asm (&amp;amp;quot;bsrl %0, %0&amp;amp;quot; : &amp;amp;quot;=r&amp;amp;quot; (x) : &amp;amp;quot;0&amp;amp;quot; (x));&amp;lt;br/&amp;gt;   return (int) x;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;#endif&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;co2&quot;&gt;#ifdef USE_X86INTRINSICS&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#include &amp;lt;intrin.h&amp;gt;&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#pragma intrinsic(_BitScanForward64)&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#pragma intrinsic(_BitScanReverse64)&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/**
 * bitScanForward
 * @param bb bitboard to scan
 * @precondition bb != 0
 * @return index (0..63) of least significant one bit
 */&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; bitScanForward&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 x&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt; index&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw3&quot;&gt;assert&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;x &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   _BitScanForward64&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;index, x&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; index&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/**
 * bitScanReverse
 * @param bb bitboard to scan
 * @precondition bb != 0
 * @return index (0..63) of most significant one bit
 */&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; bitScanReverse&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 x&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt; index&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw3&quot;&gt;assert&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;x &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   _BitScanReverse64&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;index, x&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; index&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#else&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/**
 * bitScanForward
 * @param bb bitboard to scan
 * @precondition bb != 0
 * @return index (0..63) of least significant one bit
 */&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; bitScanForward&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 x&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;kw3&quot;&gt;assert&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;x &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   asm &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;bsfq %0, %0&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;=r&amp;quot;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;x&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;0&amp;quot;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;x&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; x&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/**
 * bitScanReverse
 * @param bb bitboard to scan
 * @precondition bb != 0
 * @return index (0..63) of most significant one bit
 */&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; bitScanReverse&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 x&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;kw3&quot;&gt;assert&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;x &lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   asm &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;bsrl %0, %0&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;=r&amp;quot;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;x&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;0&amp;quot;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;x&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; x&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#endif&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:22 --&gt;&lt;!-- ws:start:WikiTextAnchorRule:301:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@x86Timing&amp;quot; title=&amp;quot;Anchor: x86Timing&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;x86Timing&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:301 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:211:&amp;lt;h3&amp;gt; --&gt;&lt;h3 id=&quot;toc26&quot;&gt;&lt;a name=&quot;Processor Instructions for Bitscans-x86-Bsf/Bsr x86-64 Timings&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:211 --&gt;Bsf/Bsr x86-64 Timings&lt;/h3&gt;
 The instruction latency and reciprocal throughput &lt;!-- ws:start:WikiTextRefRule:134:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.agner.org/optimize/instruction_tables.pdf&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Instruction tables, Lists of instruction latencies, throughputs and microoperation breakdowns for Intel and AMD CPU&#039;s&amp;lt;/a&amp;gt; (pdf) by &amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.agner.org/&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Agner Fog&amp;lt;/a&amp;gt;&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-30&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-30&quot;&gt;[30]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:134 --&gt; heavily differs between various &lt;a class=&quot;wiki_link&quot; href=&quot;/x86-64&quot;&gt;x86-64&lt;/a&gt; architectures:&lt;br /&gt;
&lt;br /&gt;


&lt;table class=&quot;wiki_table&quot;&gt;
    &lt;tr&gt;
        &lt;th&gt;Architecture Stepping&lt;br /&gt;
&lt;/th&gt;
        &lt;th&gt;Instruction(s)&lt;br /&gt;
&lt;/th&gt;
        &lt;th&gt;Latency / Cycles&lt;br /&gt;
&lt;/th&gt;
        &lt;th&gt;Reciprocal Throughput&lt;br /&gt;
&lt;/th&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td colspan=&quot;4&quot; style=&quot;text-align: left;&quot;&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/AMD&quot;&gt;AMD&lt;/a&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td rowspan=&quot;2&quot;&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/Athlon_64&quot; rel=&quot;nofollow&quot;&gt;K8&lt;/a&gt; &lt;!-- ws:start:WikiTextRefRule:136:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://support.amd.com/us/Processor_TechDocs/25112.PDF&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Software Optimization Guide for AMD64 Processors&amp;lt;/a&amp;gt;&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-31&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-31&quot;&gt;[31]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:136 --&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;BSF reg16/32/64, mreg16/32/64&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;Vector Path 8/8/9&lt;br /&gt;
&lt;/td&gt;
        &lt;td colspan=&quot;2&quot; style=&quot;text-align: right;&quot;&gt;8/8/9&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;BSR reg16/32/64, mreg16/32/64&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;Vector Path 11&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;11&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td rowspan=&quot;3&quot;&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/AMD_K10&quot; rel=&quot;nofollow&quot;&gt;K10&lt;/a&gt; &lt;!-- ws:start:WikiTextRefRule:138:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://support.amd.com/us/Processor_TechDocs/40546.pdf&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Software Optimization Guide for AMD Family 10h and 12h Processors&amp;lt;/a&amp;gt;&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-32&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-32&quot;&gt;[32]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:138 --&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;BSF reg, reg&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;Vector Path 4&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;4&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;BSR reg, reg&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;Vector Path 4&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;4&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/SSE4#ABM&quot;&gt;LZCNT&lt;/a&gt; reg, reg&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;Direct Path single 2&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;1&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td colspan=&quot;4&quot; style=&quot;text-align: left;&quot;&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Intel&quot;&gt;Intel&lt;/a&gt; &lt;!-- ws:start:WikiTextRefRule:140:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.intel.com/design/processor/manuals/248966.pdf&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Intel 64 and IA32 Architectures Optimization Reference Manual&amp;lt;/a&amp;gt;&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-33&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-33&quot;&gt;[33]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:140 --&gt;&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/Intel_Atom&quot; rel=&quot;nofollow&quot;&gt;ATOM&lt;/a&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;BSF/BSR&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;16&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;15&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/NetBurst_%28microarchitecture%29&quot; rel=&quot;nofollow&quot;&gt;NetBurst&lt;/a&gt; 0F_3H&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;BSF/BSR&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;16&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;4&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;NetBurst 0F_2H&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;BSF/BSR&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;8&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;2&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/Core_%28microarchitecture%29&quot; rel=&quot;nofollow&quot;&gt;Core&lt;/a&gt; 06_0EH&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;BSF/BSR&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;2&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;1&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;65 nm Intel Core 06_0FH&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;BSF/BSR&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;2&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;1&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;Enhanced Intel Core 06_17H&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;BSF/BSR&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;1&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;1&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;Enhanced Intel Core 06_1DH&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;BSF/BSR&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;1&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;1&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/Nehalem_%28microarchitecture%29&quot; rel=&quot;nofollow&quot;&gt;Nehalem&lt;/a&gt; 06_1AH&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;BSF/BSR&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;3&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;1&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td rowspan=&quot;3&quot;&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/Sandy_Bridge&quot; rel=&quot;nofollow&quot;&gt;Sandy Bridge&lt;/a&gt;&lt;br /&gt;
&lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/Ivy_Bridge_%28microarchitecture%29&quot; rel=&quot;nofollow&quot;&gt;Ivy Bridge&lt;/a&gt;&lt;br /&gt;
&lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/Haswell_%28microarchitecture%29&quot; rel=&quot;nofollow&quot;&gt;Haswell&lt;/a&gt; &lt;!-- ws:start:WikiTextRefRule:142:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://users.atw.hu/instlatx64/GenuineIntel00306C3_Haswell_InstLatX64.txt&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Haswell Instructions Latency&amp;lt;/a&amp;gt;&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-34&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-34&quot;&gt;[34]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:142 --&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;BSF/BSR&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;3&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;1&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/BMI1#LZCNT&quot;&gt;LZCNT&lt;/a&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;3&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;1&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align: center;&quot;&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/BMI1#LZCNT&quot;&gt;TZCNT&lt;/a&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;3&lt;br /&gt;
&lt;/td&gt;
        &lt;td style=&quot;text-align: right;&quot;&gt;1&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
&lt;/table&gt;

&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:213:&amp;lt;h3&amp;gt; --&gt;&lt;h3 id=&quot;toc27&quot;&gt;&lt;a name=&quot;Processor Instructions for Bitscans-x86-Bsf/Bsr behavior with zero source&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:213 --&gt;Bsf/Bsr behavior with zero source&lt;/h3&gt;
 &lt;a class=&quot;wiki_link&quot; href=&quot;/Intel&quot;&gt;Intel&lt;/a&gt; and &lt;a class=&quot;wiki_link&quot; href=&quot;/AMD&quot;&gt;AMD&lt;/a&gt; specify different behavior. In praxis there seems no difference so far. However, as long as Intel docs explicitly state content undefined, it is recommend to don&#039;t rely on a pre-initialized content of that target register, if the source is zero.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Intel : &lt;tt&gt;If the content of the source operand is 0, the content of the destination operand is undefined.&lt;/tt&gt; &lt;!-- ws:start:WikiTextRefRule:144:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.intel.com/Assets/PDF/manual/253666.pdf&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 2A: Instruction Set Reference, A-M&amp;lt;/a&amp;gt; (pdf) BSF—Bit Scan Forward 3-87&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-35&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-35&quot;&gt;[35]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:144 --&gt;&lt;/li&gt;&lt;li&gt;AMD: &lt;tt&gt;If the second operand contains 0, the instruction sets ZF to 1 and does not change the contents of the destination register.&lt;/tt&gt; &lt;!-- ws:start:WikiTextRefRule:146:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://support.amd.com/us/Processor_TechDocs/24594_APM_v3.pdf&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;AMD64 Architecture Programmer’s Manual Volume 3: General-Purpose and System Instructions&amp;lt;/a&amp;gt; (pdf) Bit Scan Forward pg. 111&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-36&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-36&quot;&gt;[36]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:146 --&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:215:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc28&quot;&gt;&lt;a name=&quot;Processor Instructions for Bitscans-ARM&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:215 --&gt;ARM&lt;/h2&gt;
 &lt;a class=&quot;wiki_link&quot; href=&quot;/ARM&quot;&gt;ARM&lt;/a&gt; has &lt;em&gt;CLZ&lt;/em&gt; (Count Leading Zeros) instruction for 32-bit integers. ARM instruction is available in &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0100i/index.html&quot; rel=&quot;nofollow&quot;&gt;ARMv5&lt;/a&gt; and above, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/ARM_architecture#Thumb&quot; rel=&quot;nofollow&quot;&gt;32-bit Thumb instruction&lt;/a&gt; is available in &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0100i/index.html&quot; rel=&quot;nofollow&quot;&gt;ARMv6T2&lt;/a&gt; and &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0100i/index.html&quot; rel=&quot;nofollow&quot;&gt;ARMv7&lt;/a&gt; &lt;!-- ws:start:WikiTextRefRule:148:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0379a/Cihjgjed.html&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;ARM Information Center &amp;amp;gt; General data processing instructions &amp;amp;gt; CLZ&amp;lt;/a&amp;gt;&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-37&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-37&quot;&gt;[37]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:148 --&gt; , the C-intrinsic is called &lt;em&gt;_builtin_clz&lt;/em&gt; &lt;!-- ws:start:WikiTextRefRule:150:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0376a/CJAEJGJD.html&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;ARM Information Center &amp;amp;gt; Instruction intrinsics &amp;amp;gt; __builtin_clz&amp;lt;/a&amp;gt;&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-38&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-38&quot;&gt;[38]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:150 --&gt; &lt;!-- ws:start:WikiTextRefRule:152:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://developer.apple.com/mac/library/documentation/DeveloperTools/gcc-4.0.1/gcc/Other-Builtins.html&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Other Builtins - Using the GNU Compiler Collection (GCC)&amp;lt;/a&amp;gt;&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-39&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-39&quot;&gt;[39]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:152 --&gt; &lt;!-- ws:start:WikiTextRefRule:156:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.talkchess.com/forum/viewtopic.php?t=31228&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Bit Scan (equivalent to ASM instructions bsr and bsf)&amp;lt;/a&amp;gt; by &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Pascal%20Georges&amp;quot;&amp;gt;Pascal Georges&amp;lt;/a&amp;gt;, &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/CCC&amp;quot;&amp;gt;CCC&amp;lt;/a&amp;gt;, December 24, 2009&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-40&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-40&quot;&gt;[40]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:156 --&gt; .&lt;br /&gt;
&lt;!-- ws:start:WikiTextAnchorRule:302:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@EngineSamples&amp;quot; title=&amp;quot;Anchor: EngineSamples&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;EngineSamples&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:302 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:217:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc29&quot;&gt;&lt;a name=&quot;Engine Samples&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:217 --&gt;Engine Samples&lt;/h1&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Amundsen#BitScan&quot;&gt;BitScan in Amundsen&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Chess%200.5#BitScan&quot;&gt;BitScan in Chess 0.5&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/CookieCat#BitScan&quot;&gt;BitScan in CookieCat&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Crafty#BitScan&quot;&gt;BitScan in Crafty&lt;/a&gt; (23.5)&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Gibbon#BitScan&quot;&gt;BitScan in Gibbon&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Gk#BitScan&quot;&gt;BitScan in Gk&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/HeavyChess#BitScan&quot;&gt;BitScan in HeavyChess&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Kurt#BitScan&quot;&gt;BitScan in Kurt&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Murka#BitScan&quot;&gt;BitScan in Murka&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Prophet#BitScan&quot;&gt;BitScan in Prophet&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/RedQueen#BitScan&quot;&gt;BitScan in RedQueen&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Spector#BitScan&quot;&gt;BitScan in Spector&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Tucano#BitScan&quot;&gt;BitScan in Tucano&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:219:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc30&quot;&gt;&lt;a name=&quot;See also&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:219 --&gt;See also&lt;/h1&gt;
 &lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Bitboard%20Serialization&quot;&gt;Bitboard Serialization&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Pablo%20San%20Segundo#BITSCAN&quot;&gt;BITSCAN&lt;/a&gt;, a &lt;a class=&quot;wiki_link&quot; href=&quot;/Cpp#Libraries&quot;&gt;C++ library&lt;/a&gt; for bitstrings by &lt;a class=&quot;wiki_link&quot; href=&quot;/Pablo%20San%20Segundo&quot;&gt;Pablo San Segundo&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Bit-Twiddling&quot;&gt;Bit-Twiddling&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/De%20Bruijn%20Sequence%20Generator&quot;&gt;De Bruijn Sequence Generator&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Java-Bitscan&quot;&gt;Java-Bitscan&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Population%20Count&quot;&gt;Population Count&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:221:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc31&quot;&gt;&lt;a name=&quot;Publications&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:221 --&gt;Publications&lt;/h1&gt;
 &lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Alan%20Turing&quot;&gt;Alan Turing&lt;/a&gt; (&lt;strong&gt;1949&lt;/strong&gt;). &lt;em&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.computerhistory.org/chess/full_record.php?iid=doc-431614f45472f&quot; rel=&quot;nofollow&quot;&gt;Alan Turing&#039;s Manual for the Ferranti Mk. I&lt;/a&gt;&lt;/em&gt;. transcribed in 2000 by &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.panix.com/%7Erst/&quot; rel=&quot;nofollow&quot;&gt;Robert Thau&lt;/a&gt;, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://archive.computerhistory.org/projects/chess/related_materials/text/2-1.Ferranti_Mark_1_manual.Turing-Alan/2-1.Ferranti_Mark_1_manual.Turing-Alan.1951.UNIVERSITY_OF_MANCHESTER.062303005.pdf&quot; rel=&quot;nofollow&quot;&gt;pdf&lt;/a&gt; from &lt;a class=&quot;wiki_link&quot; href=&quot;/The%20Computer%20History%20Museum&quot;&gt;The Computer History Museum&lt;/a&gt;, 9.4 The position of the most significant digit » &lt;a class=&quot;wiki_link&quot; href=&quot;/Ferranti%20Mark%201&quot;&gt;Ferranti Mark 1&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Charles%20Leiserson&quot;&gt;Charles E. Leiserson&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Harald%20Prokop&quot;&gt;Harald Prokop&lt;/a&gt; and &lt;a class=&quot;wiki_link&quot; href=&quot;/Keith%20H.%20Randall&quot;&gt;Keith H. Randall&lt;/a&gt; (&lt;strong&gt;1998&lt;/strong&gt;). &lt;em&gt;Using de Bruijn Sequences to Index a 1 in a Computer Word&lt;/em&gt;, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://supertech.csail.mit.edu/papers/debruijn.pdf&quot; rel=&quot;nofollow&quot;&gt;pdf&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Pablo%20San%20Segundo&quot;&gt;Pablo San Segundo&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Ram%C3%B3n%20Gal%C3%A1n&quot;&gt;Ramón Galán&lt;/a&gt; (&lt;strong&gt;2005&lt;/strong&gt;). &lt;em&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.actapress.com/Abstract.aspx?paperId=18953&quot; rel=&quot;nofollow&quot;&gt;Bitboards: A New Approach&lt;/a&gt;&lt;/em&gt;. &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.informatik.uni-trier.de/%7Eley/db/conf/aia/aia2005.html#SegundoG05&quot; rel=&quot;nofollow&quot;&gt;AIA 2005&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Donald%20Knuth&quot;&gt;Donald Knuth&lt;/a&gt; (&lt;strong&gt;2009&lt;/strong&gt;). &lt;em&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www-cs-faculty.stanford.edu/%7Eknuth/taocp.html&quot; rel=&quot;nofollow&quot;&gt;The Art of Computer Programming&lt;/a&gt;, Volume 4, Fascicle 1: Bitwise tricks &amp;amp; techniques&lt;/em&gt;, as &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www-cs-faculty.stanford.edu/%7Eknuth/fasc1a.ps.gz&quot; rel=&quot;nofollow&quot;&gt;Pre-Fascicle 1a postscript&lt;/a&gt;, p. 10&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://de.linkedin.com/pub/andreas-stiller/a/381/aa9&quot; rel=&quot;nofollow&quot;&gt;Andreas Stiller&lt;/a&gt; (&lt;strong&gt;2013&lt;/strong&gt;). &lt;em&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.heise.de/ct/inhalt/2013/07/186/&quot; rel=&quot;nofollow&quot;&gt;Spezialkommando - Bits setzen, abfragen, scannen und mehr&lt;/a&gt;&lt;/em&gt;. &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.heise.de/ct/&quot; rel=&quot;nofollow&quot;&gt;c&#039;t Magazin für Computertechnik&lt;/a&gt; 7/2013, p. 186 (German)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:223:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc32&quot;&gt;&lt;a name=&quot;Forum Posts&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:223 --&gt;Forum Posts&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextHeadingRule:225:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc33&quot;&gt;&lt;a name=&quot;Forum Posts-1996 ...&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:225 --&gt;1996 ...&lt;/h2&gt;
 &lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://groups.google.com/group/rec.games.chess.computer/browse_frm/thread/bcb03df7630d6274&quot; rel=&quot;nofollow&quot;&gt;Bitboards: speeding up FirstOne&lt;/a&gt; by Laurent Desnogues, &lt;a class=&quot;wiki_link&quot; href=&quot;/Computer%20Chess%20Forums&quot;&gt;rgcc&lt;/a&gt;, April 10, 1996 » &lt;a class=&quot;wiki_link&quot; href=&quot;/Othello&quot;&gt;Othello&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://groups.google.com/group/rec.games.chess.computer/browse_frm/thread/d5dbf08c66e83517#&quot; rel=&quot;nofollow&quot;&gt;bitboard 2^i mod 67 is unique&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Stefan%20Plenkner&quot;&gt;Stefan Plenkner&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Computer%20Chess%20Forums&quot;&gt;rgcc&lt;/a&gt;, August 6, 1996&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://groups.google.com/group/rec.games.chess.computer/browse_frm/thread/9658009e315021fe#&quot; rel=&quot;nofollow&quot;&gt;bitboard 2^i mod 67 is unique&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Stefan%20Plenkner&quot;&gt;Stefan Plenkner&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Computer%20Chess%20Forums&quot;&gt;rgcc&lt;/a&gt;, August 7, 1996&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://groups.google.com/group/rec.games.chess.computer/browse_frm/thread/871851f83e2c429f#&quot; rel=&quot;nofollow&quot;&gt;bitboard 2^i mod 67 is unique&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Jo%C3%ABl%20Rivat&quot;&gt;Joël Rivat&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Computer%20Chess%20Forums&quot;&gt;rgcc&lt;/a&gt;, September 2, 1996&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=20057&quot; rel=&quot;nofollow&quot;&gt;Question to Bob: Crafty , Alpha and FindBit()&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Guido%20Schimmels&quot;&gt;Guido Schimmels&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, June 05, 1998&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=39619&quot; rel=&quot;nofollow&quot;&gt;To Nalimov and other programmers about BSF/BSR in VC&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Dezhi%20Zhao&quot;&gt;Dezhi Zhao&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, January 16, 1999&lt;/li&gt;&lt;/ul&gt;&lt;!-- ws:start:WikiTextHeadingRule:227:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc34&quot;&gt;&lt;a name=&quot;Forum Posts-2000 ...&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:227 --&gt;2000 ...&lt;/h2&gt;
 &lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://groups.google.com/group/comp.lang.asm.x86/browse_frm/thread/37efb792689be6b8&quot; rel=&quot;nofollow&quot;&gt;Re: TASM 5.0 versus BSF&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Frans%20Morsch&quot;&gt;Frans Morsch&lt;/a&gt;, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://groups.google.com/group/comp.lang.asm.x86/topics&quot; rel=&quot;nofollow&quot;&gt;comp.lang.asm.x86&lt;/a&gt;, March 28, 2000&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=124638&quot; rel=&quot;nofollow&quot;&gt;Will the Itanium have a BSF or BSR instruction?&lt;/a&gt; by  Larry Griffiths, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, August 15, 2000&lt;br /&gt;
&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=124712&quot; rel=&quot;nofollow&quot;&gt;Re: Will the Itanium have a BSF or BSR instruction?&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Eugene%20Nalimov&quot;&gt;Eugene Nalimov&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, August 16, 2000&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=134077&quot; rel=&quot;nofollow&quot;&gt;Binary question&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Severi%20Salminen&quot;&gt;Severi Salminen&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, October 19, 2000&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=175203&quot; rel=&quot;nofollow&quot;&gt;Bitboards and Piece Lists&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Dann%20Corbit&quot;&gt;Dann Corbit&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, June 14, 2001&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=207080&quot; rel=&quot;nofollow&quot;&gt;FirstBit() in assembler&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/David%20Rasmussen&quot;&gt;David Rasmussen&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, January 13, 2002&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=211203&quot; rel=&quot;nofollow&quot;&gt;Reply from Intel about BSF/BSR&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Severi%20Salminen&quot;&gt;Severi Salminen&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, January 31, 2002&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=212586&quot; rel=&quot;nofollow&quot;&gt;&amp;quot;Using de Bruijn Sequences to Index a 1 in a Computer Word&amp;quot;&lt;/a&gt; by Oliver Roese, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, February 08, 2002&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=265635&quot; rel=&quot;nofollow&quot;&gt;Another hacky method for bitboard bit extraction&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Walter%20Faxon&quot;&gt;Walter Faxon&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, November 17, 2002&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=268065&quot; rel=&quot;nofollow&quot;&gt;Modulo verus BitScan and MMX-PopCount&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Gerd%20Isenberg&quot;&gt;Gerd Isenberg&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, November 29, 2002&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=268305&quot; rel=&quot;nofollow&quot;&gt;Fast 3DNow! BitScan&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Gerd%20Isenberg&quot;&gt;Gerd Isenberg&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, December 01, 2002&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=275160&quot; rel=&quot;nofollow&quot;&gt;Bitscan Conclusions&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Matt%20Taylor&quot;&gt;Matt Taylor&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, January 05, 2003&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=283655&quot; rel=&quot;nofollow&quot;&gt;Bitscan&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Matt%20Taylor&quot;&gt;Matt Taylor&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, February 11, 2003&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=291062&quot; rel=&quot;nofollow&quot;&gt;FirstOne for Linux&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Sune%20Fischer&quot;&gt;Sune Fischer&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, March 29, 2003&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://groups.google.com/group/comp.lang.asm.x86/browse_frm/thread/de9546cd019bd72b/f46209f47d2a7ddb?lnk=gst&amp;amp;q=Matt+Taylor+magic#f46209f47d2a7ddb&quot; rel=&quot;nofollow&quot;&gt;Bit magic&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Matt%20Taylor&quot;&gt;Matt Taylor&lt;/a&gt;, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://groups.google.com/group/comp.lang.asm.x86/topics&quot; rel=&quot;nofollow&quot;&gt;comp.lang.asm.x86&lt;/a&gt;, June 26, 2003&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=339225&quot; rel=&quot;nofollow&quot;&gt;Re: De Bruijn Sequence Generator&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Dieter%20B%C3%BCrssner&quot;&gt;Dieter Bürssner&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, December 30, 2003 » &lt;a class=&quot;wiki_link&quot; href=&quot;/De%20Bruijn%20Sequence%20Generator&quot;&gt;De Bruijn Sequence Generator&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=348097&quot; rel=&quot;nofollow&quot;&gt;Determining location of LSB/MSB&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Jan%20Renze%20Steenhuisen&quot;&gt;Renze Steenhuisen&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, February 09, 2004&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=388668&quot; rel=&quot;nofollow&quot;&gt;Nalimov: bsf/bsr intrinsics implementation still not optimal&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Dezhi%20Zhao&quot;&gt;Dezhi Zhao&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, September 22, 2004&lt;br /&gt;
&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=388787&quot; rel=&quot;nofollow&quot;&gt;Re: Nalimov: bsf/bsr intrinsics implementation still not optimal&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Eugene%20Nalimov&quot;&gt;Eugene Nalimov&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, September 23, 2004&lt;/li&gt;&lt;/ul&gt;&lt;!-- ws:start:WikiTextHeadingRule:229:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc35&quot;&gt;&lt;a name=&quot;Forum Posts-2005 ...&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:229 --&gt;2005 ...&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=425020&quot; rel=&quot;nofollow&quot;&gt;A data point for PowerPC bitboard program authors&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Steven%20Edwards&quot;&gt;Steven Edwards&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, May 09, 2005 » &lt;a class=&quot;wiki_link&quot; href=&quot;/PowerPC&quot;&gt;PowerPC&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.open-aurec.com/wbforum/viewtopic.php?f=4&amp;amp;t=3141&quot; rel=&quot;nofollow&quot;&gt;Best BitBoard LSB funktion?&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Reinhard%20Scharnagl&quot;&gt;Reinhard Scharnagl&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Computer%20Chess%20Forums&quot;&gt;Winboard Programming Forum&lt;/a&gt;, July 20, 2005&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=14151&quot; rel=&quot;nofollow&quot;&gt;Fastest bitboard compress routine when you can&#039;t use ASM&lt;/a&gt; by mambofish, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, May 31, 2007&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://talkchess.com/forum/viewtopic.php?t=29333&quot; rel=&quot;nofollow&quot;&gt;Bit twiddling question, part 2: arbitrary bitscan order&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Zach%20Wegner&quot;&gt;Zach Wegner&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, August 11, 2009&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://talkchess.com/forum/viewtopic.php?t=29482&quot; rel=&quot;nofollow&quot;&gt;32 bit versions for bitscan64&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Michael%20Hoffmann&quot;&gt;Michael Hoffmann&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, August 21, 2009&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=30342&quot; rel=&quot;nofollow&quot;&gt;64-bit intrinsic performance&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Nathan%20Thom&quot;&gt;Nathan Thom&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, October 27, 2009&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=31228&quot; rel=&quot;nofollow&quot;&gt;Bit Scan (equivalent to ASM instructions bsr and bsf)&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Pascal%20Georges&quot;&gt;Pascal Georges&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, December 24, 2009&lt;/li&gt;&lt;/ul&gt;&lt;!-- ws:start:WikiTextHeadingRule:231:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc36&quot;&gt;&lt;a name=&quot;Forum Posts-2010 ...&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:231 --&gt;2010 ...&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://talkchess.com/forum/viewtopic.php?t=32046&quot; rel=&quot;nofollow&quot;&gt;bitScanReverse32&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Luca%20Hemmerich&quot;&gt;Luca Hemmerich&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, January 25, 2010&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=39268&quot; rel=&quot;nofollow&quot;&gt;Introduction and (hopefully) contribution - bitboard methods&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Alcides%20Schulz&quot;&gt;Alcides Schulz&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, June 03, 2011 » &lt;a class=&quot;wiki_link&quot; href=&quot;/Population%20Count&quot;&gt;Population Count&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=45188&quot; rel=&quot;nofollow&quot;&gt;Leading Zero Count Question&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Matthew%20R.%20Brades&quot;&gt;Matthew R. Brades&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, September 16, 2012&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=46040&quot; rel=&quot;nofollow&quot;&gt;Optimizing bitboards for ARM&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Martin%20Sedlak&quot;&gt;Martin Sedlak&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, November 17, 2012&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=54704&quot; rel=&quot;nofollow&quot;&gt;Symmetric move generation using bitboards&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Lasse%20Hansen&quot;&gt;Lasse Hansen&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, December 20, 2014&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=54798&quot; rel=&quot;nofollow&quot;&gt;Stockfish 32-bit and hardware instructions on MSVC++&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Syed%20Fahad&quot;&gt;Syed Fahad&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, December 30, 2014  » &lt;a class=&quot;wiki_link&quot; href=&quot;/Stockfish&quot;&gt;Stockfish&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/BitScan&quot;&gt;BitScan&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Population%20Count&quot;&gt;Population Count&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;!-- ws:start:WikiTextHeadingRule:233:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc37&quot;&gt;&lt;a name=&quot;Forum Posts-2015 ...&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:233 --&gt;2015 ...&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=57400&quot; rel=&quot;nofollow&quot;&gt;Fun with De Bruijn&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Henk%20van%20den%20Belt&quot;&gt;Henk van den Belt&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, August 27, 2015&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=58230&amp;amp;start=3&quot; rel=&quot;nofollow&quot;&gt;Re: Linux Version of Maverick 1.5&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Michael%20Dvorkin&quot;&gt;Michael Dvorkin&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, November 12, 2015 » &lt;a class=&quot;wiki_link&quot; href=&quot;/Mac%20OS&quot;&gt;OS X&lt;/a&gt;,  &lt;a class=&quot;wiki_link&quot; href=&quot;/Maverick&quot;&gt;Maverick&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=61559&quot; rel=&quot;nofollow&quot;&gt;syzygy users (and Ronald)&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Robert%20Hyatt&quot;&gt;Robert Hyatt&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, September 29, 2016 » &lt;a class=&quot;wiki_link&quot; href=&quot;/Population%20Count&quot;&gt;Population Count&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:235:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc38&quot;&gt;&lt;a name=&quot;External Links&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:235 --&gt;External Links&lt;/h1&gt;
 &lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/Find_first_set&quot; rel=&quot;nofollow&quot;&gt;Find first set from Wikipedia&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://aggregate.org/MAGIC&quot; rel=&quot;nofollow&quot;&gt;The Aggregate Magic Algorithms&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Hank%20Dietz&quot;&gt;Hank Dietz&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://graphics.stanford.edu/%7Eseander/bithacks.html&quot; rel=&quot;nofollow&quot;&gt;Bit Twiddling Hacks&lt;/a&gt; by &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://graphics.stanford.edu/%7Eseander/&quot; rel=&quot;nofollow&quot;&gt;Sean Eron Anderson&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://caladan.nanosoft.ca/c4/software/bitsort.php&quot; rel=&quot;nofollow&quot;&gt;An Efficient Bit-Reversal Sorting Algorithm for the Fast Fourier Transform&lt;/a&gt; by &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://caladan.nanosoft.ca/index.php&quot; rel=&quot;nofollow&quot;&gt;Jennifer Elaan&lt;/a&gt;, January 16, 2005&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.freepatentsonline.com/6172623.html&quot; rel=&quot;nofollow&quot;&gt;Efficient bit scan mechanism - United States Patent 6172623&lt;/a&gt; from &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.freepatentsonline.com/&quot; rel=&quot;nofollow&quot;&gt;FreePatentsOnline.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Videos#FrankZappa&quot;&gt;Frank Zappa&lt;/a&gt; &amp;amp; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/The_Mothers_of_Invention&quot; rel=&quot;nofollow&quot;&gt;the Mothers&lt;/a&gt; - &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/King_Kong&quot; rel=&quot;nofollow&quot;&gt;King Kong&lt;/a&gt; BBC Studio Recording 1968, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/YouTube&quot; rel=&quot;nofollow&quot;&gt;YouTube&lt;/a&gt; Video&lt;br /&gt;
&lt;!-- ws:start:WikiTextMediaRule:157:&amp;lt;img src=&amp;quot;https://www.wikispaces.com/site/embedthumbnail/custom/23775716?h=0&amp;amp;w=0&amp;quot; class=&amp;quot;WikiMedia WikiMediaCustom&amp;quot; id=&amp;quot;wikitext@@media@@type=&amp;amp;quot;custom&amp;amp;quot; key=&amp;amp;quot;23775716&amp;amp;quot;&amp;quot; title=&amp;quot;Custom Media&amp;quot;/&amp;gt; --&gt;&lt;iframe width=&quot;480&quot; height=&quot;360&quot; src=&quot;//www.youtube.com/embed/kk8mPKROUS4?rel=0&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;!-- ws:end:WikiTextMediaRule:157 --&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:237:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc39&quot;&gt;&lt;a name=&quot;References&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:237 --&gt;References&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextReferencesRule:2452:&amp;amp;lt;references /&amp;amp;gt; --&gt;&lt;ol class=&quot;references&quot;&gt;
&lt;li id=&quot;cite_note-1&quot;&gt;&lt;a href=&quot;#cite_ref-1&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.mcescher.com/Gallery/gallery-back.htm&quot; rel=&quot;nofollow&quot;&gt;Picture gallery &amp;quot;Back in Holland 1941 - 1954&amp;quot;&lt;/a&gt; from &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.mcescher.com/&quot; rel=&quot;nofollow&quot;&gt;The Official M.C. Escher Website&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;cite_note-2&quot;&gt;&lt;a href=&quot;#cite_ref-2&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.chip-architect.com/news/2003_09_21_Detailed_Architecture_of_AMDs_64bit_Core.html#1.3&quot; rel=&quot;nofollow&quot;&gt;Chip Architect: Detailed Architecture of AMD&#039;s Opteron - 1.3 A third class of Instructions&lt;/a&gt; by &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.chip-architect.com/&quot; rel=&quot;nofollow&quot;&gt;Hans de Vries&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;cite_note-3&quot;&gt;&lt;a href=&quot;#cite_ref-3&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link&quot; href=&quot;/Donald%20Knuth&quot;&gt;Donald Knuth&lt;/a&gt; (&lt;strong&gt;2009&lt;/strong&gt;). &lt;em&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www-cs-faculty.stanford.edu/%7Eknuth/taocp.html&quot; rel=&quot;nofollow&quot;&gt;The Art of Computer Programming&lt;/a&gt;, Volume 4, Fascicle 1: Bitwise tricks &amp;amp; techniques&lt;/em&gt;, as &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www-cs-faculty.stanford.edu/%7Eknuth/fasc1a.ps.gz&quot; rel=&quot;nofollow&quot;&gt;Pre-Fascicle 1a postscript&lt;/a&gt;, p 10&lt;/li&gt;
&lt;li id=&quot;cite_note-4&quot;&gt;&lt;a href=&quot;#cite_ref-4&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link&quot; href=&quot;/Charles%20Leiserson&quot;&gt;Charles E. Leiserson&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Harald%20Prokop&quot;&gt;Harald Prokop&lt;/a&gt; and &lt;a class=&quot;wiki_link&quot; href=&quot;/Keith%20H.%20Randall&quot;&gt;Keith H. Randall&lt;/a&gt; (&lt;strong&gt;1998&lt;/strong&gt;). &lt;em&gt;Using de Bruijn Sequences to Index a 1 in a Computer Word&lt;/em&gt;, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://supertech.csail.mit.edu/papers/debruijn.pdf&quot; rel=&quot;nofollow&quot;&gt;pdf&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;cite_note-5&quot;&gt;&lt;a href=&quot;#cite_ref-5&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=212586&quot; rel=&quot;nofollow&quot;&gt;&amp;quot;Using de Bruijn Sequences to Index a 1 in a Computer Word&amp;quot;&lt;/a&gt; discussion in &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, February 08, 2002&lt;/li&gt;
&lt;li id=&quot;cite_note-6&quot;&gt;&lt;a href=&quot;#cite_ref-6&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link&quot; href=&quot;/Nicolaas%20de%20Bruijn&quot;&gt;N. G. de Bruijn&lt;/a&gt; (&lt;strong&gt;1975&lt;/strong&gt;). &lt;em&gt;Acknowledgement of priority to C. Flye Sainte-Marie on the counting of circular arrangements of 2n zeros and ones that show each n-letter word exactly once&lt;/em&gt;. Technical Report, Technische Hogeschool Eindhoven, available as &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://alexandria.tue.nl/repository/books/252901.pdf&quot; rel=&quot;nofollow&quot;&gt;pdf reprint&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;cite_note-7&quot;&gt;&lt;a href=&quot;#cite_ref-7&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://groups.google.com/group/comp.lang.asm.x86/browse_frm/thread/de9546cd019bd72b/f46209f47d2a7ddb?lnk=gst&amp;amp;q=Matt+Taylor+magic#f46209f47d2a7ddb&quot; rel=&quot;nofollow&quot;&gt;Bit magic&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Matt%20Taylor&quot;&gt;Matt Taylor&lt;/a&gt;, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://groups.google.com/group/comp.lang.asm.x86/topics&quot; rel=&quot;nofollow&quot;&gt;comp.lang.asm.x86&lt;/a&gt;, June 26, 2003&lt;/li&gt;
&lt;li id=&quot;cite_note-8&quot;&gt;&lt;a href=&quot;#cite_ref-8&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=265635&quot; rel=&quot;nofollow&quot;&gt;Another hacky method for bitboard bit extraction&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Walter%20Faxon&quot;&gt;Walter Faxon&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, November 17, 2002&lt;/li&gt;
&lt;li id=&quot;cite_note-9&quot;&gt;&lt;a href=&quot;#cite_ref-9&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://groups.google.com/group/rec.games.chess.computer/browse_frm/thread/d5dbf08c66e83517#&quot; rel=&quot;nofollow&quot;&gt;bitboard 2^i mod 67 is unique&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Stefan%20Plenkner&quot;&gt;Stefan Plenkner&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Computer%20Chess%20Forums&quot;&gt;rgcc&lt;/a&gt;, August 6, 1996&lt;/li&gt;
&lt;li id=&quot;cite_note-10&quot;&gt;&lt;a href=&quot;#cite_ref-10&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link&quot; href=&quot;/Pablo%20San%20Segundo&quot;&gt;Pablo San Segundo&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Ram%C3%B3n%20Gal%C3%A1n&quot;&gt;Ramón Galán&lt;/a&gt; (&lt;strong&gt;2005&lt;/strong&gt;). &lt;em&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.actapress.com/Abstract.aspx?paperId=18953&quot; rel=&quot;nofollow&quot;&gt;Bitboards: A New Approach&lt;/a&gt;&lt;/em&gt;. &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.informatik.uni-trier.de/%7Eley/db/conf/aia/aia2005.html#SegundoG05&quot; rel=&quot;nofollow&quot;&gt;AIA 2005&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;cite_note-11&quot;&gt;&lt;a href=&quot;#cite_ref-11&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.open-aurec.com/wbforum/viewtopic.php?f=4&amp;amp;t=3141&quot; rel=&quot;nofollow&quot;&gt;Best BitBoard LSB funktion?&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Reinhard%20Scharnagl&quot;&gt;Reinhard Scharnagl&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Computer%20Chess%20Forums&quot;&gt;Winboard Programming Forum&lt;/a&gt;, July 20, 2005&lt;/li&gt;
&lt;li id=&quot;cite_note-12&quot;&gt;&lt;a href=&quot;#cite_ref-12&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=124712&quot; rel=&quot;nofollow&quot;&gt;Re: Will the Itanium have a BSF or BSR instruction?&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Eugene%20Nalimov&quot;&gt;Eugene Nalimov&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, August 16, 2000&lt;/li&gt;
&lt;li id=&quot;cite_note-13&quot;&gt;&lt;a href=&quot;#cite_ref-13&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=38777&quot; rel=&quot;nofollow&quot;&gt;ms1bTable array in Eugene Nalimovs bitScanReverse&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Stef%20Luijten&quot;&gt;Stef Luijten&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, April 17, 2011&lt;/li&gt;
&lt;li id=&quot;cite_note-14&quot;&gt;&lt;a href=&quot;#cite_ref-14&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=472455&quot; rel=&quot;nofollow&quot;&gt;just another reverse bitscan&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Gerd%20Isenberg&quot;&gt;Gerd Isenberg&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, December 22, 2005&lt;/li&gt;
&lt;li id=&quot;cite_note-15&quot;&gt;&lt;a href=&quot;#cite_ref-15&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=472762&quot; rel=&quot;nofollow&quot;&gt;final version - homage to FZ&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Gerd%20Isenberg&quot;&gt;Gerd Isenberg&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, December 23, 2005&lt;/li&gt;
&lt;li id=&quot;cite_note-16&quot;&gt;&lt;a href=&quot;#cite_ref-16&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://ep2012.europython.eu/conference/p/mark-dickinson&quot; rel=&quot;nofollow&quot;&gt;EuroPython 2012: Florence, July 2–8 | Mark Dickinson&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;cite_note-17&quot;&gt;&lt;a href=&quot;#cite_ref-17&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://graphics.stanford.edu/~seander/bithacks.html#IntegerLogDeBruijn&quot; rel=&quot;nofollow&quot;&gt;Find the log base 2 of an N-bit integer in O(lg(N)) operations with multiply and lookup&lt;/a&gt; from &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://graphics.stanford.edu/%7Eseander/bithacks.html&quot; rel=&quot;nofollow&quot;&gt;Bit Twiddling Hacks&lt;/a&gt; by &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://graphics.stanford.edu/%7Eseander/&quot; rel=&quot;nofollow&quot;&gt;Sean Eron Anderson&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;cite_note-18&quot;&gt;&lt;a href=&quot;#cite_ref-18&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www-scm.tees.ac.uk/users/a.clements/BF/BF.htm&quot; rel=&quot;nofollow&quot;&gt;68020 Bit Field Instructions&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;cite_note-19&quot;&gt;&lt;a href=&quot;#cite_ref-19&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/SSE4#SSE4a&quot; rel=&quot;nofollow&quot;&gt;SSE4a from Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;cite_note-20&quot;&gt;&lt;a href=&quot;#cite_ref-20&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://msdn.microsoft.com/en-us/library/bb384809.aspx&quot; rel=&quot;nofollow&quot;&gt;__lzcnt16, __lzcnt, __lzcnt64&lt;/a&gt; Visual C++ Language Reference&lt;/li&gt;
&lt;li id=&quot;cite_note-21&quot;&gt;&lt;a href=&quot;#cite_ref-21&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=283655&quot; rel=&quot;nofollow&quot;&gt;Bitscan&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Matt%20Taylor&quot;&gt;Matt Taylor&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, February 11, 2003&lt;/li&gt;
&lt;li id=&quot;cite_note-22&quot;&gt;&lt;a href=&quot;#cite_ref-22&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://msdn.microsoft.com/en-us/library/wfd9z0bb%28v=VS.100%29.aspx&quot; rel=&quot;nofollow&quot;&gt;_BitScanForward, _BitScanForward64&lt;/a&gt; Visual C++ Language Reference&lt;/li&gt;
&lt;li id=&quot;cite_note-23&quot;&gt;&lt;a href=&quot;#cite_ref-23&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://msdn.microsoft.com/en-us/library/fbxyd7zd%28v=VS.100%29.aspx&quot; rel=&quot;nofollow&quot;&gt;_BitScanReverse, _BitScanReverse64&lt;/a&gt; Visual C++ Language Reference&lt;/li&gt;
&lt;li id=&quot;cite_note-24&quot;&gt;&lt;a href=&quot;#cite_ref-24&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://msdn.microsoft.com/en-us/library/bb384809.aspx&quot; rel=&quot;nofollow&quot;&gt;__lzcnt16, __lzcnt, __lzcnt64&lt;/a&gt; Visual C++ Language Reference&lt;/li&gt;
&lt;li id=&quot;cite_note-25&quot;&gt;&lt;a href=&quot;#cite_ref-25&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://linux.die.net/man/3/&quot; rel=&quot;nofollow&quot;&gt;Section 3: library functions - Linux man pages&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;cite_note-26&quot;&gt;&lt;a href=&quot;#cite_ref-26&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://linux.die.net/man/3/ffsll&quot; rel=&quot;nofollow&quot;&gt;ffsll(3): find first bit set in word - Linux man page&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;cite_note-27&quot;&gt;&lt;a href=&quot;#cite_ref-27&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://gcc.gnu.org/onlinedocs/gcc-4.4.5/gcc/Other-Builtins.html#Other-Builtins&quot; rel=&quot;nofollow&quot;&gt;Other Builtins - Using the GNU Compiler Collection (GCC)&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;cite_note-28&quot;&gt;&lt;a href=&quot;#cite_ref-28&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=388787&quot; rel=&quot;nofollow&quot;&gt;Re: Nalimov: bsf/bsr intrinsics implementation still not optimal&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Eugene%20Nalimov&quot;&gt;Eugene Nalimov&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, September 23, 2004&lt;/li&gt;
&lt;li id=&quot;cite_note-29&quot;&gt;&lt;a href=&quot;#cite_ref-29&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.jjj.de/fxt/fxtbook.pdf&quot; rel=&quot;nofollow&quot;&gt;Matters Computational - ideas, algorithms, source code&lt;/a&gt; (pdf) Ideas and Source Code by &lt;a class=&quot;wiki_link&quot; href=&quot;/Mathematician#Arndt&quot;&gt;Jörg Arndt&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;cite_note-30&quot;&gt;&lt;a href=&quot;#cite_ref-30&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.agner.org/optimize/instruction_tables.pdf&quot; rel=&quot;nofollow&quot;&gt;Instruction tables, Lists of instruction latencies, throughputs and microoperation breakdowns for Intel and AMD CPU&#039;s&lt;/a&gt; (pdf) by &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.agner.org/&quot; rel=&quot;nofollow&quot;&gt;Agner Fog&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;cite_note-31&quot;&gt;&lt;a href=&quot;#cite_ref-31&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://support.amd.com/us/Processor_TechDocs/25112.PDF&quot; rel=&quot;nofollow&quot;&gt;Software Optimization Guide for AMD64 Processors&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;cite_note-32&quot;&gt;&lt;a href=&quot;#cite_ref-32&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://support.amd.com/us/Processor_TechDocs/40546.pdf&quot; rel=&quot;nofollow&quot;&gt;Software Optimization Guide for AMD Family 10h and 12h Processors&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;cite_note-33&quot;&gt;&lt;a href=&quot;#cite_ref-33&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.intel.com/design/processor/manuals/248966.pdf&quot; rel=&quot;nofollow&quot;&gt;Intel 64 and IA32 Architectures Optimization Reference Manual&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;cite_note-34&quot;&gt;&lt;a href=&quot;#cite_ref-34&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://users.atw.hu/instlatx64/GenuineIntel00306C3_Haswell_InstLatX64.txt&quot; rel=&quot;nofollow&quot;&gt;Haswell Instructions Latency&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;cite_note-35&quot;&gt;&lt;a href=&quot;#cite_ref-35&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.intel.com/Assets/PDF/manual/253666.pdf&quot; rel=&quot;nofollow&quot;&gt;Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 2A: Instruction Set Reference, A-M&lt;/a&gt; (pdf) BSF—Bit Scan Forward 3-87&lt;/li&gt;
&lt;li id=&quot;cite_note-36&quot;&gt;&lt;a href=&quot;#cite_ref-36&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://support.amd.com/us/Processor_TechDocs/24594_APM_v3.pdf&quot; rel=&quot;nofollow&quot;&gt;AMD64 Architecture Programmer’s Manual Volume 3: General-Purpose and System Instructions&lt;/a&gt; (pdf) Bit Scan Forward pg. 111&lt;/li&gt;
&lt;li id=&quot;cite_note-37&quot;&gt;&lt;a href=&quot;#cite_ref-37&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0379a/Cihjgjed.html&quot; rel=&quot;nofollow&quot;&gt;ARM Information Center &amp;gt; General data processing instructions &amp;gt; CLZ&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;cite_note-38&quot;&gt;&lt;a href=&quot;#cite_ref-38&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0376a/CJAEJGJD.html&quot; rel=&quot;nofollow&quot;&gt;ARM Information Center &amp;gt; Instruction intrinsics &amp;gt; __builtin_clz&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;cite_note-39&quot;&gt;&lt;a href=&quot;#cite_ref-39&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://developer.apple.com/mac/library/documentation/DeveloperTools/gcc-4.0.1/gcc/Other-Builtins.html&quot; rel=&quot;nofollow&quot;&gt;Other Builtins - Using the GNU Compiler Collection (GCC)&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;cite_note-40&quot;&gt;&lt;a href=&quot;#cite_ref-40&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=31228&quot; rel=&quot;nofollow&quot;&gt;Bit Scan (equivalent to ASM instructions bsr and bsf)&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Pascal%20Georges&quot;&gt;Pascal Georges&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, December 24, 2009&lt;/li&gt;
&lt;/ol&gt;&lt;!-- ws:end:WikiTextReferencesRule:2452 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:239:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc40&quot;&gt;&lt;a name=&quot;What links here?&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:239 --&gt;What links here?&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextIncludeRule:023:&amp;lt;img src=&amp;quot;https://www.wikispaces.com/site/embedthumbnail/include/backlinks?w=200&amp;amp;h=100&amp;quot; class=&amp;quot;WikiMedia WikiMediaInclude&amp;quot; id=&amp;quot;wikitext@@include@@page=&amp;amp;quot;BitScan&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;160&amp;amp;quot;&amp;quot; title=&amp;quot;Include backlinks: page=&amp;amp;quot;BitScan&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;160&amp;amp;quot;&amp;quot; /&amp;gt; --&gt;&lt;div class=&quot;includeBody-BitScan includeBody-BitScan includeBody&quot;&gt;&lt;table class=&quot;includeBacklinks&quot;&gt;
  &lt;thead&gt;
    &lt;tr class=&quot;includeBacklinksHeading&quot;&gt;
      &lt;th class=&quot;includeBacklinksPageHeading&quot;&gt;Page&lt;/th&gt;
      &lt;th class=&quot;includeBacklinksDateHeading&quot;&gt;Date Edited&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
    &lt;tbody&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/68020&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;68020&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jun 7, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Alcides+Schulz&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Alcides Schulz&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 29, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Algorithms&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Algorithms&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;May 5, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Amundsen&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Amundsen&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Sep 3, 2013&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Array&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Array&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 1, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Attack+and+Defend+Maps&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Attack and Defend Maps&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 5, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/AVX-512&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;AVX-512&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Aug 8, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Backtracking&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Backtracking&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 16, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Beowulf&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Beowulf&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;May 5, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Bison&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Bison&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Sep 29, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Bit&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Bit&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Oct 29, 2012&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Bit-Twiddling&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Bit-Twiddling&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 6, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Bitboard+Serialization&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Bitboard Serialization&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 24, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Bitboards&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Bitboards&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 14, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Bitfoot&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Bitfoot&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Sep 8, 2015&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/BitScan&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;BitScan&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Sep 10, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Blockage+Detection&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Blockage Detection&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Oct 19, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/BMI1&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;BMI1&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 24, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/BMI2&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;BMI2&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 6, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Bobcat&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Bobcat&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jun 27, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Brainless&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Brainless&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jun 24, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Cassandre&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Cassandre&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jul 5, 2013&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Charles+Leiserson&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Charles Leiserson&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Oct 12, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/CHEOPS&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;CHEOPS&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Apr 18, 2015&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Chess+0.5&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Chess 0.5&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 20, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Chezzz&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Chezzz&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 20, 2013&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Classical+Approach&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Classical Approach&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 28, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Congruent+Modulo+Bitboards&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Congruent Modulo Bitboards&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jun 26, 2013&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/CookieCat&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;CookieCat&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 15, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Crafty&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Crafty&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 28, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Cray-1&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Cray-1&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 25, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Cupcake&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Cupcake&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;May 19, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Daniel+White&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Daniel White&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Feb 9, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/David+Rasmussen&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;David Rasmussen&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 16, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/De+Bruijn+sequence&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;De Bruijn sequence&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Feb 20, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/De+Bruijn+Sequence+Generator&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;De Bruijn Sequence Generator&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 1, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/DEC+Alpha&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;DEC Alpha&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Aug 15, 2015&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Dictionary&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Dictionary&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Aug 24, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Dieter+B%C3%BCrssner&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Dieter Bürssner&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 1, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Djinn&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Djinn&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Feb 8, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Double&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Double&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;May 30, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Efficient+Generation+of+Sliding+Piece+Attacks&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Efficient Generation of Sliding Piece Attacks&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 5, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Encoding+Moves&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Encoding Moves&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 27, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Eugene+Nalimov&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Eugene Nalimov&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 23, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Ferranti+Mark+1&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Ferranti Mark 1&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jun 2, 2015&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Fizbo&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Fizbo&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 22, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Float&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Float&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 11, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Gaviota&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Gaviota&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 21, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/General+Setwise+Operations&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;General Setwise Operations&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Feb 25, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Gibbon&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Gibbon&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 23, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Gk&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Gk&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Oct 9, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Guido+Schimmels&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Guido Schimmels&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Apr 23, 2013&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Hakkapeliitta&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Hakkapeliitta&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Apr 26, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Harald+Prokop&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Harald Prokop&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 29, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Hash+Table&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Hash Table&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 1, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/HeavyChess&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;HeavyChess&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Feb 14, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Ifrit&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Ifrit&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Feb 7, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Intel&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Intel&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Aug 29, 2015&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Itanium&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Itanium&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Aug 29, 2015&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Jan+Renze+Steenhuisen&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Jan Renze Steenhuisen&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Sep 10, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Java-Bitscan&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Java-Bitscan&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 15, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Jo%C3%ABl+Rivat&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Joël Rivat&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jul 21, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Joker+IT&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Joker IT&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Sep 16, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Keith+H.+Randall&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Keith H. Randall&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jun 16, 2015&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Kim+Walisch&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Kim Walisch&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Aug 10, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/King+of+Kings&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;King of Kings&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Sep 4, 2013&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/King+Pattern&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;King Pattern&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 15, 2013&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Knight+Pattern&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Knight Pattern&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Feb 23, 2015&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Koundinya+Veluri&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Koundinya Veluri&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Feb 2, 2013&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Kurt&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Kurt&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Apr 20, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Leila&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Leila&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;May 8, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Little+Wing&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Little Wing&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Oct 26, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Luca+Hemmerich&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Luca Hemmerich&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jun 19, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Mac+OS&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Mac OS&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 25, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Martin+Sedlak&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Martin Sedlak&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 25, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Mathematician&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Mathematician&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Apr 9, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Matt+Taylor&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Matt Taylor&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Feb 17, 2013&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Matthew+R.+Brades&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Matthew R. Brades&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jun 9, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Michael+Dvorkin&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Michael Dvorkin&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 8, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Mikhail+R.+Shura-Bura&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Mikhail R. Shura-Bura&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Oct 30, 2013&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Murka&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Murka&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 11, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Nathan+Thom&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Nathan Thom&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 15, 2013&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Nicolaas+de+Bruijn&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Nicolaas de Bruijn&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Feb 3, 2015&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/NoraGrace&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;NoraGrace&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 23, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Obstruction+Difference&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Obstruction Difference&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;May 27, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Othello&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Othello&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 4, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Pablo+San+Segundo&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Pablo San Segundo&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Feb 25, 2015&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Paladin&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Paladin&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 29, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Pascal+Georges&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Pascal Georges&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jun 1, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/PIC+Microcontroller&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;PIC Microcontroller&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Oct 27, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Pieces+versus+Directions&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Pieces versus Directions&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Oct 6, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Population+Count&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Population Count&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Sep 3, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/PowerPC&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;PowerPC&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Oct 6, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Prophet&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Prophet&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Sep 30, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Ram%C3%B3n+Gal%C3%A1n&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Ramón Galán&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Feb 25, 2015&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/RedQueen&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;RedQueen&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 13, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Reinhard+Scharnagl&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Reinhard Scharnagl&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Apr 9, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Reverse+Bitboards&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Reverse Bitboards&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Aug 29, 2015&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Robert+Hyatt&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Robert Hyatt&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 25, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Robocide&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Robocide&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;May 11, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/SBAMG&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;SBAMG&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 4, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Scorpio&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Scorpio&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 28, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Searcher&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Searcher&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Sep 26, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Senpai&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Senpai&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 10, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Severi+Salminen&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Severi Salminen&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;May 7, 2015&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Shifted+Bitboards&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Shifted Bitboards&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 9, 2011&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Sliding+Piece+Attacks&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Sliding Piece Attacks&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;May 27, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Space-Time+Tradeoff&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Space-Time Tradeoff&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jun 17, 2015&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Spector&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Spector&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 11, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/SSE4&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;SSE4&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jun 5, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Stef+Luijten&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Stef Luijten&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Apr 26, 2015&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Stefan+Plenkner&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Stefan Plenkner&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 31, 2015&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Stockfish&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Stockfish&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Apr 7, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Sune+Fischer&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Sune Fischer&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Apr 7, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Sungorus&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Sungorus&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Apr 11, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Syed+Fahad&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Syed Fahad&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 1, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Thor%27s+Hammer&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Thor&amp;#039;s Hammer&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 23, 2013&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Traversing+Subsets+of+a+Set&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Traversing Subsets of a Set&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Oct 14, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Tucano&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Tucano&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 16, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Tunguska&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Tunguska&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Sep 16, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Vadim+Demichev&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Vadim Demichev&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jul 26, 2013&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Vice&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Vice&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 8, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Walter+Faxon&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Walter Faxon&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 6, 2015&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Warrior&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Warrior&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Feb 23, 2015&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Wasp&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Wasp&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 24, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/X-ray+Attacks+%28Bitboards%29&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;X-ray Attacks (Bitboards)&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 31, 2015&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/x86&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;x86&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 4, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/x86-64&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;x86-64&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 6, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/x86-64+Instructions+to+Include&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;x86-64 Instructions to Include&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Feb 12, 2011&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Zurichess&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Zurichess&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 12, 2018&lt;/td&gt;
    &lt;/tr&gt;
      &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;&lt;!-- ws:end:WikiTextIncludeRule:023 --&gt;&lt;br /&gt;
&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Bitboards&quot;&gt;Up one Level&lt;/a&gt;&lt;/strong&gt;</description>
          </item>
    <item>
      <title>Candidates (Bitboards)</title>
      <link>https://chessprogramming.wikispaces.com/Candidates+%28Bitboards%29</link>
      <dc:creator>GerdIsenberg</dc:creator>
      <guid isPermaLink="true">https://chessprogramming.wikispaces.com/Candidates+%28Bitboards%29</guid>
      <comments>https://chessprogramming.wikispaces.com/page/messages/Candidates+%28Bitboards%29</comments>
      <pubDate>Sat, 11 Nov 2017 09:57:18 GMT</pubDate>
      <description>&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Home&quot;&gt;Home&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Board%20Representation&quot;&gt;Board Representation&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Bitboards&quot;&gt;Bitboards&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Pattern%20and%20Properties&quot;&gt;Pawn Pattern and Properties&lt;/a&gt; * Candidates&lt;/strong&gt;&lt;br /&gt;


&lt;table class=&quot;wiki_table&quot;&gt;
    &lt;tr&gt;
        &lt;td&gt;&lt;!-- ws:start:WikiTextLocalImageRule:84:&amp;lt;a href=&amp;quot;http://www.chgs.umn.edu/museum/responses/bak/chess.html&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;/file/view/Designated.jpg/157858731/Designated.jpg&amp;quot; alt=&amp;quot;&amp;quot; title=&amp;quot;&amp;quot; style=&amp;quot;width: 200px;&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt; --&gt;&lt;a href=&quot;http://www.chgs.umn.edu/museum/responses/bak/chess.html&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;/file/view/Designated.jpg/157858731/Designated.jpg&quot; alt=&quot;Designated.jpg&quot; title=&quot;Designated.jpg&quot; style=&quot;width: 200px;&quot; /&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextLocalImageRule:84 --&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td rowspan=&quot;2&quot;&gt;&lt;strong&gt;Candidates&lt;/strong&gt;,&lt;br /&gt;
pawns that can force themselves to become &lt;a class=&quot;wiki_link&quot; href=&quot;/Passed%20Pawn&quot;&gt;passed pawns&lt;/a&gt; simply with a series of pawn moves. Candidates are half-open pawns with no mechanical but dynamical obstructions. Specifially, the pawn must be on a half-open file, and the number of defender pawns that can help the pawn advance are greater than or equal to the number of pawns which attack the pawn or squares in front of it.&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Arts#Bak&quot;&gt;Samuel Bak&lt;/a&gt; - The Designated &lt;!-- ws:start:WikiTextRefRule:8:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.chgs.umn.edu/museum/responses/bak/chess.html&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Chess in the Art of Samuel Bak&amp;lt;/a&amp;gt;, &amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.chgs.umn.edu/&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Center for Holocaust &amp;amp;amp; Genocide Studies&amp;lt;/a&amp;gt;, &amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;https://en.wikipedia.org/wiki/University_of_Minnesota&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;University of Minnesota&amp;lt;/a&amp;gt;&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-1&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:8 --&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
    &lt;/tr&gt;
&lt;/table&gt;

&lt;!-- ws:start:WikiTextTocRule:36:&amp;lt;img id=&amp;quot;wikitext@@toc@@normal&amp;quot; class=&amp;quot;WikiMedia WikiMediaToc&amp;quot; title=&amp;quot;Table of Contents&amp;quot; src=&amp;quot;/site/embedthumbnail/toc/normal?w=225&amp;amp;h=100&amp;quot;/&amp;gt; --&gt;&lt;div id=&quot;toc&quot;&gt;&lt;h1 class=&quot;nopad&quot;&gt;Table of Contents&lt;/h1&gt;&lt;!-- ws:end:WikiTextTocRule:36 --&gt;&lt;!-- ws:start:WikiTextTocRule:37: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Candidate and Faker&quot;&gt;Candidate and Faker&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:37 --&gt;&lt;!-- ws:start:WikiTextTocRule:38: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Candidate and Faker-Advanced Candidates&quot;&gt;Advanced Candidates&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:38 --&gt;&lt;!-- ws:start:WikiTextTocRule:39: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Candidate and Faker-Less Advanced&quot;&gt;Less Advanced&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:39 --&gt;&lt;!-- ws:start:WikiTextTocRule:40: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#The Sneaker&quot;&gt;The Sneaker&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:40 --&gt;&lt;!-- ws:start:WikiTextTocRule:41: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#See also&quot;&gt;See also&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:41 --&gt;&lt;!-- ws:start:WikiTextTocRule:42: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#External Links&quot;&gt;External Links&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:42 --&gt;&lt;!-- ws:start:WikiTextTocRule:43: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#References&quot;&gt;References&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:43 --&gt;&lt;!-- ws:start:WikiTextTocRule:44: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#What links here?&quot;&gt;What links here?&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:44 --&gt;&lt;!-- ws:start:WikiTextTocRule:45: --&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:45 --&gt;&lt;!-- ws:start:WikiTextHeadingRule:20:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc0&quot;&gt;&lt;a name=&quot;Candidate and Faker&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:20 --&gt;&lt;!-- ws:start:WikiTextAnchorRule:46:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@Faker&amp;quot; title=&amp;quot;Anchor: Faker&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;Faker&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:46 --&gt;Candidate and Faker&lt;/h1&gt;
 While the intersection of the &lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Spans&quot;&gt;frontspan&lt;/a&gt; with opposing pawns is empty, the intersection of &lt;a class=&quot;wiki_link&quot; href=&quot;/Attack%20Spans&quot;&gt;front attackspans&lt;/a&gt; with opposing pawns is not (otherwise it would already a passer). The opposing pawns as member of the front attackspan(s), stand sentinel over one or more squares in the &lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Fills&quot;&gt;frontfill&lt;/a&gt; of the open pawn, and are about to &lt;strong&gt;capture&lt;/strong&gt; the open pawn, if it may advance into - or already is - a &lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Levers%20%28Bitboards%29&quot;&gt;lever&lt;/a&gt;. Those opposing pawns are called &lt;a class=&quot;wiki_link&quot; href=&quot;/Sentry&quot;&gt;sentries&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
If the open pawn has one or more &lt;strong&gt;helper-pawns&lt;/strong&gt; on adjacent files, which are able to &lt;strong&gt;recapture&lt;/strong&gt; the &lt;strong&gt;sentry&lt;/strong&gt;, the candidate is a real one and is guaranteed to force a passer. Otherwise, without enough support from helpers, the candidate is only a &lt;a class=&quot;wiki_link&quot; href=&quot;/Faker&quot;&gt;faker&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
The following diagrams shows advanced candidates and fakers, assuming black to move:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:0:
&amp;lt;pre class=&amp;quot;text&amp;quot;&amp;gt;candidates b6, f4   fakers -&amp;lt;br/&amp;gt;sentries   c7, g2   more sentries&amp;lt;br/&amp;gt;helper     c5, g4   than helpers&amp;lt;br/&amp;gt;. . . . | . . .     . . . . | . . .&amp;lt;br/&amp;gt;. . b . . . . .     b . b . . . . .&amp;lt;br/&amp;gt;. w . . . . . .     . w . . . . . .&amp;lt;br/&amp;gt;. . w . . . . .     . . w . . . . .&amp;lt;br/&amp;gt;. . . . . b b .     . . . . . b b .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . w .     . . . . w . w .&amp;lt;br/&amp;gt;. . . | . . . .     . . . | . . . .&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.text  {font-family:monospace;}
.text .imp {font-weight: bold; color: red;}
.text span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;text&quot;&gt;candidates b6, f4   fakers -
sentries   c7, g2   more sentries
helper     c5, g4   than helpers
. . . . | . . .     . . . . | . . .
. . b . . . . .     b . b . . . . .
. w . . . . . .     . w . . . . . .
. . w . . . . .     . . w . . . . .
. . . . . b b .     . . . . . b b .
. . . . . . . .     . . . . . . . .
. . . . . . w .     . . . . w . w .
. . . | . . . .     . . . | . . . .&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:0 --&gt;The white candidate on b6 is already in lever-distance with the sentry c7. The sentry c7 is likely forced to capture - otherwise b6 captures or pushes to become a passer. The white helper immediately recaptures and takes the role of the former candidate and becomes a passer. The black candidate on f4 can also force a passer. The helper on g4 compensates the sentry on g2. Usually, the &lt;strong&gt;candidate&lt;/strong&gt; has to push forward, not the &lt;strong&gt;helper&lt;/strong&gt;.&lt;br /&gt;
&lt;br /&gt;
In the second diagram both candidates are pseudo-candidates or &lt;strong&gt;fakers&lt;/strong&gt;, since there are &lt;strong&gt;more&lt;/strong&gt; sentries than helpers - a7xb6 is required - otherwise, after c7xb6, c5-c6 would allow the helper to advance to a passer.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:22:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc1&quot;&gt;&lt;a name=&quot;Candidate and Faker-Advanced Candidates&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:22 --&gt;Advanced Candidates&lt;/h2&gt;
 Advanced candidates, already inside or about to enter the opponent side of the board are the most important to consider in evaluation. Even more if the &lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Spans#InterSpans&quot;&gt;interspan&lt;/a&gt; of sentries and helper is already one - and it is only about the control of the stop-square - or if the candidate is already part of a lever, the number of attacks and defenses.&lt;br /&gt;
&lt;br /&gt;
In such cases, due to the forced nature of exchanging candidate, sentry and helper, only two or up to five plies are necessary to establish a passer. In fact those candidates may even be more worth than pawns already a passer - specially if the opponent king is outside the candidates square - or if the outside candidate may deflect the opponent king.&lt;br /&gt;
&lt;br /&gt;
One may argue that a candidate already in lever distance with the sentry should be covered by &lt;a class=&quot;wiki_link&quot; href=&quot;/quiescence%20search&quot;&gt;quiescence search&lt;/a&gt; - since it is a capture/recapture sequence. Therefor more important to evaluate are the candidate-helper-duo/trio against one or two sentries, which is likely a kind of static exchange evaluation of the candidate&#039;s stop-square.&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:1:
&amp;lt;pre class=&amp;quot;text&amp;quot;&amp;gt;. . . . . . . .&amp;lt;br/&amp;gt;. . s . . s . s   sentries&amp;lt;br/&amp;gt;. . . . . . . .&amp;lt;br/&amp;gt;. c h . . h c h   candidates with helpers&amp;lt;br/&amp;gt;. . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.text  {font-family:monospace;}
.text .imp {font-weight: bold; color: red;}
.text span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;text&quot;&gt;. . . . . . . .
. . s . . s . s   sentries
. . . . . . . .
. c h . . h c h   candidates with helpers
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:1 --&gt;To cover sets of advanced white candidates with attacked but sufficient defended stops already on the on the 5th rank, one may use some code like this. Feel free to introduce branches, e.g. if there are no white pawns on the fifth rank. Anyway, &lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Attacks%20%28Bitboards%29#PawnAttackMaps&quot;&gt;wSafePawnSquares&lt;/a&gt; might be used elsewhere, e.g. to decide whether helper pawns may advance to defend candidate&#039;s stop.&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:2:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;U64 wCandidatesOn5th(U64 wpawns, U64 bpawns) {&amp;lt;br/&amp;gt;   const U64 rank5     = C64(0x000000ff00000000);&amp;lt;br/&amp;gt;   U64 bPawnAnyAttacks = bPawnAnyAttacks(bpawns);&amp;lt;br/&amp;gt;   U64 wSafeSquares    = wSafePawnSquares(wpawns, bpawns);&amp;lt;br/&amp;gt;   U64 wSafeAttacked   = bPawnAnyAttacks  &amp;amp;amp;  wSafeSquares;&amp;lt;br/&amp;gt;   U64 blackFrontSpan  = (bpawns &amp;amp;gt;&amp;amp;gt; 8)    | (bpawns &amp;amp;gt;&amp;amp;gt; 16); // only for 5th rank&amp;lt;br/&amp;gt;   return wpawns &amp;amp;amp; rank5 &amp;amp;amp;~blackFrontSpan &amp;amp;amp; (wSafeAttacked &amp;amp;gt;&amp;amp;gt; 8);&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;U64 wCandidatesOn5th&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 wpawns, U64 bpawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; U64 rank5     &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; C64&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu12&quot;&gt;0x000000ff00000000&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   U64 bPawnAnyAttacks &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bPawnAnyAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bpawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   U64 wSafeSquares    &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; wSafePawnSquares&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;wpawns, bpawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   U64 wSafeAttacked   &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bPawnAnyAttacks  &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;  wSafeSquares&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   U64 blackFrontSpan  &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bpawns &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;    &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bpawns &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// only for 5th rank&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; wpawns &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; rank5 &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;~blackFrontSpan &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;wSafeAttacked &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:2 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:24:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc2&quot;&gt;&lt;a name=&quot;Candidate and Faker-Less Advanced&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:24 --&gt;Less Advanced&lt;/h2&gt;
 If it is about the long-term evaluation of &lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Spans#StopandDistantStop&quot;&gt;telestop&lt;/a&gt; -squares - or the need of advancement of helper(s) to defend the stop-square, things become more complicated and one probably better relies on search and some general bonus to advance half-free pawns and advanced duos. Feel free to cover attackspan-related stuff for less advanced candidates respectively helpers and helper&#039;s helpers.&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:3:
&amp;lt;pre class=&amp;quot;text&amp;quot;&amp;gt;d4 is candidate     d4 is faker         d4 faker due to     d4 is candidate&amp;lt;br/&amp;gt;                                        helper&#039;s sentry     due to helper&#039;s helper f2&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . s . s . . .     . . s . s . . .     . . s . s . . .     . . s . s . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . hs. .     . . . . . hs. .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . c . . . .     . . . f . . . .     . . . f . . . .     . . . c . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . h . h . . .     . . h . . . . .     . . h . h . . .     . . h . h hh. .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.text  {font-family:monospace;}
.text .imp {font-weight: bold; color: red;}
.text span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;text&quot;&gt;d4 is candidate     d4 is faker         d4 faker due to     d4 is candidate
                                        helper&#039;s sentry     due to helper&#039;s helper f2
. . . . . . . .     . . . . . . . .     . . . . . . . .     . . . . . . . .
. . s . s . . .     . . s . s . . .     . . s . s . . .     . . s . s . . .
. . . . . . . .     . . . . . . . .     . . . . . hs. .     . . . . . hs. .
. . . . . . . .     . . . . . . . .     . . . . . . . .     . . . . . . . .
. . . c . . . .     . . . f . . . .     . . . f . . . .     . . . c . . . .
. . . . . . . .     . . . . . . . .     . . . . . . . .     . . . . . . . .
. . h . h . . .     . . h . . . . .     . . h . h . . .     . . h . h hh. .
. . . . . . . .     . . . . . . . .     . . . . . . . .     . . . . . . . .&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:3 --&gt;&lt;!-- ws:start:WikiTextAnchorRule:47:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@Sneaker&amp;quot; title=&amp;quot;Anchor: Sneaker&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;Sneaker&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:47 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:26:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc3&quot;&gt;&lt;a name=&quot;The Sneaker&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:26 --&gt;The Sneaker&lt;/h1&gt;
 Also known as a &lt;a class=&quot;wiki_link&quot; href=&quot;/Hidden%20Passed%20Pawn&quot;&gt;hidden passed pawn&lt;/a&gt;. A kind of candidate in disguise is an &lt;a class=&quot;wiki_link&quot; href=&quot;/Unfree%20Pawns%20%28Bitboards%29&quot;&gt;unfree pawn&lt;/a&gt; or &lt;a class=&quot;wiki_link&quot; href=&quot;/Candidates%20%28Bitboards%29#Faker&quot;&gt;faker&lt;/a&gt; that may become a passer through a sacrificial combination. In the diagram white may sacrifice the faker with b5-b6 - allowing black to establish a passer on b6 - but the sneaker on c6 becomes a much more advanced passer with a frontspan of only two against five:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:4:
&amp;lt;pre class=&amp;quot;text&amp;quot;&amp;gt;. . . . . . . .&amp;lt;br/&amp;gt;. . b . . . . .&amp;lt;br/&amp;gt;. . w . . . . .&amp;lt;br/&amp;gt;. w . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.text  {font-family:monospace;}
.text .imp {font-weight: bold; color: red;}
.text span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;text&quot;&gt;. . . . . . . .
. . b . . . . .
. . w . . . . .
. w . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:4 --&gt;A sneaker is likely advanced (opponent side of the board), &lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Rams%20%28Bitboards%29&quot;&gt;rammed&lt;/a&gt; and defended, but no lever. No other opposing pawn controls it&#039;s stop or telestop squares.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:28:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc4&quot;&gt;&lt;a name=&quot;See also&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:28 --&gt;See also&lt;/h1&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Candidate%20Passed%20Pawn&quot;&gt;Candidate Passed Pawn&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Hidden%20Passed%20Pawn&quot;&gt;Hidden Passed Pawn&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Passed%20Pawn&quot;&gt;Passed Pawn&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Passed%20Pawns%20%28Bitboards%29&quot;&gt;Passed Pawns (Bitboards)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:30:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc5&quot;&gt;&lt;a name=&quot;External Links&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:30 --&gt;External Links&lt;/h1&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://www.chess.com/forum/view/chess-equipment/pawn-power-in-chess-by-hans-kmoch-glossary-of-terms&quot; rel=&quot;nofollow&quot;&gt;Pawn Power in Chess by Hans Kmoch - Glossary of Terms - Chess Forums&lt;/a&gt; - &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/Chess.com&quot; rel=&quot;nofollow&quot;&gt;Chess.com&lt;/a&gt; &lt;!-- ws:start:WikiTextRefRule:14:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Hans%20Kmoch&amp;quot;&amp;gt;Hans Kmoch&amp;lt;/a&amp;gt; (&amp;lt;strong&amp;gt;1959, 1990&amp;lt;/strong&amp;gt;). &amp;lt;em&amp;gt;Pawn Power in Chess&amp;lt;/em&amp;gt;. New York: Dover, 1990. Previous ed.: New York: McKay, 1959. ISBN 0-486-26486-6&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-2&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:14 --&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/Candidates_Tournament&quot; rel=&quot;nofollow&quot;&gt;Candidates Tournament from Wikipedia&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/Jango_Edwards&quot; rel=&quot;nofollow&quot;&gt;Jango Edwards&lt;/a&gt; - Harry Christmas, September 10, 2009, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/Zeche_Carl&quot; rel=&quot;nofollow&quot;&gt;Zeche Carl&lt;/a&gt; &lt;!-- ws:start:WikiTextRefRule:17:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;https://en.wikipedia.org/wiki/Zeche_Carl&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Zeche Carl&amp;lt;/a&amp;gt; is part of &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Arts#IndustrialHeritageTrail&amp;quot;&amp;gt;The Industrial Heritage Trail&amp;lt;/a&amp;gt;&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-3&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:17 --&gt;, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/Essen&quot; rel=&quot;nofollow&quot;&gt;Essen&lt;/a&gt;, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/YouTube&quot; rel=&quot;nofollow&quot;&gt;YouTube&lt;/a&gt; Video&lt;br /&gt;
&lt;!-- ws:start:WikiTextMediaRule:18:&amp;lt;img src=&amp;quot;https://www.wikispaces.com/site/embedthumbnail/youtube/3t8JUmEspUs?h=315&amp;amp;w=560&amp;quot; class=&amp;quot;WikiMedia WikiMediaYoutube&amp;quot; id=&amp;quot;wikitext@@media@@type=&amp;amp;quot;youtube&amp;amp;quot; key=&amp;amp;quot;3t8JUmEspUs&amp;amp;quot;&amp;quot; title=&amp;quot;YouTube Video&amp;quot;height=&amp;quot;315&amp;quot; width=&amp;quot;560&amp;quot;/&amp;gt; --&gt;&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;//www.youtube.com/embed/3t8JUmEspUs&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;!-- ws:end:WikiTextMediaRule:18 --&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:32:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc6&quot;&gt;&lt;a name=&quot;References&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:32 --&gt;References&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextReferencesRule:171:&amp;amp;lt;references /&amp;amp;gt; --&gt;&lt;ol class=&quot;references&quot;&gt;
&lt;li id=&quot;cite_note-1&quot;&gt;&lt;a href=&quot;#cite_ref-1&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.chgs.umn.edu/museum/responses/bak/chess.html&quot; rel=&quot;nofollow&quot;&gt;Chess in the Art of Samuel Bak&lt;/a&gt;, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.chgs.umn.edu/&quot; rel=&quot;nofollow&quot;&gt;Center for Holocaust &amp;amp; Genocide Studies&lt;/a&gt;, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/University_of_Minnesota&quot; rel=&quot;nofollow&quot;&gt;University of Minnesota&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;cite_note-2&quot;&gt;&lt;a href=&quot;#cite_ref-2&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link&quot; href=&quot;/Hans%20Kmoch&quot;&gt;Hans Kmoch&lt;/a&gt; (&lt;strong&gt;1959, 1990&lt;/strong&gt;). &lt;em&gt;Pawn Power in Chess&lt;/em&gt;. New York: Dover, 1990. Previous ed.: New York: McKay, 1959. ISBN 0-486-26486-6&lt;/li&gt;
&lt;li id=&quot;cite_note-3&quot;&gt;&lt;a href=&quot;#cite_ref-3&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/Zeche_Carl&quot; rel=&quot;nofollow&quot;&gt;Zeche Carl&lt;/a&gt; is part of &lt;a class=&quot;wiki_link&quot; href=&quot;/Arts#IndustrialHeritageTrail&quot;&gt;The Industrial Heritage Trail&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;!-- ws:end:WikiTextReferencesRule:171 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:34:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc7&quot;&gt;&lt;a name=&quot;What links here?&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:34 --&gt;What links here?&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextIncludeRule:05:&amp;lt;img src=&amp;quot;https://www.wikispaces.com/site/embedthumbnail/include/backlinks?w=200&amp;amp;h=100&amp;quot; class=&amp;quot;WikiMedia WikiMediaInclude&amp;quot; id=&amp;quot;wikitext@@include@@page=&amp;amp;quot;Candidates (Bitboards)&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;40&amp;amp;quot;&amp;quot; title=&amp;quot;Include backlinks: page=&amp;amp;quot;Candidates (Bitboards)&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;40&amp;amp;quot;&amp;quot; /&amp;gt; --&gt;&lt;div class=&quot;includeBody-Candidates_(Bitboards) includeBody-Candidates%20%28Bitboards%29 includeBody&quot;&gt;&lt;table class=&quot;includeBacklinks&quot;&gt;
  &lt;thead&gt;
    &lt;tr class=&quot;includeBacklinksHeading&quot;&gt;
      &lt;th class=&quot;includeBacklinksPageHeading&quot;&gt;Page&lt;/th&gt;
      &lt;th class=&quot;includeBacklinksDateHeading&quot;&gt;Date Edited&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
    &lt;tbody&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Attack+Spans&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Attack Spans&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 4, 2010&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Backward+Pawns+%28Bitboards%29&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Backward Pawns (Bitboards)&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;May 5, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Candidate+Passed+Pawn&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Candidate Passed Pawn&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 11, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Candidates+%28Bitboards%29&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Candidates (Bitboards)&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 11, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Faker&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Faker&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 11, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Hans+Kmoch&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Hans Kmoch&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 11, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Hidden+Passed+Pawn&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Hidden Passed Pawn&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 11, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Murka&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Murka&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 11, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Passed+Pawns+%28Bitboards%29&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Passed Pawns (Bitboards)&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Aug 23, 2010&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Pawn+Attacks+%28Bitboards%29&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Pawn Attacks (Bitboards)&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 4, 2010&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Pawn+Pattern+and+Properties&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Pawn Pattern and Properties&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 11, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Pawn+Spans&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Pawn Spans&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jul 22, 2010&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/PawnKing&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;PawnKing&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Sep 5, 2014&lt;/td&gt;
    &lt;/tr&gt;
      &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;&lt;!-- ws:end:WikiTextIncludeRule:05 --&gt;&lt;br /&gt;
&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Pattern%20and%20Properties&quot;&gt;Up one Level&lt;/a&gt;&lt;/strong&gt;</description>
          </item>
    <item>
      <title>Checks and Pinned Pieces (Bitboards)</title>
      <link>https://chessprogramming.wikispaces.com/Checks+and+Pinned+Pieces+%28Bitboards%29</link>
      <dc:creator>GerdIsenberg</dc:creator>
      <guid isPermaLink="true">https://chessprogramming.wikispaces.com/Checks+and+Pinned+Pieces+%28Bitboards%29</guid>
      <comments>https://chessprogramming.wikispaces.com/page/messages/Checks+and+Pinned+Pieces+%28Bitboards%29</comments>
      <pubDate>Wed, 14 Aug 2013 19:33:50 GMT</pubDate>
      <description>&lt;!-- ws:start:WikiTextTocRule:27:&amp;lt;img id=&amp;quot;wikitext@@toc@@normal&amp;quot; class=&amp;quot;WikiMedia WikiMediaToc&amp;quot; title=&amp;quot;Table of Contents&amp;quot; src=&amp;quot;/site/embedthumbnail/toc/normal?w=225&amp;amp;h=100&amp;quot;/&amp;gt; --&gt;&lt;div id=&quot;toc&quot;&gt;&lt;h1 class=&quot;nopad&quot;&gt;Table of Contents&lt;/h1&gt;&lt;!-- ws:end:WikiTextTocRule:27 --&gt;&lt;!-- ws:start:WikiTextTocRule:28: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Checks&quot;&gt;Checks&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:28 --&gt;&lt;!-- ws:start:WikiTextTocRule:29: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Checks-On the Fly&quot;&gt;On the Fly&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:29 --&gt;&lt;!-- ws:start:WikiTextTocRule:30: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Checks-By Move&quot;&gt;By Move&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:30 --&gt;&lt;!-- ws:start:WikiTextTocRule:31: --&gt;&lt;div style=&quot;margin-left: 3em;&quot;&gt;&lt;a href=&quot;#Checks-By Move-Direct Check&quot;&gt;Direct Check&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:31 --&gt;&lt;!-- ws:start:WikiTextTocRule:32: --&gt;&lt;div style=&quot;margin-left: 3em;&quot;&gt;&lt;a href=&quot;#Checks-By Move-Discovered Check&quot;&gt;Discovered Check&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:32 --&gt;&lt;!-- ws:start:WikiTextTocRule:33: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Absolute Pins&quot;&gt;Absolute Pins&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:33 --&gt;&lt;!-- ws:start:WikiTextTocRule:34: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Opposite Ray-Directions&quot;&gt;Opposite Ray-Directions&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:34 --&gt;&lt;!-- ws:start:WikiTextTocRule:35: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#See also&quot;&gt;See also&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:35 --&gt;&lt;!-- ws:start:WikiTextTocRule:36: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Forum Posts&quot;&gt;Forum Posts&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:36 --&gt;&lt;!-- ws:start:WikiTextTocRule:37: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#What links here?&quot;&gt;What links here?&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:37 --&gt;&lt;!-- ws:start:WikiTextTocRule:38: --&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:38 --&gt;&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Home&quot;&gt;Home&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Board%20Representation&quot;&gt;Board Representation&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Bitboards&quot;&gt;Bitboards&lt;/a&gt; * Checks and Pinned Pieces&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
This is about whether the &lt;a class=&quot;wiki_link&quot; href=&quot;/King&quot;&gt;king&lt;/a&gt; is in &lt;a class=&quot;wiki_link&quot; href=&quot;/Check&quot;&gt;check&lt;/a&gt;. If so, one likely uses a specialized check evasion &lt;a class=&quot;wiki_link&quot; href=&quot;/Move%20Generation&quot;&gt;move generator&lt;/a&gt;. One may also trigger search &lt;a class=&quot;wiki_link&quot; href=&quot;/Extensions&quot;&gt;extensions&lt;/a&gt; - based on the king is in check - or based on the check evasion move generator only reports one valid move. Related to determining &lt;a class=&quot;wiki_link&quot; href=&quot;/Discovered%20Check&quot;&gt;discovered check&lt;/a&gt; is to look for &lt;a class=&quot;wiki_link&quot; href=&quot;/Pin#AbsolutePin&quot;&gt;absolute pins&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:7:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc0&quot;&gt;&lt;a name=&quot;Checks&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:7 --&gt;Checks&lt;/h1&gt;
 Whether the king is in check may be determined on the fly by looking up attacks to the king square - or based on the last move made by the other, probably checking side. Another option is to determine check giving moves already at generation time, and to flag moves accordantly.&lt;br /&gt;
&lt;!-- ws:start:WikiTextAnchorRule:39:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@ChecksOnTheFly&amp;quot; title=&amp;quot;Anchor: ChecksOnTheFly&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;ChecksOnTheFly&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:39 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:9:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc1&quot;&gt;&lt;a name=&quot;Checks-On the Fly&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:9 --&gt;On the Fly&lt;/h2&gt;
 Whether a king is in check can be determined by the attacked-routine mentioned in &lt;a class=&quot;wiki_link&quot; href=&quot;/Square%20Attacked%20By#AnyAttackBySide&quot;&gt;Square Attacked By&lt;/a&gt;. We pass the square of the king and opposite &lt;a class=&quot;wiki_link&quot; href=&quot;/Color&quot;&gt;color&lt;/a&gt; for the potential attackers.&lt;br /&gt;
&lt;br /&gt;
If one needs the set of attackers, either empty, single or double populated - one likely better relies on a specialized &lt;a class=&quot;wiki_link&quot; href=&quot;/Square%20Attacked%20By#ByAllPieces&quot;&gt;attacksTo-routine&lt;/a&gt; for each side, e.g. as member of the &lt;a class=&quot;wiki_link&quot; href=&quot;/Bitboard%20Board-Definition&quot;&gt;standard bitboard board-definition&lt;/a&gt;:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:0:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;U64 CBoard::attacksToKing(enumSquare squareOfKing, enumColor colorOfKing) {&amp;lt;br/&amp;gt;   U64 opPawns, opKnights, opRQ, opBQ;&amp;lt;br/&amp;gt;   opPawns     = pieceBB[nBlackPawn   - colorOfKing];&amp;lt;br/&amp;gt;   opKnights   = pieceBB[nBlackKnight - colorOfKing];&amp;lt;br/&amp;gt;   opRQ = opBQ = pieceBB[nBlackQueen  - colorOfKing];&amp;lt;br/&amp;gt;   opRQ       |= pieceBB[nBlackRook   - colorOfKing];&amp;lt;br/&amp;gt;   opBQ       |= pieceBB[nBlackBishop - colorOfKing];&amp;lt;br/&amp;gt;   return (arrPawnAttacks[colorOfKing][squareOfKing] &amp;amp;amp; opPawns)&amp;lt;br/&amp;gt;        | (arrKnightAttacks[squareOfKing]            &amp;amp;amp; opKnights)&amp;lt;br/&amp;gt;        | (bishopAttacks (occupiedBB, squareOfKing)  &amp;amp;amp; opBQ)&amp;lt;br/&amp;gt;        | (rookAttacks   (occupiedBB, squareOfKing)  &amp;amp;amp; opRQ)&amp;lt;br/&amp;gt;        ;&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;U64 CBoard&lt;span class=&quot;sy4&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;attacksToKing&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;enumSquare squareOfKing, enumColor colorOfKing&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   U64 opPawns, opKnights, opRQ, opBQ&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   opPawns     &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; pieceBB&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;nBlackPawn   &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; colorOfKing&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   opKnights   &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; pieceBB&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;nBlackKnight &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; colorOfKing&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   opRQ &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; opBQ &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; pieceBB&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;nBlackQueen  &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; colorOfKing&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   opRQ       &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; pieceBB&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;nBlackRook   &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; colorOfKing&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   opBQ       &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; pieceBB&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;nBlackBishop &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; colorOfKing&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;arrPawnAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;colorOfKing&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;squareOfKing&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; opPawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;arrKnightAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;squareOfKing&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;            &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; opKnights&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bishopAttacks &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;occupiedBB, squareOfKing&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; opBQ&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rookAttacks   &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;occupiedBB, squareOfKing&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; opRQ&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:0 --&gt;&lt;!-- ws:start:WikiTextHeadingRule:11:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc2&quot;&gt;&lt;a name=&quot;Checks-By Move&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:11 --&gt;By Move&lt;/h2&gt;
 Another idea is to determine the check inside the search-routine by the last &lt;a class=&quot;wiki_link&quot; href=&quot;/Moves&quot;&gt;move&lt;/a&gt; done by the opponent. It might be a direct or discovered &lt;a class=&quot;wiki_link&quot; href=&quot;/Check&quot;&gt;check&lt;/a&gt; - or in case of &lt;a class=&quot;wiki_link&quot; href=&quot;/Double%20Check&quot;&gt;double check&lt;/a&gt;, both. With bitboards the possible savings to determine checks by last move seems negligible - and one probably better relies on the branch-less &lt;a class=&quot;wiki_link&quot; href=&quot;/Checks%20and%20Pinned%20Pieces%20%28Bitboards%29#ChecksOnTheFly&quot;&gt;on the fly solution&lt;/a&gt;, since we may reuse the rook-wise and bishop-wise attacks for other purposes - like determining absolute pinned pieces, kingsafety-evaluation, and/or whether the opponent side threatens checks or discovered checks.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:13:&amp;lt;h3&amp;gt; --&gt;&lt;h3 id=&quot;toc3&quot;&gt;&lt;a name=&quot;Checks-By Move-Direct Check&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:13 --&gt;Direct Check&lt;/h3&gt;
 For the direct check we may use the routine mentioned in &lt;a class=&quot;wiki_link&quot; href=&quot;/Square%20Attacked%20By#AttackedByPieceOnSquare&quot;&gt;Square Attacked By&lt;/a&gt;:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:1:
&amp;lt;pre class=&amp;quot;text&amp;quot;&amp;gt;if ( isAttacked(squareOfKing, move.to, move.piece(), occupiedBB) ) -&amp;amp;gt; direct check&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.text  {font-family:monospace;}
.text .imp {font-weight: bold; color: red;}
.text span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;text&quot;&gt;if ( isAttacked(squareOfKing, move.to, move.piece(), occupiedBB) ) -&amp;gt; direct check&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:1 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:15:&amp;lt;h3&amp;gt; --&gt;&lt;h3 id=&quot;toc4&quot;&gt;&lt;a name=&quot;Checks-By Move-Discovered Check&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:15 --&gt;Discovered Check&lt;/h3&gt;
 One solution is to determine the &lt;a class=&quot;wiki_link&quot; href=&quot;/Direction&quot;&gt;direction&lt;/a&gt; between the &lt;a class=&quot;wiki_link&quot; href=&quot;/Origin%20Square&quot;&gt;from-square&lt;/a&gt; and the king square (e.g. by 0x88 difference). If both squares share a common line, one calls an appropriate sliding ray- or line-attack getter with king square and occupancy, to look whether this set intersects the possible opponing sliders of that ray. One also has to prove, whether a possible true result was not caused by a direct check of a sliding capture.&lt;br /&gt;
&lt;!-- ws:start:WikiTextAnchorRule:40:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@AbsolutePins&amp;quot; title=&amp;quot;Anchor: AbsolutePins&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;AbsolutePins&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:40 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:17:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc5&quot;&gt;&lt;a name=&quot;Absolute Pins&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:17 --&gt;Absolute Pins&lt;/h1&gt;
 To detect &lt;a class=&quot;wiki_link&quot; href=&quot;/Pin#AbsolutePin&quot;&gt;absolute pins&lt;/a&gt; is necessary for &lt;a class=&quot;wiki_link&quot; href=&quot;/Legal%20Move&quot;&gt;legal&lt;/a&gt; &lt;a class=&quot;wiki_link&quot; href=&quot;/Move%20Generation&quot;&gt;move generation&lt;/a&gt; and may be considered in &lt;a class=&quot;wiki_link&quot; href=&quot;/Evaluation&quot;&gt;evaluation&lt;/a&gt;. While there are different approaches, the most common for programs based on single sliding piece attacks rather than direction wise set-wise attack getter, relies on the &lt;a class=&quot;wiki_link&quot; href=&quot;/X-ray%20Attacks%20%28Bitboards%29#ModifyingOccupancy&quot;&gt;xrayRookAttacks&lt;/a&gt; or &lt;a class=&quot;wiki_link&quot; href=&quot;/X-ray%20Attacks%20%28Bitboards%29#ModifyingOccupancy&quot;&gt;xrayBishopAttacks&lt;/a&gt; routines - called with square of own king and own pieces as blockers. An &lt;a class=&quot;wiki_link&quot; href=&quot;/Square%20Attacked%20By#Obstructed&quot;&gt;in-between lookup&lt;/a&gt; determines the set of pinned pieces while &lt;a class=&quot;wiki_link&quot; href=&quot;/Bitboard%20Serialization&quot;&gt;traversing&lt;/a&gt; the pinning pieces.&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:2:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;pinned = 0;&amp;lt;br/&amp;gt;pinner = xrayRookAttacks(occupiedBB, ownPieces, squareOfKing) &amp;amp;amp; opRQ;&amp;lt;br/&amp;gt;while ( pinner ) {&amp;lt;br/&amp;gt;   int sq  = bitScanForward(pinner);&amp;lt;br/&amp;gt;   pinned |= obstructed(sq, squareOfKing) &amp;amp;amp; ownPieces;&amp;lt;br/&amp;gt;   pinner &amp;amp;amp;= pinner - 1;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;pinner = xrayBishopAttacks(occupiedBB, ownPieces, squareOfKing) &amp;amp;amp; opBQ;&amp;lt;br/&amp;gt;while ( pinner ) {&amp;lt;br/&amp;gt;   int sq  = bitScanForward(pinner);&amp;lt;br/&amp;gt;   pinned |= obstructed(sq, squareOfKing) &amp;amp;amp; ownPieces;&amp;lt;br/&amp;gt;   pinner &amp;amp;amp;= pinner - 1;&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;pinned &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
pinner &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; xrayRookAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;occupiedBB, ownPieces, squareOfKing&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; opRQ&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; pinner &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; sq  &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bitScanForward&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pinner&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   pinned &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; obstructed&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq, squareOfKing&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; ownPieces&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   pinner &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; pinner &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
pinner &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; xrayBishopAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;occupiedBB, ownPieces, squareOfKing&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; opBQ&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; pinner &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; sq  &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bitScanForward&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pinner&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   pinned &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; obstructed&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sq, squareOfKing&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; ownPieces&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   pinner &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; pinner &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:2 --&gt;&lt;!-- ws:start:WikiTextAnchorRule:41:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@OppositeRay&amp;quot; title=&amp;quot;Anchor: OppositeRay&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;OppositeRay&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:41 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:19:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc6&quot;&gt;&lt;a name=&quot;Opposite Ray-Directions&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:19 --&gt;Opposite Ray-Directions&lt;/h1&gt;
Another idea to determine absolute pins as well as distant check block-targets, or possible discovered check origins, is to apply disjoint direction-wise attacks, as demonstrated in the &lt;a class=&quot;wiki_link&quot; href=&quot;/DirGolem&quot;&gt;DirGolem&lt;/a&gt; proposal, where this technique is used for all eight ray-dirctions. The intersection of direction attacks of potential pinning sliding pieces with the opposite ray-direction attacks of the king treated as sliding super piece, gains enough information if further intersected by empty squares, own, or opponent pieces. For instance as illustrated with a black rook and white king on the same rank, with no, one and two pieces inbetween:&lt;br /&gt;
&lt;br /&gt;
No obstruction, king in check. In-between intersection consists of empty squares as target set to block the distant check:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:3:
&amp;lt;pre class=&amp;quot;text&amp;quot;&amp;gt;     . r . . . . K .     &amp;lt;br/&amp;gt;r-&amp;amp;gt;  . . 1 1 1 1 1 .      &amp;lt;br/&amp;gt;&amp;amp;lt;-K  . 1 1 1 1 1 . .&amp;lt;br/&amp;gt;&amp;amp;amp;    . . 1 1 1 1 . .  &amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.text  {font-family:monospace;}
.text .imp {font-weight: bold; color: red;}
.text span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;text&quot;&gt;     . r . . . . K .     
r-&amp;gt;  . . 1 1 1 1 1 .      
&amp;lt;-K  . 1 1 1 1 1 . .
&amp;amp;    . . 1 1 1 1 . .  &lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:3 --&gt;One piece in-between. Intersection leaves a pinned piece if of king color, otherwise a possible discovered checker:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:4:
&amp;lt;pre class=&amp;quot;text&amp;quot;&amp;gt;     . r . . x . K .  &amp;lt;br/&amp;gt;r-&amp;amp;gt;  . . 1 1 1 . . .             &amp;lt;br/&amp;gt;&amp;amp;lt;-K  . . . . 1 1 . .&amp;lt;br/&amp;gt;&amp;amp;amp;    . . . . 1 . . .&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.text  {font-family:monospace;}
.text .imp {font-weight: bold; color: red;}
.text span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;text&quot;&gt;     . r . . x . K .  
r-&amp;gt;  . . 1 1 1 . . .             
&amp;lt;-K  . . . . 1 1 . .
&amp;amp;    . . . . 1 . . .&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:4 --&gt;Two (or more) pieces in-between. Intersection is null:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:5:
&amp;lt;pre class=&amp;quot;text&amp;quot;&amp;gt;      . r . x x . K .  &amp;lt;br/&amp;gt;r-&amp;amp;gt;   . . 1 1 . . . .&amp;lt;br/&amp;gt;&amp;amp;lt;-K   . . . . 1 1 . .&amp;lt;br/&amp;gt;&amp;amp;amp;     . . . . . . . .   &amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.text  {font-family:monospace;}
.text .imp {font-weight: bold; color: red;}
.text span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;text&quot;&gt;      . r . x x . K .  
r-&amp;gt;   . . 1 1 . . . .
&amp;lt;-K   . . . . 1 1 . .
&amp;amp;     . . . . . . . .   &lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:5 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:21:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc7&quot;&gt;&lt;a name=&quot;See also&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:21 --&gt;See also&lt;/h1&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Check&quot;&gt;Check&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/DirGolem&quot;&gt;DirGolem&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Discovered%20Check&quot;&gt;Discovered Check&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Double%20Check&quot;&gt;Double Check&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Pin&quot;&gt;Pin&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:23:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc8&quot;&gt;&lt;a name=&quot;Forum Posts&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:23 --&gt;Forum Posts&lt;/h1&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=334869&quot; rel=&quot;nofollow&quot;&gt;Fast check detection in bitboard engine&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Jean-Francois%20Romang&quot;&gt;Jean-Francois Romang&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, December 10, 2003&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.open-aurec.com/wbforum/viewtopic.php?f=4&amp;amp;t=6064&amp;amp;p=29127&quot; rel=&quot;nofollow&quot;&gt;Bitboards and inCheck&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Andreas%20Guettinger&quot;&gt;Andreas Guettinger&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Computer%20Chess%20Forums&quot;&gt;Winboard Forum&lt;/a&gt;, January 03, 2007&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=22550&quot; rel=&quot;nofollow&quot;&gt;Bitboard of Pinned Pieces&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Grant%20Osborne&quot;&gt;Grant Osborne&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, July 24, 2008&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=41351&quot; rel=&quot;nofollow&quot;&gt;Check detection and move generation using bitboards&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Lasse%20Hansen&quot;&gt;Lasse Hansen&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, December 06, 2011&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:25:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc9&quot;&gt;&lt;a name=&quot;What links here?&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:25 --&gt;What links here?&lt;/h1&gt;
&lt;!-- ws:start:WikiTextIncludeRule:06:&amp;lt;img src=&amp;quot;https://www.wikispaces.com/site/embedthumbnail/include/backlinks?w=200&amp;amp;h=100&amp;quot; class=&amp;quot;WikiMedia WikiMediaInclude&amp;quot; id=&amp;quot;wikitext@@include@@page=&amp;amp;quot;Checks and Pinned Pieces (Bitboards)&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;40&amp;amp;quot;&amp;quot; title=&amp;quot;Include backlinks: page=&amp;amp;quot;Checks and Pinned Pieces (Bitboards)&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;40&amp;amp;quot;&amp;quot; /&amp;gt; --&gt;&lt;div class=&quot;includeBody-Checks_and_Pinned_Pieces_(Bitboards) includeBody-Checks%20and%20Pinned%20Pieces%20%28Bitboards%29 includeBody&quot;&gt;&lt;table class=&quot;includeBacklinks&quot;&gt;
  &lt;thead&gt;
    &lt;tr class=&quot;includeBacklinksHeading&quot;&gt;
      &lt;th class=&quot;includeBacklinksPageHeading&quot;&gt;Page&lt;/th&gt;
      &lt;th class=&quot;includeBacklinksDateHeading&quot;&gt;Date Edited&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
    &lt;tbody&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Andreas+Guettinger&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Andreas Guettinger&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Aug 14, 2013&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Bitboards&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Bitboards&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 14, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Check&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Check&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Feb 1, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Checks+and+Pinned+Pieces+%28Bitboards%29&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Checks and Pinned Pieces (Bitboards)&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Aug 14, 2013&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/DirGolem&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;DirGolem&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jun 5, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Discovered+Check&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Discovered Check&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Feb 1, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Double+Check&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Double Check&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Apr 4, 2013&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Intersection+Squares&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Intersection Squares&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Oct 4, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Mate+at+a+Glance&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Mate at a Glance&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Sep 24, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Pin&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Pin&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 7, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Square+Attacked+By&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Square Attacked By&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 20, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Tactics&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Tactics&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 12, 2018&lt;/td&gt;
    &lt;/tr&gt;
      &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;&lt;!-- ws:end:WikiTextIncludeRule:06 --&gt;&lt;br /&gt;
&lt;a class=&quot;wiki_link&quot; href=&quot;/Bitboards&quot;&gt;Up one Level&lt;/a&gt;</description>
          </item>
    <item>
      <title>Classical Approach</title>
      <link>https://chessprogramming.wikispaces.com/Classical+Approach</link>
      <dc:creator>GerdIsenberg</dc:creator>
      <guid isPermaLink="true">https://chessprogramming.wikispaces.com/Classical+Approach</guid>
      <comments>https://chessprogramming.wikispaces.com/page/messages/Classical+Approach</comments>
      <pubDate>Sun, 28 Jan 2018 18:03:50 GMT</pubDate>
      <description>&lt;!-- ws:start:WikiTextTocRule:64:&amp;lt;img id=&amp;quot;wikitext@@toc@@normal&amp;quot; class=&amp;quot;WikiMedia WikiMediaToc&amp;quot; title=&amp;quot;Table of Contents&amp;quot; src=&amp;quot;/site/embedthumbnail/toc/normal?w=225&amp;amp;h=100&amp;quot;/&amp;gt; --&gt;&lt;div id=&quot;toc&quot;&gt;&lt;h1 class=&quot;nopad&quot;&gt;Table of Contents&lt;/h1&gt;&lt;!-- ws:end:WikiTextTocRule:64 --&gt;&lt;!-- ws:start:WikiTextTocRule:65: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Ray Attacks&quot;&gt;Ray Attacks&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:65 --&gt;&lt;!-- ws:start:WikiTextTocRule:66: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Ray Attacks-Positive Rays&quot;&gt;Positive Rays&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:66 --&gt;&lt;!-- ws:start:WikiTextTocRule:67: --&gt;&lt;div style=&quot;margin-left: 3em;&quot;&gt;&lt;a href=&quot;#Ray Attacks-Positive Rays-Conditional&quot;&gt;Conditional&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:67 --&gt;&lt;!-- ws:start:WikiTextTocRule:68: --&gt;&lt;div style=&quot;margin-left: 3em;&quot;&gt;&lt;a href=&quot;#Ray Attacks-Positive Rays-Branchless&quot;&gt;Branchless&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:68 --&gt;&lt;!-- ws:start:WikiTextTocRule:69: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Ray Attacks-Negative Rays&quot;&gt;Negative Rays&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:69 --&gt;&lt;!-- ws:start:WikiTextTocRule:70: --&gt;&lt;div style=&quot;margin-left: 3em;&quot;&gt;&lt;a href=&quot;#Ray Attacks-Negative Rays-Conditional&quot;&gt;Conditional&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:70 --&gt;&lt;!-- ws:start:WikiTextTocRule:71: --&gt;&lt;div style=&quot;margin-left: 3em;&quot;&gt;&lt;a href=&quot;#Ray Attacks-Negative Rays-Branchless&quot;&gt;Branchless&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:71 --&gt;&lt;!-- ws:start:WikiTextTocRule:72: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Ray Attacks-Generalized&quot;&gt;Generalized&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:72 --&gt;&lt;!-- ws:start:WikiTextTocRule:73: --&gt;&lt;div style=&quot;margin-left: 3em;&quot;&gt;&lt;a href=&quot;#Ray Attacks-Generalized-Conditional&quot;&gt;Conditional&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:73 --&gt;&lt;!-- ws:start:WikiTextTocRule:74: --&gt;&lt;div style=&quot;margin-left: 3em;&quot;&gt;&lt;a href=&quot;#Ray Attacks-Generalized-Branchless&quot;&gt;Branchless&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:74 --&gt;&lt;!-- ws:start:WikiTextTocRule:75: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Ray Attacks-Zero Count&quot;&gt;Zero Count&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:75 --&gt;&lt;!-- ws:start:WikiTextTocRule:76: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Line Attacks&quot;&gt;Line Attacks&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:76 --&gt;&lt;!-- ws:start:WikiTextTocRule:77: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Piece Attacks&quot;&gt;Piece Attacks&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:77 --&gt;&lt;!-- ws:start:WikiTextTocRule:78: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Piece Attacks-Union of Line Attacks&quot;&gt;Union of Line Attacks&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:78 --&gt;&lt;!-- ws:start:WikiTextTocRule:79: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Piece Attacks-In one Run&quot;&gt;In one Run&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:79 --&gt;&lt;!-- ws:start:WikiTextTocRule:80: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#See also&quot;&gt;See also&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:80 --&gt;&lt;!-- ws:start:WikiTextTocRule:81: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Publications&quot;&gt;Publications&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:81 --&gt;&lt;!-- ws:start:WikiTextTocRule:82: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Forum Posts&quot;&gt;Forum Posts&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:82 --&gt;&lt;!-- ws:start:WikiTextTocRule:83: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#References&quot;&gt;References&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:83 --&gt;&lt;!-- ws:start:WikiTextTocRule:84: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#What links here?&quot;&gt;What links here?&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:84 --&gt;&lt;!-- ws:start:WikiTextTocRule:85: --&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:85 --&gt;&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Home&quot;&gt;Home&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Board%20Representation&quot;&gt;Board Representation&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Bitboards&quot;&gt;Bitboards&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Sliding%20Piece%20Attacks&quot;&gt;Sliding Piece Attacks&lt;/a&gt; * Classical Approach&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
The classical approach to generate &lt;a class=&quot;wiki_link&quot; href=&quot;/Sliding%20Pieces&quot;&gt;sliding piece&lt;/a&gt; attacks was probably first used by &lt;a class=&quot;wiki_link&quot; href=&quot;/Chess%20%28Program%29&quot;&gt;Chess&lt;/a&gt; and &lt;a class=&quot;wiki_link&quot; href=&quot;/Kaissa&quot;&gt;Kaissa&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextIncludeRule:014:&amp;lt;img src=&amp;quot;https://www.wikispaces.com/site/embedthumbnail/include/page?w=200&amp;amp;h=100&amp;quot; class=&amp;quot;WikiMedia WikiMediaInclude&amp;quot; id=&amp;quot;wikitext@@include@@page=&amp;amp;quot;MappingHint&amp;amp;quot;&amp;quot; title=&amp;quot;Include page: page=&amp;amp;quot;MappingHint&amp;amp;quot;&amp;quot; /&amp;gt; --&gt;

&lt;table class=&quot;wiki_table&quot;&gt;
    &lt;tr&gt;
        &lt;td&gt;&lt;a href=&quot;/Square%20Mapping%20Considerations&quot;&gt;&lt;img src=&quot;/file/view/mapping.JPG/93134172/mapping.JPG&quot; alt=&quot;mapping.JPG&quot; title=&quot;mapping.JPG&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;&lt;em&gt;Code samples and bitboard diagrams rely on &lt;a class=&quot;wiki_link&quot; href=&quot;/Square%20Mapping%20Considerations#LittleEndianRankFileMapping&quot;&gt;Little endian file and rank mapping&lt;/a&gt;&lt;/em&gt;.&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
&lt;/table&gt;

&lt;!-- ws:end:WikiTextIncludeRule:014 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:24:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc0&quot;&gt;&lt;a name=&quot;Ray Attacks&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:24 --&gt;Ray Attacks&lt;/h1&gt;
 The classical approach works ray-wise and uses pre-calculated &lt;a class=&quot;wiki_link&quot; href=&quot;/On%20an%20empty%20Board#RayAttacks&quot;&gt;ray-attacks&lt;/a&gt; for each of the eight &lt;a class=&quot;wiki_link&quot; href=&quot;/Rays#RayDirections&quot;&gt;ray-directions&lt;/a&gt; and each of the 64 &lt;a class=&quot;wiki_link&quot; href=&quot;/Squares&quot;&gt;squares&lt;/a&gt;. It has to distinguish between &lt;a class=&quot;wiki_link&quot; href=&quot;/On%20an%20empty%20Board#PositiveRays&quot;&gt;positive&lt;/a&gt; and &lt;a class=&quot;wiki_link&quot; href=&quot;/On%20an%20empty%20Board#NegativeRays&quot;&gt;negative&lt;/a&gt; directions, because it has to &lt;a class=&quot;wiki_link&quot; href=&quot;/BitScan&quot;&gt;bitscan&lt;/a&gt; the ray-attack intersection with the &lt;a class=&quot;wiki_link&quot; href=&quot;/Occupancy&quot;&gt;occupancy&lt;/a&gt; in different orders. That usually don&#039;t cares for getting line- or piece attacks, since one likely unrolls all directions needed for a particular line or piece - otherwise one may rely on a &lt;a class=&quot;wiki_link&quot; href=&quot;/BitScan#GeneralizedBitscan&quot;&gt;generalized bitscan&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;We rely on the compass rose to enumerate ray-directions:&lt;/em&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:0:
&amp;lt;pre class=&amp;quot;text&amp;quot;&amp;gt;  noWe         nort         noEa&amp;lt;br/&amp;gt;          +7    +8    +9&amp;lt;br/&amp;gt;              \  |  /&amp;lt;br/&amp;gt;  west    -1 &amp;amp;lt;-  0 -&amp;amp;gt; +1    east&amp;lt;br/&amp;gt;              /  |  \&amp;lt;br/&amp;gt;          -9    -8    -7&amp;lt;br/&amp;gt;  soWe         sout         soEa&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.text  {font-family:monospace;}
.text .imp {font-weight: bold; color: red;}
.text span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;text&quot;&gt;  noWe         nort         noEa
          +7    +8    +9
              \  |  /
  west    -1 &amp;lt;-  0 -&amp;gt; +1    east
              /  |  \
          -9    -8    -7
  soWe         sout         soEa&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:0 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:26:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc1&quot;&gt;&lt;a name=&quot;Ray Attacks-Positive Rays&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:26 --&gt;Positive Rays&lt;/h2&gt;
 Attacks of Positive Ray-Directions:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:1:
&amp;lt;pre class=&amp;quot;text&amp;quot;&amp;gt;East (+1)           North (+8)           NorthEast (+9)      NorthWest (+7)&amp;lt;br/&amp;gt;. . . . . . . .     . . . 1 . . . .      . . . . . . . 1     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . 1 . . . .      . . . . . . 1 .     1 . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . 1 . . . .      . . . . . 1 . .     . 1 . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . 1 . . . .      . . . . 1 . . .     . . 1 . . . . .&amp;lt;br/&amp;gt;. . . R 1 1 1 1     . . . R . . . .      . . . B . . . .     . . . B . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .      . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .      . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .      . . . . . . . .     . . . . . . . .&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.text  {font-family:monospace;}
.text .imp {font-weight: bold; color: red;}
.text span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;text&quot;&gt;East (+1)           North (+8)           NorthEast (+9)      NorthWest (+7)
. . . . . . . .     . . . 1 . . . .      . . . . . . . 1     . . . . . . . .
. . . . . . . .     . . . 1 . . . .      . . . . . . 1 .     1 . . . . . . .
. . . . . . . .     . . . 1 . . . .      . . . . . 1 . .     . 1 . . . . . .
. . . . . . . .     . . . 1 . . . .      . . . . 1 . . .     . . 1 . . . . .
. . . R 1 1 1 1     . . . R . . . .      . . . B . . . .     . . . B . . . .
. . . . . . . .     . . . . . . . .      . . . . . . . .     . . . . . . . .
. . . . . . . .     . . . . . . . .      . . . . . . . .     . . . . . . . .
. . . . . . . .     . . . . . . . .      . . . . . . . .     . . . . . . . .&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:1 --&gt;&lt;!-- ws:start:WikiTextHeadingRule:28:&amp;lt;h3&amp;gt; --&gt;&lt;h3 id=&quot;toc2&quot;&gt;&lt;a name=&quot;Ray Attacks-Positive Rays-Conditional&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:28 --&gt;Conditional&lt;/h3&gt;
 The first step gets the &lt;a class=&quot;wiki_link&quot; href=&quot;/On%20an%20empty%20Board#RayAttacks&quot;&gt;ray-attack&lt;/a&gt; on the otherwise empty board. Potential blockers are then determined by intersection with the &lt;a class=&quot;wiki_link&quot; href=&quot;/Occupancy&quot;&gt;occupancy&lt;/a&gt;, the set of all pieces. The first blocker, if any, is the least significant one-bit of the intersection. A &lt;a class=&quot;wiki_link&quot; href=&quot;/BitScan#Bitscanforward&quot;&gt;bitscan forward&lt;/a&gt; determines the square of the first blocker, to reset it&#039;s ray-bits from the attack set. For instance a bishop on g2:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:2:
&amp;lt;pre class=&amp;quot;text&amp;quot;&amp;gt;occupied         &amp;amp;amp;  NorthWest(g2)       {a8, c6}&amp;lt;br/&amp;gt;1 . 1 1 1 1 1 1     1 . . . . . . .     1 . . . . . . .&amp;lt;br/&amp;gt;1 . 1 1 1 1 1 1     . 1 . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. 1 1 . . . . .     . . 1 . . . . .     . . 1 . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . 1 . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .  &amp;amp;amp;  . . . . 1 . . .  =  . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . 1 .     . . . . . 1 . .     . . . . . . . .&amp;lt;br/&amp;gt;1 1 1 1 1 1 B 1     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;1 1 1 1 1 . 1 1     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;                    xor NorthWest(c6 = bitscanForward{a8,c6}&amp;lt;br/&amp;gt;                    1 . . . . . . .&amp;lt;br/&amp;gt;                    . 1 . . . . . .&amp;lt;br/&amp;gt;                    . . . . . . . .&amp;lt;br/&amp;gt;                    . . . . . . . .&amp;lt;br/&amp;gt;                    . . . . . . . .&amp;lt;br/&amp;gt;                    . . . . . . . .&amp;lt;br/&amp;gt;                    . . . . . . . .&amp;lt;br/&amp;gt;                    . . . . . . . .&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;                    =  final northWest Attacks&amp;lt;br/&amp;gt;                    . . . . . . . .&amp;lt;br/&amp;gt;                    . . . . . . . .&amp;lt;br/&amp;gt;                    . . 1 . . . . .&amp;lt;br/&amp;gt;                    . . . 1 . . . .&amp;lt;br/&amp;gt;                    . . . . 1 . . .&amp;lt;br/&amp;gt;                    . . . . . 1 . .&amp;lt;br/&amp;gt;                    . . . . . . . .&amp;lt;br/&amp;gt;                    . . . . . . . .&amp;lt;br/&amp;gt;&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.text  {font-family:monospace;}
.text .imp {font-weight: bold; color: red;}
.text span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;text&quot;&gt;occupied         &amp;amp;  NorthWest(g2)       {a8, c6}
1 . 1 1 1 1 1 1     1 . . . . . . .     1 . . . . . . .
1 . 1 1 1 1 1 1     . 1 . . . . . .     . . . . . . . .
. 1 1 . . . . .     . . 1 . . . . .     . . 1 . . . . .
. . . . . . . .     . . . 1 . . . .     . . . . . . . .
. . . . . . . .  &amp;amp;  . . . . 1 . . .  =  . . . . . . . .
. . . . . . 1 .     . . . . . 1 . .     . . . . . . . .
1 1 1 1 1 1 B 1     . . . . . . . .     . . . . . . . .
1 1 1 1 1 . 1 1     . . . . . . . .     . . . . . . . .
&amp;nbsp;
                    xor NorthWest(c6 = bitscanForward{a8,c6}
                    1 . . . . . . .
                    . 1 . . . . . .
                    . . . . . . . .
                    . . . . . . . .
                    . . . . . . . .
                    . . . . . . . .
                    . . . . . . . .
                    . . . . . . . .
&amp;nbsp;
                    =  final northWest Attacks
                    . . . . . . . .
                    . . . . . . . .
                    . . 1 . . . . .
                    . . . 1 . . . .
                    . . . . 1 . . .
                    . . . . . 1 . .
                    . . . . . . . .
                    . . . . . . . .
&amp;nbsp;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:2 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:3:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;U64 rayAttacks[8][64];&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;U64 getPositiveRayAttacks(U64 occupied, enumDir dir8, enumSquare square) {&amp;lt;br/&amp;gt;   U64 attacks = rayAttacks[dir8][square];&amp;lt;br/&amp;gt;   U64 blocker = attacks &amp;amp;amp; occupied;&amp;lt;br/&amp;gt;   if ( blocker ) {&amp;lt;br/&amp;gt;      square = bitScanForward(blocker);&amp;lt;br/&amp;gt;      attacks ^= rayAttacks[dir8][square];&amp;lt;br/&amp;gt;   }&amp;lt;br/&amp;gt;   return attacks;&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;U64 rayAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;64&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
U64 getPositiveRayAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 occupied, enumDir dir8, enumSquare square&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   U64 attacks &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rayAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;dir8&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;square&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   U64 blocker &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; attacks &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; occupied&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; blocker &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
      square &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bitScanForward&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;blocker&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
      attacks &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rayAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;dir8&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;square&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; attacks&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:3 --&gt;&lt;!-- ws:start:WikiTextAnchorRule:86:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@Branchless&amp;quot; title=&amp;quot;Anchor: Branchless&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;Branchless&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:86 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:30:&amp;lt;h3&amp;gt; --&gt;&lt;h3 id=&quot;toc3&quot;&gt;&lt;a name=&quot;Ray Attacks-Positive Rays-Branchless&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:30 --&gt;Branchless&lt;/h3&gt;
 Branches are evil with todays super pipelined processors. Even if branch-prediction heuristics become smarter, &lt;a class=&quot;wiki_link&quot; href=&quot;/Avoiding%20Branches&quot;&gt;branch-less&lt;/a&gt; solutions allow better scheduling and parallel speedup of independent instruction chains, like processing several directions.&lt;br /&gt;
&lt;br /&gt;
Considering todays fast &lt;a class=&quot;wiki_link&quot; href=&quot;/x86-64&quot;&gt;x86-64&lt;/a&gt; &lt;a class=&quot;wiki_link&quot; href=&quot;/x86-64#gpinstructions&quot;&gt;bsf-instruction&lt;/a&gt; of &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/Intel_Core_2&quot; rel=&quot;nofollow&quot;&gt;Core 2&lt;/a&gt; or &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/AMD_K10&quot; rel=&quot;nofollow&quot;&gt;K10&lt;/a&gt;, a branch-less solution may be worth a try. Due to the fact the &lt;a class=&quot;wiki_link&quot; href=&quot;/Occupancy&quot;&gt;occupancy&lt;/a&gt; of &lt;a class=&quot;wiki_link&quot; href=&quot;/First%20Rank%20Attacks#TheOuterSquares&quot;&gt;the outer squares&lt;/a&gt; doesn&#039;t affect the attack set, setting the most significant bit ensures to scan at least an outer square, which would address an empty ray set anyway, therefor not affecting the final result with no blocker or a most outer one.&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:4:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;U64 getRayAttacks(U64 occupied, enumDir dir8, unsigned long square) {&amp;lt;br/&amp;gt;   U64 attacks    = rayAttacks[dir8][square];&amp;lt;br/&amp;gt;   U64 blocker    =  attacks &amp;amp;amp; occupied;&amp;lt;br/&amp;gt;   _BitScanForward64 (&amp;amp;amp;square, blocker | C64(0x8000000000000000));&amp;lt;br/&amp;gt;   return attacks ^ rayAttacks[dir8][square];&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;U64 getRayAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 occupied, enumDir dir8, &lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt; square&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   U64 attacks    &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rayAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;dir8&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;square&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   U64 blocker    &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;  attacks &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; occupied&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   _BitScanForward64 &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;square, blocker &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; C64&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu12&quot;&gt;0x8000000000000000&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; attacks &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt; rayAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;dir8&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;square&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:4 --&gt;&lt;!-- ws:start:WikiTextHeadingRule:32:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc4&quot;&gt;&lt;a name=&quot;Ray Attacks-Negative Rays&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:32 --&gt;Negative Rays&lt;/h2&gt;
 Attacks of Negative Ray-Directions:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:5:
&amp;lt;pre class=&amp;quot;text&amp;quot;&amp;gt;West (-1)           South (-8)           SouthWest (-9)      SouthEast (-7)&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .      . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .      . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .      . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .      . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;1 1 1 R . . . .     . . . R . . . .      . . . B . . . .     . . . B . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . 1 . . . .      . . 1 . . . . .     . . . . 1 . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . 1 . . . .      . 1 . . . . . .     . . . . . 1 . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . 1 . . . .      1 . . . . . . .     . . . . . . 1 .&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.text  {font-family:monospace;}
.text .imp {font-weight: bold; color: red;}
.text span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;text&quot;&gt;West (-1)           South (-8)           SouthWest (-9)      SouthEast (-7)
. . . . . . . .     . . . . . . . .      . . . . . . . .     . . . . . . . .
. . . . . . . .     . . . . . . . .      . . . . . . . .     . . . . . . . .
. . . . . . . .     . . . . . . . .      . . . . . . . .     . . . . . . . .
. . . . . . . .     . . . . . . . .      . . . . . . . .     . . . . . . . .
1 1 1 R . . . .     . . . R . . . .      . . . B . . . .     . . . B . . . .
. . . . . . . .     . . . 1 . . . .      . . 1 . . . . .     . . . . 1 . . .
. . . . . . . .     . . . 1 . . . .      . 1 . . . . . .     . . . . . 1 . .
. . . . . . . .     . . . 1 . . . .      1 . . . . . . .     . . . . . . 1 .&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:5 --&gt;&lt;!-- ws:start:WikiTextHeadingRule:34:&amp;lt;h3&amp;gt; --&gt;&lt;h3 id=&quot;toc5&quot;&gt;&lt;a name=&quot;Ray Attacks-Negative Rays-Conditional&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:34 --&gt;Conditional&lt;/h3&gt;
 Works the same way, but needs &lt;a class=&quot;wiki_link&quot; href=&quot;/BitScan#Bitscanreverse&quot;&gt;reverse bitscan&lt;/a&gt; to find the first blocking piece, if any.&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:6:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;U64 getNegativeRayAttacks(U64 occupied, enumDir dir8, enumSquare square) {&amp;lt;br/&amp;gt;   U64 attacks = rayAttacks[dir8][square];&amp;lt;br/&amp;gt;   U64 blocker = attacks &amp;amp;amp; occupied;&amp;lt;br/&amp;gt;   if ( blocker ) {&amp;lt;br/&amp;gt;      square = bitScanReverse(blocker);&amp;lt;br/&amp;gt;      attacks ^= rayAttacks[dir8][square];&amp;lt;br/&amp;gt;   }&amp;lt;br/&amp;gt;   return attacks;&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;U64 getNegativeRayAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 occupied, enumDir dir8, enumSquare square&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   U64 attacks &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rayAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;dir8&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;square&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   U64 blocker &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; attacks &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; occupied&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; blocker &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
      square &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bitScanReverse&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;blocker&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
      attacks &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rayAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;dir8&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;square&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; attacks&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:6 --&gt;&lt;!-- ws:start:WikiTextHeadingRule:36:&amp;lt;h3&amp;gt; --&gt;&lt;h3 id=&quot;toc6&quot;&gt;&lt;a name=&quot;Ray Attacks-Negative Rays-Branchless&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:36 --&gt;Branchless&lt;/h3&gt;
 The branch-less solution with a fast &lt;a class=&quot;wiki_link&quot; href=&quot;/x86-64&quot;&gt;x86-64&lt;/a&gt; &lt;a class=&quot;wiki_link&quot; href=&quot;/x86-64#gpinstructions&quot;&gt;bsr-instruction&lt;/a&gt; allows better scheduling and parallel speedup of independent instruction chains, like processing several directions. Setting the least significant bit ensures to scan at least an outer square, which would address an empty ray set anyway, therefor not affecting the final result with no blocker or a most outer one.&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:7:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;U64 getRayAttacks(U64 occupied, enumDir dir8, unsigned long square) {&amp;lt;br/&amp;gt;   U64 attacks    = rayAttacks[dir8][square];&amp;lt;br/&amp;gt;   U64 blocker    =  attacks &amp;amp;amp; occupied;&amp;lt;br/&amp;gt;   _BitScanReverse64 (&amp;amp;amp;square, blocker | 1);&amp;lt;br/&amp;gt;   return attacks ^ rayAttacks[dir8][square];&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;U64 getRayAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 occupied, enumDir dir8, &lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt; square&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   U64 attacks    &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rayAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;dir8&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;square&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   U64 blocker    &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;  attacks &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; occupied&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   _BitScanReverse64 &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;square, blocker &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; attacks &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt; rayAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;dir8&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;square&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:7 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextAnchorRule:87:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@Generalized&amp;quot; title=&amp;quot;Anchor: Generalized&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;Generalized&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:87 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:38:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc7&quot;&gt;&lt;a name=&quot;Ray Attacks-Generalized&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:38 --&gt;Generalized&lt;/h2&gt;
 The idea of the &lt;a class=&quot;wiki_link&quot; href=&quot;/BitScan#GeneralizedBitscan&quot;&gt;generalized bitscan&lt;/a&gt; may be used to share the same code for all directions. The implementation of isNegative(dir8), a macro or inline-function, depends on the definition or enumeration of the directions and is likely a compare or test instruction.&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:40:&amp;lt;h3&amp;gt; --&gt;&lt;h3 id=&quot;toc8&quot;&gt;&lt;a name=&quot;Ray Attacks-Generalized-Conditional&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:40 --&gt;Conditional&lt;/h3&gt;
 The conditional by a good predictable branch on blocker is favorable - specially for slow bitscans with some chance to skip it, e.g. in endings.&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:8:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;U64 getRayAttacks(U64 occupied, enumDir dir8, enumSquare square) {&amp;lt;br/&amp;gt;   U64 attacks = rayAttacks[dir8][square];&amp;lt;br/&amp;gt;   U64 blocker = attacks &amp;amp;amp; occupied;&amp;lt;br/&amp;gt;   if ( blocker ) {&amp;lt;br/&amp;gt;      square = bitScan(blocker, isNegative(dir8));&amp;lt;br/&amp;gt;      attacks ^= rayAttacks[dir8][square];&amp;lt;br/&amp;gt;   }&amp;lt;br/&amp;gt;   return attacks;&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;U64 getRayAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 occupied, enumDir dir8, enumSquare square&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   U64 attacks &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rayAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;dir8&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;square&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   U64 blocker &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; attacks &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; occupied&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; blocker &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
      square &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bitScan&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;blocker, isNegative&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;dir8&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
      attacks &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rayAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;dir8&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;square&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; attacks&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:8 --&gt;&lt;!-- ws:start:WikiTextHeadingRule:42:&amp;lt;h3&amp;gt; --&gt;&lt;h3 id=&quot;toc9&quot;&gt;&lt;a name=&quot;Ray Attacks-Generalized-Branchless&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:42 --&gt;Branchless&lt;/h3&gt;
 The branch-less routine provides a dirMask as universal set for negative rays and the empty set for positive rays, to implement the &lt;a class=&quot;wiki_link&quot; href=&quot;/BitScan#GeneralizedBitscan&quot;&gt;generalized bitscan&lt;/a&gt;. The dirBit-or ensures to scan at least outer square with empty ray sets.&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:9:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;U64 getRayAttacks(U64 occupied, enumDir dir8, unsigned long square) {&amp;lt;br/&amp;gt;   U64 attacks    = rayAttacks[dir8][square];&amp;lt;br/&amp;gt;   U64 blocker    =  attacks &amp;amp;amp; occupied;&amp;lt;br/&amp;gt;   blocker       &amp;amp;amp;= -blocker | dirMask[dir8];&amp;lt;br/&amp;gt;   blocker       |=            dirBit [dir8]&amp;lt;br/&amp;gt;   _BitScanReverse64 (&amp;amp;amp;square, blocker | dirBit[dir8]);&amp;lt;br/&amp;gt;   return attacks ^ rayAttacks[dir8][square];&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;U64 getRayAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 occupied, enumDir dir8, &lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt; square&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   U64 attacks    &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rayAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;dir8&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;square&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   U64 blocker    &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;  attacks &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; occupied&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   blocker       &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;blocker &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; dirMask&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;dir8&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   blocker       &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;            dirBit &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;dir8&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
   _BitScanReverse64 &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;square, blocker &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; dirBit&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;dir8&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; attacks &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt; rayAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;dir8&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;square&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:9 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:44:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc10&quot;&gt;&lt;a name=&quot;Ray Attacks-Zero Count&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:44 --&gt;Zero Count&lt;/h2&gt;
 If available, Leading- or Trailing Zero Count instructions may be used instead of bitscan for another branch-less solution of the classical attack getter. Since they leave 64 for empty sets, it needs to make the ray attack &lt;a class=&quot;wiki_link&quot; href=&quot;/Array&quot;&gt;arrays&lt;/a&gt; one greater to allow index by 64 which contains an empty set - or one needs to map 64 to 63 for positive directions.&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:10:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;U64 rayAttacks[8][65];&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;U64 getPositiveRayAttacks(U64 occupied, enumDir dir8, enumSquare square) {&amp;lt;br/&amp;gt;   U64 attacks = rayAttacks[dir8][square];&amp;lt;br/&amp;gt;   U64 blocker = attacks &amp;amp;amp; occupied;&amp;lt;br/&amp;gt;   int firstBlockingSquare = trailingZeroCount(blocker);&amp;lt;br/&amp;gt;   attacks ^= rayAttacks[dir8][firstBlockingSquare];&amp;lt;br/&amp;gt;   return attacks;&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;U64 rayAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;65&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
U64 getPositiveRayAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 occupied, enumDir dir8, enumSquare square&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   U64 attacks &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rayAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;dir8&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;square&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   U64 blocker &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; attacks &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; occupied&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; firstBlockingSquare &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; trailingZeroCount&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;blocker&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   attacks &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rayAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;dir8&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;firstBlockingSquare&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; attacks&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:10 --&gt;LeadingZeroCount instead of bitscanReverse may be done similarly, considering the reversed order.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextAnchorRule:88:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@Wrapper&amp;quot; title=&amp;quot;Anchor: Wrapper&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;Wrapper&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:88 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:46:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc11&quot;&gt;&lt;a name=&quot;Line Attacks&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:46 --&gt;Line Attacks&lt;/h1&gt;
 As mentioned, line attacks are the &lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#Union&quot;&gt;union&lt;/a&gt; of positive and opposite negative &lt;a class=&quot;wiki_link&quot; href=&quot;/Rays#RayDirections&quot;&gt;ray-directions&lt;/a&gt; - since they are disjoint one may also use &#039;xor&#039; or &#039;add&#039;:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:11:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;U64 diagonalAttacks(U64 occ, enumSquare sq) {&amp;lt;br/&amp;gt;  return getPositiveRayAttacks(occ, noEa, sq)&amp;lt;br/&amp;gt;       | getNegativeRayAttacks(occ, soWe, sq); // ^ +&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;U64 antiDiagAttacks(U64 occ, enumSquare sq) {&amp;lt;br/&amp;gt;  return getPositiveRayAttacks(occ, noWe, sq)&amp;lt;br/&amp;gt;       | getNegativeRayAttacks(occ, soEa, sq); // ^ +&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;U64 fileAttacks (U64 occ, enumSquare sq) {&amp;lt;br/&amp;gt;  return getPositiveRayAttacks(occ, nort, sq)&amp;lt;br/&amp;gt;       | getNegativeRayAttacks(occ, sout, sq); // ^ +&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;U64 rankAttacks (U64 occ, enumSquare sq) {&amp;lt;br/&amp;gt;  return getPositiveRayAttacks(occ, east, sq)&amp;lt;br/&amp;gt;       | getNegativeRayAttacks(occ, west, sq); // ^ +&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;U64 diagonalAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 occ, enumSquare sq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; getPositiveRayAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;occ, noEa, sq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
       &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; getNegativeRayAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;occ, soWe, sq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// ^ +&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
U64 antiDiagAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 occ, enumSquare sq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; getPositiveRayAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;occ, noWe, sq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
       &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; getNegativeRayAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;occ, soEa, sq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// ^ +&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
U64 fileAttacks &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 occ, enumSquare sq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; getPositiveRayAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;occ, nort, sq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
       &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; getNegativeRayAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;occ, sout, sq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// ^ +&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
U64 rankAttacks &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 occ, enumSquare sq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; getPositiveRayAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;occ, east, sq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
       &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; getNegativeRayAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;occ, west, sq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// ^ +&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:11 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:48:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc12&quot;&gt;&lt;a name=&quot;Piece Attacks&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:48 --&gt;Piece Attacks&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextHeadingRule:50:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc13&quot;&gt;&lt;a name=&quot;Piece Attacks-Union of Line Attacks&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:50 --&gt;Union of Line Attacks&lt;/h2&gt;
 Of course piece attacks are the union of the line attacks:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:12:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;U64 rookAttacks (U64 occ, enumSquare sq) {&amp;lt;br/&amp;gt;  return fileAttacks(occ, sq)&amp;lt;br/&amp;gt;       | rankAttacks(occ, sq); // ^ +&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;U64 bishopAttacks (U64 occ, enumSquare sq) {&amp;lt;br/&amp;gt;  return diagonalAttacks(occ, sq)&amp;lt;br/&amp;gt;       | antiDiagAttacks(occ, sq); // ^ +&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;U64 queenAttacks (U64 occ, enumSquare sq) {&amp;lt;br/&amp;gt;  return rookAttacks  (occ, sq)&amp;lt;br/&amp;gt;       | bishopAttacks(occ, sq); // ^ +&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;U64 rookAttacks &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 occ, enumSquare sq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; fileAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;occ, sq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
       &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; rankAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;occ, sq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// ^ +&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
U64 bishopAttacks &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 occ, enumSquare sq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; diagonalAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;occ, sq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
       &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; antiDiagAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;occ, sq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// ^ +&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
U64 queenAttacks &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 occ, enumSquare sq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; rookAttacks  &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;occ, sq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
       &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; bishopAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;occ, sq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// ^ +&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:12 --&gt;&lt;!-- ws:start:WikiTextAnchorRule:89:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@InOneRun&amp;quot; title=&amp;quot;Anchor: InOneRun&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;InOneRun&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:89 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:52:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc14&quot;&gt;&lt;a name=&quot;Piece Attacks-In one Run&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:52 --&gt;In one Run&lt;/h2&gt;
 As mentioned by &lt;a class=&quot;wiki_link&quot; href=&quot;/Robert%20Hyatt&quot;&gt;Robert Hyatt&lt;/a&gt; &lt;!-- ws:start:WikiTextRefRule:17:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.talkchess.com/forum/viewtopic.php?topic_view=threads&amp;amp;amp;p=299564&amp;amp;amp;t=30356&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Re: Yet another bitboard attack generator&amp;lt;/a&amp;gt; by &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Robert%20Hyatt&amp;quot;&amp;gt;Robert Hyatt&amp;lt;/a&amp;gt;, &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/CCC&amp;quot;&amp;gt;CCC&amp;lt;/a&amp;gt;, October 28, 2009&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-1&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:17 --&gt;, instead of fetching four &lt;a class=&quot;wiki_link&quot; href=&quot;/On%20an%20empty%20Board#RayAttacks&quot;&gt;ray-attacks&lt;/a&gt; on the otherwise empty board, one may already use the &lt;a class=&quot;wiki_link&quot; href=&quot;/On%20an%20empty%20Board#PieceAttacks&quot;&gt;rook- or bishop attacks&lt;/a&gt; to reset outer squares from that union set. &lt;br /&gt;
&lt;br /&gt;
A further improvement was suggested by &lt;a class=&quot;wiki_link&quot; href=&quot;/Michael%20Sherwin&quot;&gt;Michael Sherwin&lt;/a&gt; &lt;!-- ws:start:WikiTextRefRule:21:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.talkchess.com/forum/viewtopic.php?t=30971&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Modified old 64 bit attack getter&amp;lt;/a&amp;gt; by &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Michael%20Sherwin&amp;quot;&amp;gt;Michael Sherwin&amp;lt;/a&amp;gt;, &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/CCC&amp;quot;&amp;gt;CCC&amp;lt;/a&amp;gt;, December 06, 2009&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-2&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:21 --&gt;, to union the occupancy with the outer bits 0 and 63. Together with appropriate bits set in separate ray-masks, this yields to an efficient branchless solution with 13 64-bit operations in total and 4.5 KByte for the lookup tables for both rooks and bishops each.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:13:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;struct {&amp;lt;br/&amp;gt;  U64 bitsN;  // bits North, including MSB (bit 63)&amp;lt;br/&amp;gt;  U64 bitsE;  // bits East, including MSB&amp;lt;br/&amp;gt;  U64 bitsS;  // bits South, including LSB (bit 0 == 1)&amp;lt;br/&amp;gt;  U64 bitsW;  // bits West, including LSB &amp;lt;br/&amp;gt;} CACHE_ALIGN rayWstop[64]; &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;U64 attacksEmpty[64];&amp;lt;br/&amp;gt;U64 rayN[64];&amp;lt;br/&amp;gt;U64 rayE[64];&amp;lt;br/&amp;gt;U64 rayS[64];&amp;lt;br/&amp;gt;U64 rayW[64];&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;U64 rookAttacks(U64 occ, unsigned int sq) {&amp;lt;br/&amp;gt;   unsigned long ulN, ulE, ulS, ulW;&amp;lt;br/&amp;gt;   occ |= C64(0x8000000000000001);&amp;lt;br/&amp;gt;   _BitScanForward64(&amp;amp;amp;ulN, occ &amp;amp;amp; rayWstop[sq].bitsN);&amp;lt;br/&amp;gt;   _BitScanForward64(&amp;amp;amp;ulE, occ &amp;amp;amp; rayWstop[sq].bitsE);&amp;lt;br/&amp;gt;   _BitScanReverse64(&amp;amp;amp;ulS, occ &amp;amp;amp; rayWstop[sq].bitsS);&amp;lt;br/&amp;gt;   _BitScanReverse64(&amp;amp;amp;ulW, occ &amp;amp;amp; rayWstop[sq].bitsW);&amp;lt;br/&amp;gt;   return attacksEmpty[sq]^rayN[ulN]^rayE[ulE]^rayS[ulS]^rayW[ulW];&amp;lt;br/&amp;gt;} &amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;kw4&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  U64 bitsN&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;// bits North, including MSB (bit 63)&lt;/span&gt;
  U64 bitsE&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;// bits East, including MSB&lt;/span&gt;
  U64 bitsS&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;// bits South, including LSB (bit 0 == 1)&lt;/span&gt;
  U64 bitsW&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;// bits West, including LSB &lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; CACHE_ALIGN rayWstop&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;64&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; 
&amp;nbsp;
U64 attacksEmpty&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;64&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
U64 rayN&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;64&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
U64 rayE&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;64&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
U64 rayS&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;64&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
U64 rayW&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;64&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
U64 rookAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 occ, &lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; sq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;kw4&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt; ulN, ulE, ulS, ulW&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   occ &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; C64&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu12&quot;&gt;0x8000000000000001&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   _BitScanForward64&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;ulN, occ &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; rayWstop&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;bitsN&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   _BitScanForward64&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;ulE, occ &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; rayWstop&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;bitsE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   _BitScanReverse64&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;ulS, occ &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; rayWstop&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;bitsS&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   _BitScanReverse64&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;ulW, occ &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; rayWstop&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;bitsW&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; attacksEmpty&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sq&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt;rayN&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;ulN&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt;rayE&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;ulE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt;rayS&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;ulS&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt;rayW&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;ulW&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:13 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:54:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc15&quot;&gt;&lt;a name=&quot;See also&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:54 --&gt;See also&lt;/h1&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Bitfoot#ABBitboards&quot;&gt;Bitfoot - A/B Bitboards&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Blockers%20and%20Beyond&quot;&gt;Blockers and Beyond&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Obstruction%20Difference&quot;&gt;Obstruction Difference&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Pieces%20versus%20Directions&quot;&gt;Pieces versus Directions&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:56:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc16&quot;&gt;&lt;a name=&quot;Publications&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:56 --&gt;Publications&lt;/h1&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Stuart%20Cracraft&quot;&gt;Stuart Cracraft&lt;/a&gt; (&lt;strong&gt;1984&lt;/strong&gt;). &lt;em&gt;Bitmap move generation in Chess&lt;/em&gt;. &lt;a class=&quot;wiki_link&quot; href=&quot;/ICGA%20Journal&quot;&gt;ICCA Journal&lt;/a&gt;, Vol. 7, No. 3, pp. 146–153&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Fridel%20Fainshtein&quot;&gt;Fridel Fainshtein&lt;/a&gt; (&lt;strong&gt;2006&lt;/strong&gt;). &lt;em&gt;An Orthodox k-Move Problem-Composer for Chess Directmates&lt;/em&gt;. M.Sc. thesis, &lt;a class=&quot;wiki_link&quot; href=&quot;/Bar-Ilan%20University&quot;&gt;Bar-Ilan University&lt;/a&gt;,  &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.problemschach.de/KMOVEComposer.pdf&quot; rel=&quot;nofollow&quot;&gt;pdf&lt;/a&gt;, Appendix D - 64-bit Representation, pp. 105&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Fridel%20Fainshtein&quot;&gt;Fridel Fainshtein&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Yaakov%20HaCohen-Kerner&quot;&gt;Yaakov HaCohen-Kerner&lt;/a&gt; (&lt;strong&gt;2006&lt;/strong&gt;). &lt;em&gt;A Chess Composer of Two-Move Mate Problems&lt;/em&gt;. &lt;a class=&quot;wiki_link&quot; href=&quot;/ICGA%20Journal&quot;&gt;ICGA Journal&lt;/a&gt;, Vol. 29, No. 1, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://homedir.jct.ac.il/~kerner/pdf_docs/ICGA_computer_composer.pdf&quot; rel=&quot;nofollow&quot;&gt;pdf&lt;/a&gt;, Appendix E: 64-bit representation&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:58:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc17&quot;&gt;&lt;a name=&quot;Forum Posts&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:58 --&gt;Forum Posts&lt;/h1&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?topic_view=threads&amp;amp;p=257692&amp;amp;t=27113&quot; rel=&quot;nofollow&quot;&gt;Re: Thinker output&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Robert%20Hyatt&quot;&gt;Robert Hyatt&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, March 25, 2009&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?topic_view=threads&amp;amp;p=299564&amp;amp;t=30356&quot; rel=&quot;nofollow&quot;&gt;Re: Yet another bitboard attack generator&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Robert%20Hyatt&quot;&gt;Robert Hyatt&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, October 28, 2009&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=30971&quot; rel=&quot;nofollow&quot;&gt;Modified old 64 bit attack getter&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Michael%20Sherwin&quot;&gt;Michael Sherwin&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, December 06, 2009&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:60:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc18&quot;&gt;&lt;a name=&quot;References&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:60 --&gt;References&lt;/h1&gt;
&lt;!-- ws:start:WikiTextReferencesRule:237:&amp;amp;lt;references /&amp;amp;gt; --&gt;&lt;ol class=&quot;references&quot;&gt;
&lt;li id=&quot;cite_note-1&quot;&gt;&lt;a href=&quot;#cite_ref-1&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?topic_view=threads&amp;amp;p=299564&amp;amp;t=30356&quot; rel=&quot;nofollow&quot;&gt;Re: Yet another bitboard attack generator&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Robert%20Hyatt&quot;&gt;Robert Hyatt&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, October 28, 2009&lt;/li&gt;
&lt;li id=&quot;cite_note-2&quot;&gt;&lt;a href=&quot;#cite_ref-2&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=30971&quot; rel=&quot;nofollow&quot;&gt;Modified old 64 bit attack getter&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Michael%20Sherwin&quot;&gt;Michael Sherwin&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, December 06, 2009&lt;/li&gt;
&lt;/ol&gt;&lt;!-- ws:end:WikiTextReferencesRule:237 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:62:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc19&quot;&gt;&lt;a name=&quot;What links here?&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:62 --&gt;What links here?&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextIncludeRule:015:&amp;lt;img src=&amp;quot;https://www.wikispaces.com/site/embedthumbnail/include/backlinks?w=200&amp;amp;h=100&amp;quot; class=&amp;quot;WikiMedia WikiMediaInclude&amp;quot; id=&amp;quot;wikitext@@include@@page=&amp;amp;quot;Classical Approach&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;20&amp;amp;quot;&amp;quot; title=&amp;quot;Include backlinks: page=&amp;amp;quot;Classical Approach&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;20&amp;amp;quot;&amp;quot; /&amp;gt; --&gt;&lt;div class=&quot;includeBody-Classical_Approach includeBody-Classical%20Approach includeBody&quot;&gt;&lt;table class=&quot;includeBacklinks&quot;&gt;
  &lt;thead&gt;
    &lt;tr class=&quot;includeBacklinksHeading&quot;&gt;
      &lt;th class=&quot;includeBacklinksPageHeading&quot;&gt;Page&lt;/th&gt;
      &lt;th class=&quot;includeBacklinksDateHeading&quot;&gt;Date Edited&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
    &lt;tbody&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Andscacs&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Andscacs&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 16, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Bitfoot&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Bitfoot&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Sep 8, 2015&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/BitScan&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;BitScan&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Sep 10, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Blockers+and+Beyond&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Blockers and Beyond&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 21, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Classical+Approach&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Classical Approach&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 28, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/DirGolem&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;DirGolem&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jun 5, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Fridel+Fainshtein&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Fridel Fainshtein&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Oct 8, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Hiding+the+Implementation&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Hiding the Implementation&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Feb 3, 2011&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Pieces+versus+Directions&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Pieces versus Directions&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Oct 6, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/SEE+-+The+Swap+Algorithm&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;SEE - The Swap Algorithm&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jun 5, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Shifted+Bitboards&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Shifted Bitboards&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 9, 2011&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Sliding+Piece+Attacks&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Sliding Piece Attacks&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;May 27, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Teki&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Teki&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 29, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Tunguska&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Tunguska&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Sep 16, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Yaakov+HaCohen-Kerner&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Yaakov HaCohen-Kerner&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Aug 23, 2014&lt;/td&gt;
    &lt;/tr&gt;
      &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;&lt;!-- ws:end:WikiTextIncludeRule:015 --&gt;&lt;br /&gt;
&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Sliding%20Piece%20Attacks&quot;&gt;Up one Level&lt;/a&gt;&lt;/strong&gt;</description>
          </item>
    <item>
      <title>Congruent Modulo Bitboards</title>
      <link>https://chessprogramming.wikispaces.com/Congruent+Modulo+Bitboards</link>
      <dc:creator>GerdIsenberg</dc:creator>
      <guid isPermaLink="true">https://chessprogramming.wikispaces.com/Congruent+Modulo+Bitboards</guid>
      <comments>https://chessprogramming.wikispaces.com/page/messages/Congruent+Modulo+Bitboards</comments>
      <pubDate>Wed, 26 Jun 2013 18:26:44 GMT</pubDate>
      <description>&lt;!-- ws:start:WikiTextTocRule:63:&amp;lt;img id=&amp;quot;wikitext@@toc@@normal&amp;quot; class=&amp;quot;WikiMedia WikiMediaToc&amp;quot; title=&amp;quot;Table of Contents&amp;quot; src=&amp;quot;/site/embedthumbnail/toc/normal?w=225&amp;amp;h=100&amp;quot;/&amp;gt; --&gt;&lt;div id=&quot;toc&quot;&gt;&lt;h1 class=&quot;nopad&quot;&gt;Table of Contents&lt;/h1&gt;&lt;!-- ws:end:WikiTextTocRule:63 --&gt;&lt;!-- ws:start:WikiTextTocRule:64: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Modulo vs. Multiplication&quot;&gt;Modulo vs. Multiplication&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:64 --&gt;&lt;!-- ws:start:WikiTextTocRule:65: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Modulo vs. Multiplication-Modulo&quot;&gt;Modulo&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:65 --&gt;&lt;!-- ws:start:WikiTextTocRule:66: --&gt;&lt;div style=&quot;margin-left: 3em;&quot;&gt;&lt;a href=&quot;#Modulo vs. Multiplication-Modulo-Congruence relation&quot;&gt;Congruence relation&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:66 --&gt;&lt;!-- ws:start:WikiTextTocRule:67: --&gt;&lt;div style=&quot;margin-left: 3em;&quot;&gt;&lt;a href=&quot;#Modulo vs. Multiplication-Modulo-Casting out 255&quot;&gt;Casting out 255&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:67 --&gt;&lt;!-- ws:start:WikiTextTocRule:68: --&gt;&lt;div style=&quot;margin-left: 3em;&quot;&gt;&lt;a href=&quot;#Modulo vs. Multiplication-Modulo-Reciprocal Multiplication&quot;&gt;Reciprocal Multiplication&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:68 --&gt;&lt;!-- ws:start:WikiTextTocRule:69: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Modulo vs. Multiplication-Multiplication&quot;&gt;Multiplication&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:69 --&gt;&lt;!-- ws:start:WikiTextTocRule:70: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Fenner&#039;s and Levene&#039;s conclusion&quot;&gt;Fenner&#039;s and Levene&#039;s conclusion&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:70 --&gt;&lt;!-- ws:start:WikiTextTocRule:71: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Publications&quot;&gt;Publications&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:71 --&gt;&lt;!-- ws:start:WikiTextTocRule:72: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Forum Posts&quot;&gt;Forum Posts&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:72 --&gt;&lt;!-- ws:start:WikiTextTocRule:73: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#External Links&quot;&gt;External Links&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:73 --&gt;&lt;!-- ws:start:WikiTextTocRule:74: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#References&quot;&gt;References&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:74 --&gt;&lt;!-- ws:start:WikiTextTocRule:75: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#What links here?&quot;&gt;What links here?&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:75 --&gt;&lt;!-- ws:start:WikiTextTocRule:76: --&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:76 --&gt;&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Home&quot;&gt;Home&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Board%20Representation&quot;&gt;Board Representation&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Bitboards&quot;&gt;Bitboards&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Sliding%20Piece%20Attacks&quot;&gt;Sliding Piece Attacks&lt;/a&gt; * Congruent Modulo Bitboards&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Congruent Modulo Bitboards&lt;/strong&gt; was introduced by &lt;a class=&quot;wiki_link&quot; href=&quot;/Trevor%20Fenner&quot;&gt;Trevor Fenner&lt;/a&gt; and &lt;a class=&quot;wiki_link&quot; href=&quot;/Mark%20Levene&quot;&gt;Mark Levene&lt;/a&gt; in the &lt;a class=&quot;wiki_link&quot; href=&quot;/ICGA%20Journal#31_1&quot;&gt;ICGA Journal, Vol. 31, No. 1&lt;/a&gt; in 2008 &lt;!-- ws:start:WikiTextRefRule:18:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Trevor%20Fenner&amp;quot;&amp;gt;Trevor Fenner&amp;lt;/a&amp;gt;, &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Mark%20Levene&amp;quot;&amp;gt;Mark Levene&amp;lt;/a&amp;gt; (&amp;lt;strong&amp;gt;2008&amp;lt;/strong&amp;gt;). &amp;lt;em&amp;gt;Move Generation with Perfect Hashing Functions.&amp;lt;/em&amp;gt; &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/ICGA%20Journal#31_1&amp;quot;&amp;gt;ICGA Journal, Vol. 31, No. 1&amp;lt;/a&amp;gt;, pp. 3-12. &amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.dcs.bbk.ac.uk/~mark/download/bitboard_sliding_icga_final.pdf&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;pdf&amp;lt;/a&amp;gt;&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-1&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:18 --&gt;. While their &lt;a class=&quot;wiki_link&quot; href=&quot;/Hash%20Table&quot;&gt;Perfect Hashing&lt;/a&gt; approach provides great mathematical insights in &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/Modulo&quot; rel=&quot;nofollow&quot;&gt;Congruent Modulo&lt;/a&gt; arithmetic, their final conclusion in comparison with &lt;a class=&quot;wiki_link&quot; href=&quot;/Hashing%20Dictionaries&quot;&gt;Hashing Dictionaries&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Rotated%20Bitboards&quot;&gt;Rotated Bitboards&lt;/a&gt; and &lt;a class=&quot;wiki_link&quot; href=&quot;/Magic%20Bitboards&quot;&gt;Magic Bitboards&lt;/a&gt; was criticized by the obvious comparison with &lt;a class=&quot;wiki_link&quot; href=&quot;/Kindergarten%20Bitboards&quot;&gt;Kindergarten Bitboards&lt;/a&gt; &lt;!-- ws:start:WikiTextRefRule:22:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.talkchess.com/forum/viewtopic.php?t=20913&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Nice Math - Strange Conclusions&amp;lt;/a&amp;gt; by &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Gerd%20Isenberg&amp;quot;&amp;gt;Gerd Isenberg&amp;lt;/a&amp;gt;, &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/CCC&amp;quot;&amp;gt;CCC&amp;lt;/a&amp;gt;, April 29, 2008&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-2&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:22 --&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:39:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc0&quot;&gt;&lt;a name=&quot;Modulo vs. Multiplication&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:39 --&gt;Modulo vs. Multiplication&lt;/h1&gt;
 &lt;a class=&quot;wiki_link&quot; href=&quot;/BitScan&quot;&gt;BitScan&lt;/a&gt; broaches the issue of &lt;a class=&quot;wiki_link&quot; href=&quot;/Hash%20Table&quot;&gt;Perfect Hashing&lt;/a&gt; with &lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#Modulo&quot;&gt;Modulo&lt;/a&gt; versus &lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#Multiplication&quot;&gt;Multiplication&lt;/a&gt; as well:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/BitScan#BitscanByModulo&quot;&gt;Bitscan by Modulo&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/BitScan#DeBruijnMultiplation&quot;&gt;De Bruijn Multiplication&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
So does the &lt;a class=&quot;wiki_link&quot; href=&quot;/Population%20Count#SWARPopcount&quot;&gt;SWAR-Popcount&lt;/a&gt;, when it is about to finally add byte-wise populations:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Population%20Count#Castingout&quot;&gt;Casting out&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Population%20Count#Multiplication&quot;&gt;Multiplication&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:41:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc1&quot;&gt;&lt;a name=&quot;Modulo vs. Multiplication-Modulo&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:41 --&gt;Modulo&lt;/h2&gt;
&lt;!-- ws:start:WikiTextHeadingRule:43:&amp;lt;h3&amp;gt; --&gt;&lt;h3 id=&quot;toc2&quot;&gt;&lt;a name=&quot;Modulo vs. Multiplication-Modulo-Congruence relation&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:43 --&gt;Congruence relation&lt;/h3&gt;
 Fenner and Levene use masked lines (not necessarily excluding the sliding piece), that is bitboards with N=8 active bits with k={7,8,9} bits apart, starting with bit zero&lt;br /&gt;
&lt;ul class=&quot;quotelist&quot;&gt;&lt;li&gt;&lt;!-- ws:start:WikiTextMathRule:5:
[[math]]&amp;lt;br/&amp;gt;
A_{kN} = \{0, k, 2k, ...,(N-1)k\}&amp;lt;br/&amp;gt;[[math]]
 --&gt;&lt;script type=&quot;math/tex&quot;&gt;A_{kN} = \{0, k, 2k, ...,(N-1)k\}&lt;/script&gt;&lt;!-- ws:end:WikiTextMathRule:5 --&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
Based on &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/Congruence_relation&quot; rel=&quot;nofollow&quot;&gt;Congruence relation&lt;/a&gt; &lt;br /&gt;
&lt;ul class=&quot;quotelist&quot;&gt;&lt;li&gt;&lt;!-- ws:start:WikiTextMathRule:6:
[[math]]&amp;lt;br/&amp;gt;
b \equiv c \pmod{m}&amp;lt;br/&amp;gt;[[math]]
 --&gt;&lt;script type=&quot;math/tex&quot;&gt;b \equiv c \pmod{m}&lt;/script&gt;&lt;!-- ws:end:WikiTextMathRule:6 --&gt;&lt;/li&gt;&lt;/ul&gt;or equivalently&lt;br /&gt;
&lt;ul class=&quot;quotelist&quot;&gt;&lt;li&gt;&lt;!-- ws:start:WikiTextMathRule:7:
[[math]]&amp;lt;br/&amp;gt;
b \mod{m} = c \mod{m}&amp;lt;br/&amp;gt;[[math]]
 --&gt;&lt;script type=&quot;math/tex&quot;&gt;b \mod{m} = c \mod{m}&lt;/script&gt;&lt;!-- ws:end:WikiTextMathRule:7 --&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
they deduced two general perfect hashing functions. The case N &amp;lt;= k with&lt;br /&gt;
&lt;ul class=&quot;quotelist&quot;&gt;&lt;li&gt;&lt;!-- ws:start:WikiTextMathRule:8:
[[math]]&amp;lt;br/&amp;gt;
h_{1}(a) = a \mod (2^k + 2)&amp;lt;br/&amp;gt;[[math]]
 --&gt;&lt;script type=&quot;math/tex&quot;&gt;h_{1}(a) = a \mod (2^k + 2)&lt;/script&gt;&lt;!-- ws:end:WikiTextMathRule:8 --&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
and the case N &amp;lt;= k + 1&lt;br /&gt;
&lt;ul class=&quot;quotelist&quot;&gt;&lt;li&gt;&lt;!-- ws:start:WikiTextMathRule:9:
[[math]]&amp;lt;br/&amp;gt;
h_{2}(a) = a \mod (2^{k+1} + 1)&amp;lt;br/&amp;gt;[[math]]
 --&gt;&lt;script type=&quot;math/tex&quot;&gt;h_{2}(a) = a \mod (2^{k+1} + 1)&lt;/script&gt;&lt;!-- ws:end:WikiTextMathRule:9 --&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
This results in modulo 514 for &lt;a class=&quot;wiki_link&quot; href=&quot;/Diagonals&quot;&gt;diagonals&lt;/a&gt;, modulo 257 for &lt;a class=&quot;wiki_link&quot; href=&quot;/Anti-Diagonals&quot;&gt;anti-diagonals&lt;/a&gt;, and modulo 258 for &lt;a class=&quot;wiki_link&quot; href=&quot;/Files&quot;&gt;files&lt;/a&gt;, to calculate the occupied index. Tables could made denser by storing indices, but that would require a second indirection. While Fenner and Levene used a &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/MATLAB&quot; rel=&quot;nofollow&quot;&gt;Matlab&lt;/a&gt; 32-bit implementation to conclude their approach might be competitive, this is how it may be implemented in &lt;a class=&quot;wiki_link&quot; href=&quot;/C&quot;&gt;C&lt;/a&gt; by looking up pre-calculated attack-bitboards:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:0:
&amp;lt;pre class=&amp;quot;text&amp;quot;&amp;gt;U64 arrCmodDiaAttacks [514][64];  // 257 K&amp;lt;br/&amp;gt;U64 arrCmodAntiAttacks[257][64];&amp;lt;br/&amp;gt;U64 arrCmodFileAttacks[258][64];&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;U64 diagonalAttacks(U64 occ, enumSquare sq) {&amp;lt;br/&amp;gt;   const U64 aDia = C64(0x8040201008040201);&amp;lt;br/&amp;gt;   occ = ( (occ &amp;amp;gt;&amp;amp;gt; diashift[sq]) &amp;amp;amp; aDia) % 514;&amp;lt;br/&amp;gt;   return arrCmodDiaAttacks[occ][sq];&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;U64 antiDiagAttacks(U64 occ, enumSquare sq) {&amp;lt;br/&amp;gt;   const U64 aAntiDiaShr7 = C64(0x0002040810204081);&amp;lt;br/&amp;gt;   occ = ( (occ &amp;amp;gt;&amp;amp;gt; antishift[sq]) &amp;amp;amp; aAntiDiaShr7 ) % 257;&amp;lt;br/&amp;gt;   return arrCmodAntiAttacks[occ][sq];&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;U64 fileAttacks(U64 occ, enumSquare sq) {&amp;lt;br/&amp;gt;   const U64 aFile = C64(0x0101010101010101);&amp;lt;br/&amp;gt;   occ = ( (occ &amp;amp;gt;&amp;amp;gt; (sq&amp;amp;amp;7)) &amp;amp;amp; aFile) % 258;&amp;lt;br/&amp;gt;   return arrCmodFileAttacks[occ][sq];&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.text  {font-family:monospace;}
.text .imp {font-weight: bold; color: red;}
.text span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;text&quot;&gt;U64 arrCmodDiaAttacks [514][64];  // 257 K
U64 arrCmodAntiAttacks[257][64];
U64 arrCmodFileAttacks[258][64];
&amp;nbsp;
U64 diagonalAttacks(U64 occ, enumSquare sq) {
   const U64 aDia = C64(0x8040201008040201);
   occ = ( (occ &amp;gt;&amp;gt; diashift[sq]) &amp;amp; aDia) % 514;
   return arrCmodDiaAttacks[occ][sq];
}
&amp;nbsp;
U64 antiDiagAttacks(U64 occ, enumSquare sq) {
   const U64 aAntiDiaShr7 = C64(0x0002040810204081);
   occ = ( (occ &amp;gt;&amp;gt; antishift[sq]) &amp;amp; aAntiDiaShr7 ) % 257;
   return arrCmodAntiAttacks[occ][sq];
}
&amp;nbsp;
U64 fileAttacks(U64 occ, enumSquare sq) {
   const U64 aFile = C64(0x0101010101010101);
   occ = ( (occ &amp;gt;&amp;gt; (sq&amp;amp;7)) &amp;amp; aFile) % 258;
   return arrCmodFileAttacks[occ][sq];
}&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:0 --&gt;&lt;!-- ws:start:WikiTextAnchorRule:77:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@Castingout255&amp;quot; title=&amp;quot;Anchor: Castingout255&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;Castingout255&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:77 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:45:&amp;lt;h3&amp;gt; --&gt;&lt;h3 id=&quot;toc3&quot;&gt;&lt;a name=&quot;Modulo vs. Multiplication-Modulo-Casting out 255&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:45 --&gt;Casting out 255&lt;/h3&gt;
For ranks, diagonals or anti-diagonals, where the occupancy mask excludes the sliding piece, and the rank-or byte-wise sum of disjoint bits is therefor less than 255, &lt;a class=&quot;wiki_link&quot; href=&quot;/Population%20Count#Castingout&quot;&gt;Casting out&lt;/a&gt; 256-1 works as well, without any shifts required, and with more space saving options for the lookup table, i. e. similar to Kindergarten Bitboards with shared multiples of first rank attacks and an trailing post-mask with the same line &lt;!-- ws:start:WikiTextRefRule:25:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.open-aurec.com/wbforum/viewtopic.php?f=4&amp;amp;amp;t=51996&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Low memory usage attack bitboard generation&amp;lt;/a&amp;gt; by crystalclear, &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Computer%20Chess%20Forums&amp;quot;&amp;gt;Winboard Forum&amp;lt;/a&amp;gt;, October 06, 2011&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-3&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:25 --&gt;.&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:1:
&amp;lt;pre class=&amp;quot;text&amp;quot;&amp;gt;masked occupany  %  256-1            =  A-H    &amp;lt;br/&amp;gt;. . . . . . . H     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . G .     . . . . . . . .     . . . . . . . . &amp;lt;br/&amp;gt;. . . . . F . .     . . . . . . . .     . . . . . . . . &amp;lt;br/&amp;gt;. . . . E . . .     . . . . . . . .     . . . . . . . . &amp;lt;br/&amp;gt;. . . . . . . .  %  . . . . . . . .  =  . . . . . . . . &amp;lt;br/&amp;gt;. . C . . . . .     . . . . . . . .     . . . . . . . . &amp;lt;br/&amp;gt;. B . . . . . .     . . . . . . . .     . . . . . . . . &amp;lt;br/&amp;gt;A . . . . . . .     1 1 1 1 1 1 1 1     A B C . E F G H &amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.text  {font-family:monospace;}
.text .imp {font-weight: bold; color: red;}
.text span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;text&quot;&gt;masked occupany  %  256-1            =  A-H    
. . . . . . . H     . . . . . . . .     . . . . . . . .
. . . . . . G .     . . . . . . . .     . . . . . . . . 
. . . . . F . .     . . . . . . . .     . . . . . . . . 
. . . . E . . .     . . . . . . . .     . . . . . . . . 
. . . . . . . .  %  . . . . . . . .  =  . . . . . . . . 
. . C . . . . .     . . . . . . . .     . . . . . . . . 
. B . . . . . .     . . . . . . . .     . . . . . . . . 
A . . . . . . .     1 1 1 1 1 1 1 1     A B C . E F G H &lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:1 --&gt;&lt;!-- ws:start:WikiTextHeadingRule:47:&amp;lt;h3&amp;gt; --&gt;&lt;h3 id=&quot;toc4&quot;&gt;&lt;a name=&quot;Modulo vs. Multiplication-Modulo-Reciprocal Multiplication&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:47 --&gt;Reciprocal Multiplication&lt;/h3&gt;
The 64-bit modulo by a constant can be done most efficiently by &lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#Modulo&quot;&gt;reciprocal fixed point multiplication&lt;/a&gt;, this is how &lt;a class=&quot;wiki_link&quot; href=&quot;/Microsoft&quot;&gt;Microsoft&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/Visual_C%2B%2B&quot; rel=&quot;nofollow&quot;&gt;Visual C++&lt;/a&gt; 2005 compiler implements the mod constant for &lt;a class=&quot;wiki_link&quot; href=&quot;/x86-64&quot;&gt;x86-64&lt;/a&gt; processors. One 64*64=128 bit multiplication, one shift, one further 32-bit multiplication , one subtraction. Of course using 64-bit &lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#Division&quot;&gt;division&lt;/a&gt; to get the remainder burns even more cycles.&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:2:
&amp;lt;pre class=&amp;quot;text&amp;quot;&amp;gt;Code:&amp;lt;br/&amp;gt;% 514&amp;lt;br/&amp;gt; mov    r11d, r10 ; masked diagonal&amp;lt;br/&amp;gt; mov    rax, ff00ff00ff00ff01H&amp;lt;br/&amp;gt; mul    r10&amp;lt;br/&amp;gt; shr    rdx, 9&amp;lt;br/&amp;gt; imul   edx, 514 ; 00000202H&amp;lt;br/&amp;gt; sub    r11d, edx&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;% 257&amp;lt;br/&amp;gt; mov    r11d, r10 ; masked diagonal&amp;lt;br/&amp;gt; mov    rax, ff00ff00ff00ff01H&amp;lt;br/&amp;gt; mul    r10&amp;lt;br/&amp;gt; shr    rdx, 8&amp;lt;br/&amp;gt; imul   edx, 257 ; 00000101H&amp;lt;br/&amp;gt; sub    r11d, edx&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.text  {font-family:monospace;}
.text .imp {font-weight: bold; color: red;}
.text span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;text&quot;&gt;Code:
% 514
 mov    r11d, r10 ; masked diagonal
 mov    rax, ff00ff00ff00ff01H
 mul    r10
 shr    rdx, 9
 imul   edx, 514 ; 00000202H
 sub    r11d, edx
&amp;nbsp;
% 257
 mov    r11d, r10 ; masked diagonal
 mov    rax, ff00ff00ff00ff01H
 mul    r10
 shr    rdx, 8
 imul   edx, 257 ; 00000101H
 sub    r11d, edx&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:2 --&gt;&lt;!-- ws:start:WikiTextHeadingRule:49:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc5&quot;&gt;&lt;a name=&quot;Modulo vs. Multiplication-Multiplication&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:49 --&gt;Multiplication&lt;/h2&gt;
 A Kindergarten like approach might look like this (not considering &lt;a class=&quot;wiki_link&quot; href=&quot;/First%20Rank%20Attacks#TheOuterSquares&quot;&gt;inner six bits&lt;/a&gt;):&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:3:
&amp;lt;pre class=&amp;quot;text&amp;quot;&amp;gt;U64 arrDiagonalAttacks[256][64];  // 128 K&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;U64 diagonalAttacks(U64 occ, enumSquare sq) {&amp;lt;br/&amp;gt;   occ = (diagonalMask[sq] &amp;amp;amp; occ) * C64(0x0101010101010101) &amp;amp;gt;&amp;amp;gt; 56;&amp;lt;br/&amp;gt;   return arrDiagonalAttacks[occ][sq];&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.text  {font-family:monospace;}
.text .imp {font-weight: bold; color: red;}
.text span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;text&quot;&gt;U64 arrDiagonalAttacks[256][64];  // 128 K
&amp;nbsp;
U64 diagonalAttacks(U64 occ, enumSquare sq) {
   occ = (diagonalMask[sq] &amp;amp; occ) * C64(0x0101010101010101) &amp;gt;&amp;gt; 56;
   return arrDiagonalAttacks[occ][sq];
}&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:3 --&gt;and uses one 64*64=64-bit multiplication, with this &lt;a class=&quot;wiki_link&quot; href=&quot;/x86-64&quot;&gt;x86-64&lt;/a&gt; assembly for calculating an eight-bit occupied index:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:4:
&amp;lt;pre class=&amp;quot;text&amp;quot;&amp;gt; mov    rax, 0101010101010101H&amp;lt;br/&amp;gt; imul   rdx, rax&amp;lt;br/&amp;gt; shr    rdx, 56&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.text  {font-family:monospace;}
.text .imp {font-weight: bold; color: red;}
.text span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;text&quot;&gt; mov    rax, 0101010101010101H
 imul   rdx, rax
 shr    rdx, 56&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:4 --&gt;Even &lt;a class=&quot;wiki_link&quot; href=&quot;/Kindergarten%20Bitboards#FileAttacks&quot;&gt;Kindergarten File-Attacks&lt;/a&gt; are cheaper and faster, not to mention &lt;a class=&quot;wiki_link&quot; href=&quot;/Magic%20Bitboards&quot;&gt;Magic Bitboards&lt;/a&gt;, which covers two lines of a rook or bishop in one run.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:51:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc6&quot;&gt;&lt;a name=&quot;Fenner&#039;s and Levene&#039;s conclusion&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:51 --&gt;Fenner&#039;s and Levene&#039;s conclusion&lt;/h1&gt;
 Quote from their paper pp 11&lt;br /&gt;
&lt;strong&gt;&lt;tt&gt;3.5. Comparison with other Methods&lt;/tt&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;ul class=&quot;quotelist&quot;&gt;&lt;li&gt;&lt;tt&gt;As reported in Hyatt (2007), the rotated and magic bitboard methods are of comparable performance, and Tannous (2007) claims just a small improvement of the direct lookup method over rotated bitboards. It is easy to see that, in terms of the number of computer operations, the efficiency of our method will be similar to that of direct lookup. Thus we are justified in claiming that the computational efficiency of our method is comparable to the others.&lt;/tt&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
Their conclusion was based on following statement of &lt;a class=&quot;wiki_link&quot; href=&quot;/Robert%20Hyatt&quot;&gt;Robert Hyatt&lt;/a&gt; &lt;!-- ws:start:WikiTextRefRule:29:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.talkchess.com/forum/viewtopic.php?topic_view=threads&amp;amp;amp;p=140141&amp;amp;amp;t=16002&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Re: BitBoard Tests Magic v Non-Rotated 32 Bits v 64 Bits&amp;lt;/a&amp;gt; by &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Robert%20Hyatt&amp;quot;&amp;gt;Robert Hyatt&amp;lt;/a&amp;gt;, &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/CCC&amp;quot;&amp;gt;CCC&amp;lt;/a&amp;gt; August 25, 2007&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-4&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:29 --&gt; &lt;strong&gt;...&lt;/strong&gt;&lt;br /&gt;
&lt;ul class=&quot;quotelist&quot;&gt;&lt;li&gt;&lt;tt&gt;I had reported this earlier. Magic was no faster than rotated. I switched because of two things...&lt;/tt&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;ul class=&quot;quotelist&quot;&gt;&lt;li&gt;&lt;tt&gt;1. Magic is simpler, and simpler is better as I get older.&lt;/tt&gt;&lt;/li&gt;&lt;li&gt;&lt;tt&gt;2. Magic gives you the opportunity to update the occupied_squares and then generate moves easily.&lt;/tt&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;ul class=&quot;quotelist&quot;&gt;&lt;li&gt;&lt;tt&gt;To do this with rotated bitboards first requires that all rotated bitboards be updated in addition to the normal occupied_squares bitboard. This is faster, if you use the feature (I don&#039;t yet, but well might at times).&lt;/tt&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;strong&gt;...&lt;/strong&gt; and this claim of &lt;a class=&quot;wiki_link&quot; href=&quot;/Sam%20Tannous&quot;&gt;Sam Tannous&lt;/a&gt; &lt;!-- ws:start:WikiTextRefRule:37:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Sam%20Tannous&amp;quot;&amp;gt;Sam Tannous&amp;lt;/a&amp;gt; (&amp;lt;strong&amp;gt;2007&amp;lt;/strong&amp;gt;). &amp;lt;em&amp;gt;Avoiding Rotated Bitboards with Direct Lookup&amp;lt;/em&amp;gt;. &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/ICGA%20Journal#30_2&amp;quot;&amp;gt;ICGA Journal, Vol. 30, No. 2&amp;lt;/a&amp;gt;, pp. 85-91, &amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://arxiv.org/PS_cache/arxiv/pdf/0704/0704.3773v2.pdf&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;pdf&amp;lt;/a&amp;gt;&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-5&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:37 --&gt;:&lt;br /&gt;
&lt;ul class=&quot;quotelist&quot;&gt;&lt;li&gt;&lt;tt&gt;The results shown indicate that directly looking up the attacking moves for sliding pieces in hash tables improves the move generation speeds from 10% to 15% depending on computer architecture. Further efficiencies can be expected in a full implementation where the overhead of maintaining rotated bitboards is eliminated. The implementation and test code is made available in an Open-Source, interactive, chess programming module called “Shatranj” (Tannous, 2006).&lt;/tt&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:53:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc7&quot;&gt;&lt;a name=&quot;Publications&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:53 --&gt;Publications&lt;/h1&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://sun.aei.polsl.pl/~zjc/&quot; rel=&quot;nofollow&quot;&gt;Zbigniew J. Czech&lt;/a&gt;, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://itee.uq.edu.au/~havas/&quot; rel=&quot;nofollow&quot;&gt;George Havas&lt;/a&gt;, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.informatik.uni-trier.de/~ley/db/indices/a-tree/m/Majewski:Bohdan_S=.html&quot; rel=&quot;nofollow&quot;&gt;Bohdan S. Majewski&lt;/a&gt; (&lt;strong&gt;1997&lt;/strong&gt;). &lt;em&gt;Perfect Hashing&lt;/em&gt;. Theoretical Computer Science, Vol. 182, Nos. 1-2, pp. 1-143&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Trevor%20Fenner&quot;&gt;Trevor Fenner&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Mark%20Levene&quot;&gt;Mark Levene&lt;/a&gt; (&lt;strong&gt;2008&lt;/strong&gt;). &lt;em&gt;Move Generation with Perfect Hashing Functions.&lt;/em&gt; &lt;a class=&quot;wiki_link&quot; href=&quot;/ICGA%20Journal#31_1&quot;&gt;ICGA Journal, Vol. 31, No. 1&lt;/a&gt;, pp. 3-12. &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.dcs.bbk.ac.uk/~mark/download/bitboard_sliding_icga_final.pdf&quot; rel=&quot;nofollow&quot;&gt;pdf&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:55:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc8&quot;&gt;&lt;a name=&quot;Forum Posts&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:55 --&gt;Forum Posts&lt;/h1&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=20913&quot; rel=&quot;nofollow&quot;&gt;Nice Math - Strange Conclusions&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Gerd%20Isenberg&quot;&gt;Gerd Isenberg&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, April 29, 2008&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.open-aurec.com/wbforum/viewtopic.php?f=4&amp;amp;t=51996&quot; rel=&quot;nofollow&quot;&gt;Low memory usage attack bitboard generation&lt;/a&gt; by crystalclear, &lt;a class=&quot;wiki_link&quot; href=&quot;/Computer%20Chess%20Forums&quot;&gt;Winboard Forum&lt;/a&gt;, October 06, 2011&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:57:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc9&quot;&gt;&lt;a name=&quot;External Links&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:57 --&gt;External Links&lt;/h1&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/Congruence_relation&quot; rel=&quot;nofollow&quot;&gt;Congruence relation from Wikipedia&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/Linear_congruence_theorem&quot; rel=&quot;nofollow&quot;&gt;Linear congruence theorem from Wikipedia&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/Modular_arithmetic&quot; rel=&quot;nofollow&quot;&gt;Modular arithmetic from Wikipedia&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/Modulo_operation&quot; rel=&quot;nofollow&quot;&gt;Modulo operation from Wikipedia&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:59:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc10&quot;&gt;&lt;a name=&quot;References&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:59 --&gt;References&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextReferencesRule:284:&amp;amp;lt;references /&amp;amp;gt; --&gt;&lt;ol class=&quot;references&quot;&gt;
&lt;li id=&quot;cite_note-1&quot;&gt;&lt;a href=&quot;#cite_ref-1&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link&quot; href=&quot;/Trevor%20Fenner&quot;&gt;Trevor Fenner&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Mark%20Levene&quot;&gt;Mark Levene&lt;/a&gt; (&lt;strong&gt;2008&lt;/strong&gt;). &lt;em&gt;Move Generation with Perfect Hashing Functions.&lt;/em&gt; &lt;a class=&quot;wiki_link&quot; href=&quot;/ICGA%20Journal#31_1&quot;&gt;ICGA Journal, Vol. 31, No. 1&lt;/a&gt;, pp. 3-12. &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.dcs.bbk.ac.uk/~mark/download/bitboard_sliding_icga_final.pdf&quot; rel=&quot;nofollow&quot;&gt;pdf&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;cite_note-2&quot;&gt;&lt;a href=&quot;#cite_ref-2&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=20913&quot; rel=&quot;nofollow&quot;&gt;Nice Math - Strange Conclusions&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Gerd%20Isenberg&quot;&gt;Gerd Isenberg&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, April 29, 2008&lt;/li&gt;
&lt;li id=&quot;cite_note-3&quot;&gt;&lt;a href=&quot;#cite_ref-3&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.open-aurec.com/wbforum/viewtopic.php?f=4&amp;amp;t=51996&quot; rel=&quot;nofollow&quot;&gt;Low memory usage attack bitboard generation&lt;/a&gt; by crystalclear, &lt;a class=&quot;wiki_link&quot; href=&quot;/Computer%20Chess%20Forums&quot;&gt;Winboard Forum&lt;/a&gt;, October 06, 2011&lt;/li&gt;
&lt;li id=&quot;cite_note-4&quot;&gt;&lt;a href=&quot;#cite_ref-4&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?topic_view=threads&amp;amp;p=140141&amp;amp;t=16002&quot; rel=&quot;nofollow&quot;&gt;Re: BitBoard Tests Magic v Non-Rotated 32 Bits v 64 Bits&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Robert%20Hyatt&quot;&gt;Robert Hyatt&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt; August 25, 2007&lt;/li&gt;
&lt;li id=&quot;cite_note-5&quot;&gt;&lt;a href=&quot;#cite_ref-5&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link&quot; href=&quot;/Sam%20Tannous&quot;&gt;Sam Tannous&lt;/a&gt; (&lt;strong&gt;2007&lt;/strong&gt;). &lt;em&gt;Avoiding Rotated Bitboards with Direct Lookup&lt;/em&gt;. &lt;a class=&quot;wiki_link&quot; href=&quot;/ICGA%20Journal#30_2&quot;&gt;ICGA Journal, Vol. 30, No. 2&lt;/a&gt;, pp. 85-91, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://arxiv.org/PS_cache/arxiv/pdf/0704/0704.3773v2.pdf&quot; rel=&quot;nofollow&quot;&gt;pdf&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;!-- ws:end:WikiTextReferencesRule:284 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:61:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc11&quot;&gt;&lt;a name=&quot;What links here?&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:61 --&gt;What links here?&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextIncludeRule:05:&amp;lt;img src=&amp;quot;https://www.wikispaces.com/site/embedthumbnail/include/backlinks?w=200&amp;amp;h=100&amp;quot; class=&amp;quot;WikiMedia WikiMediaInclude&amp;quot; id=&amp;quot;wikitext@@include@@page=&amp;amp;quot;Congruent Modulo Bitboards&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;10&amp;amp;quot;&amp;quot; title=&amp;quot;Include backlinks: page=&amp;amp;quot;Congruent Modulo Bitboards&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;10&amp;amp;quot;&amp;quot; /&amp;gt; --&gt;&lt;div class=&quot;includeBody-Congruent_Modulo_Bitboards includeBody-Congruent%20Modulo%20Bitboards includeBody&quot;&gt;&lt;table class=&quot;includeBacklinks&quot;&gt;
  &lt;thead&gt;
    &lt;tr class=&quot;includeBacklinksHeading&quot;&gt;
      &lt;th class=&quot;includeBacklinksPageHeading&quot;&gt;Page&lt;/th&gt;
      &lt;th class=&quot;includeBacklinksDateHeading&quot;&gt;Date Edited&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
    &lt;tbody&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Congruent+Modulo+Bitboards&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Congruent Modulo Bitboards&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jun 26, 2013&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Efficient+Generation+of+Sliding+Piece+Attacks&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Efficient Generation of Sliding Piece Attacks&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 5, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/General+Setwise+Operations&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;General Setwise Operations&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Feb 25, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Hash+Table&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Hash Table&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 1, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/ICGA+Journal&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;ICGA Journal&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 21, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Mark+Levene&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Mark Levene&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jun 2, 2015&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Sliding+Piece+Attacks&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Sliding Piece Attacks&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;May 27, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Trevor+Fenner&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Trevor Fenner&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jun 2, 2015&lt;/td&gt;
    &lt;/tr&gt;
      &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;&lt;!-- ws:end:WikiTextIncludeRule:05 --&gt;&lt;br /&gt;
&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Sliding%20Piece%20Attacks&quot;&gt;Up one Level&lt;/a&gt;&lt;/strong&gt;</description>
          </item>
    <item>
      <title>Defended Pawns (Bitboards)</title>
      <link>https://chessprogramming.wikispaces.com/Defended+Pawns+%28Bitboards%29</link>
      <dc:creator>GerdIsenberg</dc:creator>
      <guid isPermaLink="true">https://chessprogramming.wikispaces.com/Defended+Pawns+%28Bitboards%29</guid>
      <comments>https://chessprogramming.wikispaces.com/page/messages/Defended+Pawns+%28Bitboards%29</comments>
      <pubDate>Fri, 27 Feb 2015 14:46:51 GMT</pubDate>
      <description>&lt;!-- ws:start:WikiTextTocRule:23:&amp;lt;img id=&amp;quot;wikitext@@toc@@normal&amp;quot; class=&amp;quot;WikiMedia WikiMediaToc&amp;quot; title=&amp;quot;Table of Contents&amp;quot; src=&amp;quot;/site/embedthumbnail/toc/normal?w=225&amp;amp;h=100&amp;quot;/&amp;gt; --&gt;&lt;div id=&quot;toc&quot;&gt;&lt;h1 class=&quot;nopad&quot;&gt;Table of Contents&lt;/h1&gt;&lt;!-- ws:end:WikiTextTocRule:23 --&gt;&lt;!-- ws:start:WikiTextTocRule:24: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Defended&quot;&gt;Defended&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:24 --&gt;&lt;!-- ws:start:WikiTextTocRule:25: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Defenders&quot;&gt;Defenders&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:25 --&gt;&lt;!-- ws:start:WikiTextTocRule:26: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Defended Defenders&quot;&gt;Defended Defenders&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:26 --&gt;&lt;!-- ws:start:WikiTextTocRule:27: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Not Defended Defenders&quot;&gt;Not Defended Defenders&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:27 --&gt;&lt;!-- ws:start:WikiTextTocRule:28: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Not Defending Defended&quot;&gt;Not Defending Defended&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:28 --&gt;&lt;!-- ws:start:WikiTextTocRule:29: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Forum Posts&quot;&gt;Forum Posts&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:29 --&gt;&lt;!-- ws:start:WikiTextTocRule:30: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#What links here?&quot;&gt;What links here?&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:30 --&gt;&lt;!-- ws:start:WikiTextTocRule:31: --&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:31 --&gt;&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Home&quot;&gt;Home&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Board%20Representation&quot;&gt;Board Representation&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Bitboards&quot;&gt;Bitboards&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Pattern%20and%20Properties&quot;&gt;Pawn Pattern and Properties&lt;/a&gt; * Defended Pawns&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Working in the bitboard centric world to determine pawn related pattern set-wise.&lt;br /&gt;
&lt;br /&gt;
Each pawn, member of the own &lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Attacks%20%28Bitboards%29&quot;&gt;pawn attack set&lt;/a&gt; is obviously defended by a pawn, thus likely not a winning capture target for opponent pieces (except pawns). If a defended pawn is &lt;a class=&quot;wiki_link&quot; href=&quot;/Open%20Pawns%20%28Bitboards%29&quot;&gt;open&lt;/a&gt;, opponent rooks on &lt;a class=&quot;wiki_link&quot; href=&quot;/Pawns%20and%20Files%20%28Bitboards%29#HalfopenFiles&quot;&gt;half-open&lt;/a&gt; files bang one&#039;s head against a brick wall.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextAnchorRule:32:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@Defended&amp;quot; title=&amp;quot;Anchor: Defended&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;Defended&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:32 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:9:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc0&quot;&gt;&lt;a name=&quot;Defended&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:9 --&gt;Defended&lt;/h1&gt;
 Again, it is advantageous to keep disjoint east-west attack sets for a unique 1:1 source-target relationship. On demand we can use the union or intersection on the fly. Note that attack direction is related to the target square. East attack is from south/north-west to north/south-east&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:0:
&amp;lt;pre class=&amp;quot;text&amp;quot;&amp;gt;white pawns         defended            defended&amp;lt;br/&amp;gt;                    from west -&amp;amp;gt;        from east &amp;amp;lt;-&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . 1 . . .     . . . . 1 . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . 1 . . 1 .     . . . 1 . . . .     . . . . . . 1 .&amp;lt;br/&amp;gt;. . 1 . . . . 1     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.text  {font-family:monospace;}
.text .imp {font-weight: bold; color: red;}
.text span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;text&quot;&gt;white pawns         defended            defended
                    from west -&amp;gt;        from east &amp;lt;-
. . . . . . . .     . . . . . . . .     . . . . . . . .
. . . . . . . .     . . . . . . . .     . . . . . . . .
. . . . 1 . . .     . . . . 1 . . .     . . . . . . . .
. . . 1 . . 1 .     . . . 1 . . . .     . . . . . . 1 .
. . 1 . . . . 1     . . . . . . . .     . . . . . . . .
. . . . . . . .     . . . . . . . .     . . . . . . . .
. . . . . . . .     . . . . . . . .     . . . . . . . .
. . . . . . . .     . . . . . . . .     . . . . . . . .&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:0 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:1:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;U64 wPawnDefendedFromWest(U64 wpawns) {&amp;lt;br/&amp;gt;   return wpawns &amp;amp;amp; wPawnEastAttacks(wpawns);&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;U64 wPawnDefendedFromEast(U64 wpawns) {&amp;lt;br/&amp;gt;   return wpawns &amp;amp;amp; wPawnWestAttacks(wpawns);&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;U64 wPawnDefendedFromWest&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 wpawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; wpawns &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; wPawnEastAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;wpawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
U64 wPawnDefendedFromEast&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 wpawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; wpawns &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; wPawnWestAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;wpawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:1 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextAnchorRule:33:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@Defenders&amp;quot; title=&amp;quot;Anchor: Defenders&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;Defenders&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:33 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:11:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc1&quot;&gt;&lt;a name=&quot;Defenders&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:11 --&gt;Defenders&lt;/h1&gt;
 To get the set of defenders on the fly, we use the intersection of white pawns with it&#039;s &amp;quot;black&amp;quot; attacks:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:2:
&amp;lt;pre class=&amp;quot;text&amp;quot;&amp;gt;white pawns         defenders           defenders&amp;lt;br/&amp;gt;                    from west           from east&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . 1 . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . 1 . . 1 .     . . . 1 . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . 1 . . . . 1     . . 1 . . . . .     . . . . . . . 1&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.text  {font-family:monospace;}
.text .imp {font-weight: bold; color: red;}
.text span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;text&quot;&gt;white pawns         defenders           defenders
                    from west           from east
. . . . . . . .     . . . . . . . .     . . . . . . . .
. . . . . . . .     . . . . . . . .     . . . . . . . .
. . . . 1 . . .     . . . . . . . .     . . . . . . . .
. . . 1 . . 1 .     . . . 1 . . . .     . . . . . . . .
. . 1 . . . . 1     . . 1 . . . . .     . . . . . . . 1
. . . . . . . .     . . . . . . . .     . . . . . . . .
. . . . . . . .     . . . . . . . .     . . . . . . . .
. . . . . . . .     . . . . . . . .     . . . . . . . .&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:2 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:3:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;U64 wPawnDefendersFromWest(U64 wpawns) {&amp;lt;br/&amp;gt;   return wpawns &amp;amp;amp; bPawnWestAttacks(wpawns);&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;U64 wPawnDefendersFromEast(U64 wpawns) {&amp;lt;br/&amp;gt;   return wpawns &amp;amp;amp; bPawnEastAttacks(wpawns);&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;U64 wPawnDefendersFromWest&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 wpawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; wpawns &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; bPawnWestAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;wpawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
U64 wPawnDefendersFromEast&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 wpawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; wpawns &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; bPawnEastAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;wpawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:3 --&gt;Otherwise, if the set of defenders was already determined (or vice versa), we can already take advantage of the unique target/source relation ship:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:4:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;wPawnDefendersFromWest = wPawnDefendedFromWest &amp;amp;gt;&amp;amp;gt; 9;&amp;lt;br/&amp;gt;wPawnDefendersFromEast = wPawnDefendedFromEast &amp;amp;gt;&amp;amp;gt; 7;&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;wPawnDefendersFromWest &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; wPawnDefendedFromWest &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
wPawnDefendersFromEast &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; wPawnDefendedFromEast &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:4 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextAnchorRule:34:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@DefendedDefenders&amp;quot; title=&amp;quot;Anchor: DefendedDefenders&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;DefendedDefenders&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:34 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:13:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc2&quot;&gt;&lt;a name=&quot;Defended Defenders&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:13 --&gt;Defended Defenders&lt;/h1&gt;
 Defended defenders already are the inner pawns of a at least &lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20chain&quot;&gt;triple-chain&lt;/a&gt;, the d5 pawn for instance:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:5:
&amp;lt;pre class=&amp;quot;text&amp;quot;&amp;gt;white pawns         defended            defended&amp;lt;br/&amp;gt;                    from west           from east&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . 1 . . .     . . . . 1 . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . 1 . . 1 .     . . . 1 . . . .     . . . . . . 1 .&amp;lt;br/&amp;gt;. . 1 . . . . 1     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;white pawns         defenders           defenders&amp;lt;br/&amp;gt;                    from west           from east&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . 1 . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . 1 . . 1 .     . . . 1 . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . 1 . . . . 1     . . 1 . . . . .     . . . . . . . 1&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;                    defenders and       defenders and&amp;lt;br/&amp;gt;white pawns         defended            defended&amp;lt;br/&amp;gt;                    from west           from east&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . 1 . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . 1 . . 1 .     . . . 1 . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . 1 . . . . 1     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.text  {font-family:monospace;}
.text .imp {font-weight: bold; color: red;}
.text span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;text&quot;&gt;white pawns         defended            defended
                    from west           from east
. . . . . . . .     . . . . . . . .     . . . . . . . .
. . . . . . . .     . . . . . . . .     . . . . . . . .
. . . . 1 . . .     . . . . 1 . . .     . . . . . . . .
. . . 1 . . 1 .     . . . 1 . . . .     . . . . . . 1 .
. . 1 . . . . 1     . . . . . . . .     . . . . . . . .
. . . . . . . .     . . . . . . . .     . . . . . . . .
. . . . . . . .     . . . . . . . .     . . . . . . . .
. . . . . . . .     . . . . . . . .     . . . . . . . .
&amp;nbsp;
white pawns         defenders           defenders
                    from west           from east
. . . . . . . .     . . . . . . . .     . . . . . . . .
. . . . . . . .     . . . . . . . .     . . . . . . . .
. . . . 1 . . .     . . . . . . . .     . . . . . . . .
. . . 1 . . 1 .     . . . 1 . . . .     . . . . . . . .
. . 1 . . . . 1     . . 1 . . . . .     . . . . . . . 1
. . . . . . . .     . . . . . . . .     . . . . . . . .
. . . . . . . .     . . . . . . . .     . . . . . . . .
. . . . . . . .     . . . . . . . .     . . . . . . . .
&amp;nbsp;
                    defenders and       defenders and
white pawns         defended            defended
                    from west           from east
. . . . . . . .     . . . . . . . .     . . . . . . . .
. . . . . . . .     . . . . . . . .     . . . . . . . .
. . . . 1 . . .     . . . . . . . .     . . . . . . . .
. . . 1 . . 1 .     . . . 1 . . . .     . . . . . . . .
. . 1 . . . . 1     . . . . . . . .     . . . . . . . .
. . . . . . . .     . . . . . . . .     . . . . . . . .
. . . . . . . .     . . . . . . . .     . . . . . . . .
. . . . . . . .     . . . . . . . .     . . . . . . . .&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:5 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextAnchorRule:35:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@NotDefendedDefenders&amp;quot; title=&amp;quot;Anchor: NotDefendedDefenders&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;NotDefendedDefenders&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:35 --&gt; &lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:15:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc3&quot;&gt;&lt;a name=&quot;Not Defended Defenders&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:15 --&gt;Not Defended Defenders&lt;/h1&gt;
 Not defended defenders are the base of a &lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20chain&quot;&gt;chain&lt;/a&gt; - target of opponent attacks:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:6:
&amp;lt;pre class=&amp;quot;text&amp;quot;&amp;gt;                    not defended        not defended&amp;lt;br/&amp;gt;white pawns         defenders           defenders&amp;lt;br/&amp;gt;                    from west           from east&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . 1 . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . 1 . . 1 .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . 1 . . . . 1     . . 1 . . . . .     . . . . . . . 1&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.text  {font-family:monospace;}
.text .imp {font-weight: bold; color: red;}
.text span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;text&quot;&gt;                    not defended        not defended
white pawns         defenders           defenders
                    from west           from east
. . . . . . . .     . . . . . . . .     . . . . . . . .
. . . . . . . .     . . . . . . . .     . . . . . . . .
. . . . 1 . . .     . . . . . . . .     . . . . . . . .
. . . 1 . . 1 .     . . . . . . . .     . . . . . . . .
. . 1 . . . . 1     . . 1 . . . . .     . . . . . . . 1
. . . . . . . .     . . . . . . . .     . . . . . . . .
. . . . . . . .     . . . . . . . .     . . . . . . . .
. . . . . . . .     . . . . . . . .     . . . . . . . .&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:6 --&gt;&lt;!-- ws:start:WikiTextAnchorRule:36:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@NotDefendingDefended&amp;quot; title=&amp;quot;Anchor: NotDefendingDefended&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;NotDefendingDefended&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:36 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:17:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc4&quot;&gt;&lt;a name=&quot;Not Defending Defended&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:17 --&gt;Not Defending Defended&lt;/h1&gt;
 Defended pawns not defending other pawns are likely the peak of a &lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20chain&quot;&gt;chain&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:7:
&amp;lt;pre class=&amp;quot;text&amp;quot;&amp;gt;                    not defending       not defending&amp;lt;br/&amp;gt;white pawns         defended            defended&amp;lt;br/&amp;gt;                    from west           from east&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . 1 . . .     . . . . 1 . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . 1 . . 1 .     . . . . . . . .     . . . . . . 1 .&amp;lt;br/&amp;gt;. . 1 . . . . 1     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.text  {font-family:monospace;}
.text .imp {font-weight: bold; color: red;}
.text span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;text&quot;&gt;                    not defending       not defending
white pawns         defended            defended
                    from west           from east
. . . . . . . .     . . . . . . . .     . . . . . . . .
. . . . . . . .     . . . . . . . .     . . . . . . . .
. . . . 1 . . .     . . . . 1 . . .     . . . . . . . .
. . . 1 . . 1 .     . . . . . . . .     . . . . . . 1 .
. . 1 . . . . 1     . . . . . . . .     . . . . . . . .
. . . . . . . .     . . . . . . . .     . . . . . . . .
. . . . . . . .     . . . . . . . .     . . . . . . . .
. . . . . . . .     . . . . . . . .     . . . . . . . .&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:7 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:19:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc5&quot;&gt;&lt;a name=&quot;Forum Posts&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:19 --&gt;Forum Posts&lt;/h1&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=55477&quot; rel=&quot;nofollow&quot;&gt;pattern coding in bitboards&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Pawel%20Koziol&quot;&gt;Pawel Koziol&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, February 26, 2015 » &lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20chain&quot;&gt;Pawn chain&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:21:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc6&quot;&gt;&lt;a name=&quot;What links here?&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:21 --&gt;What links here?&lt;/h1&gt;
&lt;!-- ws:start:WikiTextIncludeRule:08:&amp;lt;img src=&amp;quot;https://www.wikispaces.com/site/embedthumbnail/include/backlinks?w=200&amp;amp;h=100&amp;quot; class=&amp;quot;WikiMedia WikiMediaInclude&amp;quot; id=&amp;quot;wikitext@@include@@page=&amp;amp;quot;Defended Pawns (Bitboards)&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;10&amp;amp;quot;&amp;quot; title=&amp;quot;Include backlinks: page=&amp;amp;quot;Defended Pawns (Bitboards)&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;10&amp;amp;quot;&amp;quot; /&amp;gt; --&gt;&lt;div class=&quot;includeBody-Defended_Pawns_(Bitboards) includeBody-Defended%20Pawns%20%28Bitboards%29 includeBody&quot;&gt;&lt;table class=&quot;includeBacklinks&quot;&gt;
  &lt;thead&gt;
    &lt;tr class=&quot;includeBacklinksHeading&quot;&gt;
      &lt;th class=&quot;includeBacklinksPageHeading&quot;&gt;Page&lt;/th&gt;
      &lt;th class=&quot;includeBacklinksDateHeading&quot;&gt;Date Edited&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
    &lt;tfoot class=&quot;includeBacklinksFooter&quot;&gt;
    &lt;tr&gt;
      &lt;td colspan=&quot;5&quot;&gt;&lt;a href=&quot;https://chessprogramming.wikispaces.com/page/links/Defended+Pawns+%28Bitboards%29&quot;&gt;More Links&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tfoot&gt;
    &lt;tbody&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Connected+Passed+Pawns&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Connected Passed Pawns&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 27, 2015&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Dartmouth+CP&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Dartmouth CP&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 19, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Defended+Pawns+%28Bitboards%29&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Defended Pawns (Bitboards)&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Feb 27, 2015&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Demolito&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Demolito&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 1, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Gk&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Gk&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Oct 9, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Pawel+Koziol&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Pawel Koziol&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 17, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Pawn+chain&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Pawn chain&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 17, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Pawn+Levers+%28Bitboards%29&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Pawn Levers (Bitboards)&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 11, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Pawn+Pattern+and+Properties&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Pawn Pattern and Properties&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 11, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Protected+Passed+Pawn&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Protected Passed Pawn&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jun 7, 2012&lt;/td&gt;
    &lt;/tr&gt;
      &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;&lt;!-- ws:end:WikiTextIncludeRule:08 --&gt;&lt;br /&gt;
&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Pattern%20and%20Properties&quot;&gt;Up one Level&lt;/a&gt;&lt;/strong&gt;</description>
          </item>
    <item>
      <title>Design Principles</title>
      <link>https://chessprogramming.wikispaces.com/Design+Principles</link>
      <dc:creator>GerdIsenberg</dc:creator>
      <guid isPermaLink="true">https://chessprogramming.wikispaces.com/Design+Principles</guid>
      <comments>https://chessprogramming.wikispaces.com/page/messages/Design+Principles</comments>
      <pubDate>Wed, 17 Jan 2018 18:50:12 GMT</pubDate>
      <description>&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Home&quot;&gt;Home&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Board%20Representation&quot;&gt;Board Representation&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Bitboards&quot;&gt;Bitboards&lt;/a&gt; * Design Principles&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
By &lt;a class=&quot;wiki_link&quot; href=&quot;/Steffan%20Westcott&quot;&gt;Steffan Westcott&lt;/a&gt; &lt;!-- ws:start:WikiTextRefRule:3:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.stmintz.com/ccc/index.php?id=261259&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Bitboard algorithm design principles&amp;lt;/a&amp;gt; by &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Steffan%20Westcott&amp;quot;&amp;gt;Steffan Westcott&amp;lt;/a&amp;gt;, &amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/CCC&amp;quot;&amp;gt;CCC&amp;lt;/a&amp;gt;, October 23, 2002&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-1&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:3 --&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;tt&gt;I should add that these techniques (&lt;a class=&quot;wiki_link&quot; href=&quot;/Kogge-Stone%20Algorithm&quot;&gt;Kogge-Stone&lt;/a&gt;) are designed to take advantage of the parallel nature of bitboards, in that they consider the entire board. Here, routines like RookMovesUp() will calculate the upward rook moves of all friendly rooks.&lt;/tt&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;tt&gt;In general, I first identify a (bit) pattern of interest, then devise methods for recognising all instances of that pattern on the board. Pattern instances are counted as late as possible, if at all. The complexity of the patterns varies greatly. Simple ones are like &lt;a class=&quot;wiki_link&quot; href=&quot;/Open%20file&quot;&gt;OpenFiles()&lt;/a&gt;, UnmovedRooks(), &lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Attacks%20%28Bitboards%29&quot;&gt;PawnAttacks()&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Rams%20%28Bitboards%29&quot;&gt;PawnRams()&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Duo%20Trio%20Quart%20%28Bitboards%29&quot;&gt;PawnDuos()&lt;/a&gt;, KingIsUpRight(). Medium complexity are ones like ConnectedRooks(), RooksCanCastle(), OnKingDiagonal(), NearKingDiagonal(), &lt;a class=&quot;wiki_link&quot; href=&quot;/Outposts&quot;&gt;OutPost()&lt;/a&gt;. Complex examples are &lt;a class=&quot;wiki_link&quot; href=&quot;/Fortress&quot;&gt;Fortress()&lt;/a&gt;, PawnMass(), &lt;a class=&quot;wiki_link&quot; href=&quot;/King%20Safety#PawnStorm&quot;&gt;PawnStorm()&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Backward%20Pawns%20%28Bitboards%29&quot;&gt;BackwardPawns()&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Material#Signature&quot;&gt;MaterialSignature()&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Square%20Control&quot;&gt;WeakSquareControl()&lt;/a&gt;, StrongSquareControl(), &lt;a class=&quot;wiki_link&quot; href=&quot;/Space&quot;&gt;SpaceBehindPawnFront()&lt;/a&gt;, StrongKnightOutposts(), &lt;a class=&quot;wiki_link&quot; href=&quot;/Fianchetto&quot;&gt;StrongFianchettoedBishops()&lt;/a&gt;, WeakWhiteSquares(), &lt;a class=&quot;wiki_link&quot; href=&quot;/King%20Safety#PawnShield&quot;&gt;KingShelter()&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Game%20Phases&quot;&gt;GamePhase()&lt;/a&gt;.&lt;/tt&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;tt&gt;Often the more complex patterns are combinations of the simpler ones. In fact, the chess position itself can be viewed as composed of &#039;primitive&#039; or &#039;atomic&#039; patterns (bitboards). Most of the simpler patterns are returned as bitboards, where set bits indicate a (bit) pattern match. This is fine where simple square-centric patterns are sought, and a yes/no for each square is sufficient.&lt;/tt&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;tt&gt;Complex patterns like KingShelter() and GamePhase() are really functions which classify (group together) general patterns spread across the whole board, eg. KingShelter() classifies the pawn structure near the king (matches against a large pattern set), MaterialSignature() returns things like BNbn to classify the material balance.&lt;/tt&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;tt&gt;Just considering the simple patterns, if your engine deals with pattern instances in a serial fashion (strictly one at a time), the algorithm requirements are sufficiently different that an alternative may be better eg. rotated bitboard table lookups, or perhaps even a different board representation altogether. To my mind, the major reason to use bitboards in the first place is to find many pattern instances quickly. In summary, I would advise that my algorithms are no magic bullet - They are better judged in the wider context of your engine design and target architecture.&lt;/tt&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:5:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc0&quot;&gt;&lt;a name=&quot;Rererences&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:5 --&gt;Rererences&lt;/h1&gt;
&lt;!-- ws:start:WikiTextReferencesRule:59:&amp;amp;lt;references /&amp;amp;gt; --&gt;&lt;ol class=&quot;references&quot;&gt;
&lt;li id=&quot;cite_note-1&quot;&gt;&lt;a href=&quot;#cite_ref-1&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.stmintz.com/ccc/index.php?id=261259&quot; rel=&quot;nofollow&quot;&gt;Bitboard algorithm design principles&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Steffan%20Westcott&quot;&gt;Steffan Westcott&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, October 23, 2002&lt;/li&gt;
&lt;/ol&gt;&lt;!-- ws:end:WikiTextReferencesRule:59 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:7:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc1&quot;&gt;&lt;a name=&quot;What links here?&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:7 --&gt;What links here?&lt;/h1&gt;
&lt;!-- ws:start:WikiTextIncludeRule:00:&amp;lt;img src=&amp;quot;https://www.wikispaces.com/site/embedthumbnail/include/backlinks?w=200&amp;amp;h=100&amp;quot; class=&amp;quot;WikiMedia WikiMediaInclude&amp;quot; id=&amp;quot;wikitext@@include@@page=&amp;amp;quot;Design Principles&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;40&amp;amp;quot;&amp;quot; title=&amp;quot;Include backlinks: page=&amp;amp;quot;Design Principles&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;40&amp;amp;quot;&amp;quot; /&amp;gt; --&gt;&lt;div class=&quot;includeBody-Design_Principles includeBody-Design%20Principles includeBody&quot;&gt;&lt;table class=&quot;includeBacklinks&quot;&gt;
  &lt;thead&gt;
    &lt;tr class=&quot;includeBacklinksHeading&quot;&gt;
      &lt;th class=&quot;includeBacklinksPageHeading&quot;&gt;Page&lt;/th&gt;
      &lt;th class=&quot;includeBacklinksDateHeading&quot;&gt;Date Edited&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
    &lt;tbody&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Bitboards&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Bitboards&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 14, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Chunking&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Chunking&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jun 12, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Design+Principles&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Design Principles&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 17, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Kogge-Stone+Algorithm&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Kogge-Stone Algorithm&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Sep 17, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Pattern+Recognition&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Pattern Recognition&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Sep 8, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Steffan+Westcott&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Steffan Westcott&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 21, 2014&lt;/td&gt;
    &lt;/tr&gt;
      &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;&lt;!-- ws:end:WikiTextIncludeRule:00 --&gt;&lt;br /&gt;
&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Bitboards&quot;&gt;Up one Level&lt;/a&gt;&lt;/strong&gt;</description>
          </item>
    <item>
      <title>DirGolem</title>
      <link>https://chessprogramming.wikispaces.com/DirGolem</link>
      <dc:creator>GerdIsenberg</dc:creator>
      <guid isPermaLink="true">https://chessprogramming.wikispaces.com/DirGolem</guid>
      <comments>https://chessprogramming.wikispaces.com/page/messages/DirGolem</comments>
      <pubDate>Sun, 05 Jun 2016 18:31:50 GMT</pubDate>
      <description>&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Home&quot;&gt;Home&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Board%20Representation&quot;&gt;Board Representation&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Move%20Generation&quot;&gt;Move Generation&lt;/a&gt; * DirGolem&lt;/strong&gt;&lt;br /&gt;


&lt;table class=&quot;wiki_table&quot;&gt;
    &lt;tr&gt;
        &lt;td&gt;&lt;!-- ws:start:WikiTextLocalImageRule:133:&amp;lt;a href=&amp;quot;http://en.wikipedia.org/wiki/File:Golem_1920_Poster.jpg&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;/file/view/Golem_1920_Poster.jpg/487177664/Golem_1920_Poster.jpg&amp;quot; alt=&amp;quot;&amp;quot; title=&amp;quot;&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt; --&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/File:Golem_1920_Poster.jpg&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;/file/view/Golem_1920_Poster.jpg/487177664/Golem_1920_Poster.jpg&quot; alt=&quot;Golem_1920_Poster.jpg&quot; title=&quot;Golem_1920_Poster.jpg&quot; /&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextLocalImageRule:133 --&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td rowspan=&quot;2&quot;&gt;&lt;strong&gt;DirGolem&lt;/strong&gt;,&lt;br /&gt;
Direction-wise Generation of &lt;a class=&quot;wiki_link&quot; href=&quot;/Legal%20Move&quot;&gt;Legal Moves&lt;/a&gt;, is best done with vectors of &lt;a class=&quot;wiki_link&quot; href=&quot;/Bitboards&quot;&gt;bitboards&lt;/a&gt; applying &lt;a class=&quot;wiki_link&quot; href=&quot;/AltiVec&quot;&gt;AltiVec&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/SSE2&quot;&gt;SSE2&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/AVX2&quot;&gt;AVX2&lt;/a&gt; or similar &lt;a class=&quot;wiki_link&quot; href=&quot;/SIMD%20and%20SWAR%20Techniques&quot;&gt;SIMD architectures&lt;/a&gt; with appropriate register sets. Legal moves are stored as target-bitboards for all 16 &lt;a class=&quot;wiki_link&quot; href=&quot;/Direction#MoveDirections&quot;&gt;move directions&lt;/a&gt; as a kind of unsorted &lt;a class=&quot;wiki_link&quot; href=&quot;/Move%20List&quot;&gt;move list&lt;/a&gt; inside the state of a &lt;a class=&quot;wiki_link&quot; href=&quot;/Node&quot;&gt;node&lt;/a&gt;. That are four orthogonal directions with rook-, queen- and king-moves including &lt;a class=&quot;wiki_link&quot; href=&quot;/Castling&quot;&gt;castling&lt;/a&gt; and vertical &lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Push&quot;&gt;pawn-pushes&lt;/a&gt;, four diagonal directions with bishop-, queen- and king-moves and pawn-captures including &lt;a class=&quot;wiki_link&quot; href=&quot;/En%20passant&quot;&gt;en passant&lt;/a&gt;, and eight knight directions.  Each &lt;a class=&quot;wiki_link&quot; href=&quot;/Target%20Square&quot;&gt;target square&lt;/a&gt; of each direction set has an unique one-to-one relation to it&#039;s &lt;a class=&quot;wiki_link&quot; href=&quot;/Origin%20Square&quot;&gt;source square&lt;/a&gt;.&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;The Golem &lt;!-- ws:start:WikiTextRefRule:7:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://en.wikipedia.org/wiki/The_Golem:_How_He_Came_into_the_World&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;The Golem: How He Came Into the World, from Wikipedia&amp;lt;/a&amp;gt;&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-1&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:7 --&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
    &lt;/tr&gt;
&lt;/table&gt;

&lt;!-- ws:start:WikiTextTocRule:45:&amp;lt;img id=&amp;quot;wikitext@@toc@@normal&amp;quot; class=&amp;quot;WikiMedia WikiMediaToc&amp;quot; title=&amp;quot;Table of Contents&amp;quot; src=&amp;quot;/site/embedthumbnail/toc/normal?w=225&amp;amp;h=100&amp;quot;/&amp;gt; --&gt;&lt;div id=&quot;toc&quot;&gt;&lt;h1 class=&quot;nopad&quot;&gt;Table of Contents&lt;/h1&gt;&lt;!-- ws:end:WikiTextTocRule:45 --&gt;&lt;!-- ws:start:WikiTextTocRule:46: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Prospect&quot;&gt;Prospect&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:46 --&gt;&lt;!-- ws:start:WikiTextTocRule:47: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Basics&quot;&gt;Basics&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:47 --&gt;&lt;!-- ws:start:WikiTextTocRule:48: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Move Target Sets&quot;&gt;Move Target Sets&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:48 --&gt;&lt;!-- ws:start:WikiTextTocRule:49: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Move Target Sets-Black Attacks&quot;&gt;Black Attacks&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:49 --&gt;&lt;!-- ws:start:WikiTextTocRule:50: --&gt;&lt;div style=&quot;margin-left: 3em;&quot;&gt;&lt;a href=&quot;#Move Target Sets-Black Attacks-Sliders &amp;amp; Super King&quot;&gt;Sliders &amp;amp; Super King&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:50 --&gt;&lt;!-- ws:start:WikiTextTocRule:51: --&gt;&lt;div style=&quot;margin-left: 3em;&quot;&gt;&lt;a href=&quot;#Move Target Sets-Black Attacks-None Sliding Pieces&quot;&gt;None Sliding Pieces&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:51 --&gt;&lt;!-- ws:start:WikiTextTocRule:52: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Move Target Sets-Generating White Moves&quot;&gt;Generating White Moves&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:52 --&gt;&lt;!-- ws:start:WikiTextTocRule:53: --&gt;&lt;div style=&quot;margin-left: 3em;&quot;&gt;&lt;a href=&quot;#Move Target Sets-Generating White Moves-In Check?&quot;&gt;In Check?&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:53 --&gt;&lt;!-- ws:start:WikiTextTocRule:54: --&gt;&lt;div style=&quot;margin-left: 3em;&quot;&gt;&lt;a href=&quot;#Move Target Sets-Generating White Moves-Sliding Pieces&quot;&gt;Sliding Pieces&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:54 --&gt;&lt;!-- ws:start:WikiTextTocRule:55: --&gt;&lt;div style=&quot;margin-left: 3em;&quot;&gt;&lt;a href=&quot;#Move Target Sets-Generating White Moves-None Sliding Pieces&quot;&gt;None Sliding Pieces&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:55 --&gt;&lt;!-- ws:start:WikiTextTocRule:56: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Move Target Sets-Finally&quot;&gt;Finally&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:56 --&gt;&lt;!-- ws:start:WikiTextTocRule:57: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#See also&quot;&gt;See also&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:57 --&gt;&lt;!-- ws:start:WikiTextTocRule:58: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Forum Posts&quot;&gt;Forum Posts&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:58 --&gt;&lt;!-- ws:start:WikiTextTocRule:59: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#External Links&quot;&gt;External Links&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:59 --&gt;&lt;!-- ws:start:WikiTextTocRule:60: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#References&quot;&gt;References&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:60 --&gt;&lt;!-- ws:start:WikiTextTocRule:61: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#What links here?&quot;&gt;What links here?&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:61 --&gt;&lt;!-- ws:start:WikiTextTocRule:62: --&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:62 --&gt;&lt;!-- ws:start:WikiTextHeadingRule:13:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc0&quot;&gt;&lt;a name=&quot;Prospect&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:13 --&gt;Prospect&lt;/h1&gt;
To get the idea, the following description with scalar &lt;a class=&quot;wiki_link&quot; href=&quot;/Cpp&quot;&gt;C++&lt;/a&gt; code intended as pseudo code, is a rough translation of &lt;a class=&quot;wiki_link&quot; href=&quot;/HansDamf&quot;&gt;HansDamf&#039;s&lt;/a&gt; intrinsic SSE2 code by &lt;a class=&quot;wiki_link&quot; href=&quot;/Gerd%20Isenberg&quot;&gt;Gerd Isenberg&lt;/a&gt;. It assumes White to move within a &lt;a class=&quot;wiki_link&quot; href=&quot;/Color%20Flipping&quot;&gt;color flipper&lt;/a&gt; approach. More information for a set-wise &lt;a class=&quot;wiki_link&quot; href=&quot;/Static%20Exchange%20Evaluation&quot;&gt;SEE&lt;/a&gt;, determining &lt;a class=&quot;wiki_link&quot; href=&quot;/Check&quot;&gt;check&lt;/a&gt; giving moves including &lt;a class=&quot;wiki_link&quot; href=&quot;/Discovered%20Check&quot;&gt;discovered checks&lt;/a&gt;, etc. may be collected and considered. There are zillions of implementation nuances to utilize up to 16 128-bit XMM-, 16 256-bit YMM (AVX2), or even &lt;a class=&quot;wiki_link&quot; href=&quot;/AVX-512&quot;&gt;AVX-512&lt;/a&gt; 32 512-bit ZMM-SIMD registers &lt;!-- ws:start:WikiTextRefRule:10:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://software.intel.com/en-us/blogs/2013/avx-512-instructions&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;AVX-512 instructions | Intel® Developer Zone&amp;lt;/a&amp;gt;,  by &amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://software.intel.com/en-us/user/335550&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;James Reinders&amp;lt;/a&amp;gt;, July 23, 2013&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-2&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:10 --&gt;. The generation is completely branch-less, does not use huge lookup tables, and is intended to hide the latency of a &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/Prefetching&quot; rel=&quot;nofollow&quot;&gt;prefetched&lt;/a&gt; &lt;a class=&quot;wiki_link&quot; href=&quot;/Transposition%20Table&quot;&gt;TT&lt;/a&gt; probe. However, picking any moves or move proposals like &lt;a class=&quot;wiki_link&quot; href=&quot;/Hash%20Move&quot;&gt;hash&lt;/a&gt;- or &lt;a class=&quot;wiki_link&quot; href=&quot;/Killer%20Move&quot;&gt;killer moves&lt;/a&gt; from that list is more expensive and is typically done by a &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/Finite-state_machine&quot; rel=&quot;nofollow&quot;&gt;finite state machine&lt;/a&gt; to ensure proper &lt;a class=&quot;wiki_link&quot; href=&quot;/Move%20Ordering&quot;&gt;move ordering&lt;/a&gt; considering &lt;a class=&quot;wiki_link&quot; href=&quot;/MVV-LVA&quot;&gt;MVV-LVA&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Hanging%20Piece&quot;&gt;hanging pieces&lt;/a&gt;, etc., as mentioned in &lt;a class=&quot;wiki_link&quot; href=&quot;/Pieces%20versus%20Directions#DirectionWise&quot;&gt;pieces versus directions&lt;/a&gt;. &lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:15:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc1&quot;&gt;&lt;a name=&quot;Basics&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:15 --&gt;Basics&lt;/h1&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/King%20Pattern#byCalculation&quot;&gt;King Attacks by Calculation&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Knight%20Pattern#MultipleKnightAttacks&quot;&gt;Multiple Knight Attacks&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Sliding%20Piece%20Attacks#Multiple&quot;&gt;Multiple Sliding Pieces&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#OneStepOnly&quot;&gt;One Step Only&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Checks%20and%20Pinned%20Pieces%20%28Bitboards%29#OppositeRay&quot;&gt;Opposite Ray-Directions&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Attacks%20%28Bitboards%29#PawnAttacks&quot;&gt;Pawn Attacks set-wise&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Pushes%20%28Bitboards%29#PawnPushSetwise&quot;&gt;Pawn Pushes set-wise&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Pieces%20versus%20Directions&quot;&gt;Pieces versus Directions&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextIncludeRule:06:&amp;lt;img src=&amp;quot;https://www.wikispaces.com/site/embedthumbnail/include/page?w=200&amp;amp;h=100&amp;quot; class=&amp;quot;WikiMedia WikiMediaInclude&amp;quot; id=&amp;quot;wikitext@@include@@page=&amp;amp;quot;MappingHint&amp;amp;quot;&amp;quot; title=&amp;quot;Include page: page=&amp;amp;quot;MappingHint&amp;amp;quot;&amp;quot; /&amp;gt; --&gt;

&lt;table class=&quot;wiki_table&quot;&gt;
    &lt;tr&gt;
        &lt;td&gt;&lt;a href=&quot;/Square%20Mapping%20Considerations&quot;&gt;&lt;img src=&quot;/file/view/mapping.JPG/93134172/mapping.JPG&quot; alt=&quot;mapping.JPG&quot; title=&quot;mapping.JPG&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;&lt;em&gt;Code samples and bitboard diagrams rely on &lt;a class=&quot;wiki_link&quot; href=&quot;/Square%20Mapping%20Considerations#LittleEndianRankFileMapping&quot;&gt;Little endian file and rank mapping&lt;/a&gt;&lt;/em&gt;.&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
&lt;/table&gt;

&lt;!-- ws:end:WikiTextIncludeRule:06 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:17:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc2&quot;&gt;&lt;a name=&quot;Move Target Sets&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:17 --&gt;Move Target Sets&lt;/h1&gt;
To determine white &lt;a class=&quot;wiki_link&quot; href=&quot;/Pin#AbsolutePin&quot;&gt;absolutely pinned pieces&lt;/a&gt; and squares attacked by black pieces, pawns, and king, taboo for the white king, black attacks are generated in a first phase. Those attacks are also utilized to detect whether the own king is in &lt;a class=&quot;wiki_link&quot; href=&quot;/Check&quot;&gt;check&lt;/a&gt;. Aggregated collected information is then used in a second phase of legal move target generation. &lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:19:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc3&quot;&gt;&lt;a name=&quot;Move Target Sets-Black Attacks&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:19 --&gt;Black Attacks&lt;/h2&gt;
&lt;!-- ws:start:WikiTextHeadingRule:21:&amp;lt;h3&amp;gt; --&gt;&lt;h3 id=&quot;toc4&quot;&gt;&lt;a name=&quot;Move Target Sets-Black Attacks-Sliders &amp;amp; Super King&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:21 --&gt;Sliders &amp;amp; Super King&lt;/h3&gt;
First, all black sliding attacks are generated by &lt;a class=&quot;wiki_link&quot; href=&quot;/Dumb7Fill&quot;&gt;Dumb7&lt;/a&gt;- or &lt;a class=&quot;wiki_link&quot; href=&quot;/Kogge-Stone%20Algorithm&quot;&gt;Kogge-Stone fill&lt;/a&gt;, unrolled for all eight &lt;a class=&quot;wiki_link&quot; href=&quot;/Direction#RayDirections&quot;&gt;ray directions&lt;/a&gt;, to aggregate them into a white king taboo bitboard, and to determine and keep line-wise &lt;a class=&quot;wiki_link&quot; href=&quot;/Square%20Attacked%20By#InBetween&quot;&gt;in-between&lt;/a&gt; bitboards by intersection with &lt;a class=&quot;wiki_link&quot; href=&quot;/Checks%20and%20Pinned%20Pieces%20%28Bitboards%29#OppositeRay&quot;&gt;opposite ray-direction&lt;/a&gt; attacks of the white king as sliding super piece, best generated by the &lt;a class=&quot;wiki_link&quot; href=&quot;/Classical%20Approach&quot;&gt;classical approach&lt;/a&gt;, or alternatively along with the sliding pieces itself as additional SIMD data element processing two opponent fill direction in one run. &lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextAnchorRule:63:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@Xray&amp;quot; title=&amp;quot;Anchor: Xray&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;Xray&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:63 --&gt;The occupancy for the black sliding attacks has the white king excluded, so that in case of check by a sliding piece the king is &lt;a class=&quot;wiki_link&quot; href=&quot;/X-ray&quot;&gt;x-rayed&lt;/a&gt; to later avoid king moves to otherwise non attacked squares. The in-between sets intersected with own pieces leave &lt;a class=&quot;wiki_link&quot; href=&quot;/Pin#AbsolutePin&quot;&gt;pinned pieces&lt;/a&gt;, but are also handy to determine an interposing block target set in case of distant sliding checks. In total, seven bitboards are processed as used in the second part of the routine, four line-wise in-between sets, orthogonal and diagonal white king super piece attacks to later determine a possible sliding checking piece, and the aggregated black attacks.&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:0:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;  U64 horInbetween, verInbetween, diaInbetween, antInbetween;   &amp;lt;br/&amp;gt;  U64 wKSuperAttacksOrth, wKSuperAttacksDia , bAnyAttacks;&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;  U64 horInbetween, verInbetween, diaInbetween, antInbetween&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;   
  U64 wKSuperAttacksOrth, wKSuperAttacksDia , bAnyAttacks&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:0 --&gt;Intended members associated with a position object have a m_-prefix, scratch or register variables an underscore:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:1:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;  /* black rooks and queens west */&amp;lt;br/&amp;gt;  _bAttacks = westAttacks (m_bRooks | m_bQueens, m_occ ^ m_wKbb);&amp;lt;br/&amp;gt;  bAnyAttacks         = _bAttacks;&amp;lt;br/&amp;gt;  _wKSuperAttacks     = slidingRayEastAttacks(m_wKsq, m_occ);&amp;lt;br/&amp;gt;  wKSuperAttacksOrth  = _wKSuperAttacks;&amp;lt;br/&amp;gt;  horInbetween        = _bAttacks &amp;amp;amp; _wKSuperAttacks;&amp;lt;br/&amp;gt;  /* black rooks and queens east */&amp;lt;br/&amp;gt;  _bAttacks = eastAttacks (m_bRooks | m_bQueens, m_occ ^ m_wKbb);&amp;lt;br/&amp;gt;  bAnyAttacks        |= _bAttacks;&amp;lt;br/&amp;gt;  _wKSuperAttacks     = slidingRayWestAttacks(m_wKsq, m_occ);&amp;lt;br/&amp;gt;  wKSuperAttacksOrth |= _wKSuperAttacks;&amp;lt;br/&amp;gt;  horInbetween       |= _bAttacks &amp;amp;amp; _wKSuperAttacks;&amp;lt;br/&amp;gt;  /* black rooks and queens north */&amp;lt;br/&amp;gt;  _bAttacks = nortAttacks (m_bRooks | m_bQueens, m_occ ^ m_wKbb);&amp;lt;br/&amp;gt;  bAnyAttacks        |= _bAttacks;&amp;lt;br/&amp;gt;  _wKSuperAttacks     = slidingRaySoutAttacks(m_wKsq, m_occ);&amp;lt;br/&amp;gt;  wKSuperAttacksOrth |= _wKSuperAttacks;&amp;lt;br/&amp;gt;  verInbetween        = _bAttacks &amp;amp;amp; _wKSuperAttacks;&amp;lt;br/&amp;gt;  /* black rooks and queens south */&amp;lt;br/&amp;gt;  _bAttacks = soutAttacks (m_bRooks | m_bQueens, m_occ ^ m_wKbb);&amp;lt;br/&amp;gt;  bAnyAttacks        |= _bAttacks;&amp;lt;br/&amp;gt;  _wKSuperAttacks     = slidingRayNortAttacks(m_wKsq, m_occ);&amp;lt;br/&amp;gt;  wKSuperAttacksOrth |= _wKSuperAttacks;&amp;lt;br/&amp;gt;  verInbetween       |= _bAttacks &amp;amp;amp; _wKSuperAttacks;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;  /* black bishops and queens north east */&amp;lt;br/&amp;gt;  _bAttacks = noEaAttacks (m_bBishops | m_bQueens, m_occ ^ m_wKbb);&amp;lt;br/&amp;gt;  bAnyAttacks        |= _bAttacks;&amp;lt;br/&amp;gt;  _wKSuperAttacks     = slidingRaySoWeAttacks(m_wKsq, m_occ);&amp;lt;br/&amp;gt;  wKSuperAttacksDia   = _wKSuperAttacks;&amp;lt;br/&amp;gt;  diaInbetween        = _bAttacks &amp;amp;amp; _wKSuperAttacks;&amp;lt;br/&amp;gt;  /* black bishops and queens south west */&amp;lt;br/&amp;gt;  _bAttacks = soWeAttacks (m_bBishops | m_bQueens, m_occ ^ m_wKbb);&amp;lt;br/&amp;gt;  bAnyAttacks        |= _bAttacks;&amp;lt;br/&amp;gt;  _wKSuperAttacks     = slidingRayNoEaAttacks(m_wKsq, m_occ);&amp;lt;br/&amp;gt;  wKSuperAttacksDia  |= _wKSuperAttacks;&amp;lt;br/&amp;gt;  diaInbetween       |= _bAttacks &amp;amp;amp; _wKSuperAttacks;&amp;lt;br/&amp;gt;  /* black bishops and queens north west */&amp;lt;br/&amp;gt;  _bAttacks = noWeAttacks (m_bBishops | m_bQueens, m_occ ^ m_wKbb);&amp;lt;br/&amp;gt;  bAnyAttacks        |= _bAttacks;&amp;lt;br/&amp;gt;  _wKSuperAttacks     = slidingRaySoEaAttacks(m_wKsq, m_occ);&amp;lt;br/&amp;gt;  wKSuperAttacksDia  |= _wKSuperAttacks;&amp;lt;br/&amp;gt;  antInbetween        = _bAttacks &amp;amp;amp; _wKSuperAttacks;&amp;lt;br/&amp;gt;  /* black bishops and queens south east */&amp;lt;br/&amp;gt;  _bAttacks = soEaAttacks (m_bBishops | m_bQueens, m_occ ^ m_wKbb);&amp;lt;br/&amp;gt;  bAnyAttacks        |= _bAttacks;&amp;lt;br/&amp;gt;  _wKSuperAttacks     = slidingRayNoWeAttacks(m_wKsq, m_occ);&amp;lt;br/&amp;gt;  wKSuperAttacksDia  |= _wKSuperAttacks;&amp;lt;br/&amp;gt;  antInbetween       |= _bAttacks &amp;amp;amp; _wKSuperAttacks;&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;  &lt;span class=&quot;coMULTI&quot;&gt;/* black rooks and queens west */&lt;/span&gt;
  _bAttacks &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; westAttacks &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m_bRooks &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; m_bQueens, m_occ &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt; m_wKbb&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  bAnyAttacks         &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; _bAttacks&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  _wKSuperAttacks     &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; slidingRayEastAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m_wKsq, m_occ&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  wKSuperAttacksOrth  &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; _wKSuperAttacks&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  horInbetween        &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; _bAttacks &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; _wKSuperAttacks&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;coMULTI&quot;&gt;/* black rooks and queens east */&lt;/span&gt;
  _bAttacks &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; eastAttacks &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m_bRooks &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; m_bQueens, m_occ &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt; m_wKbb&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  bAnyAttacks        &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; _bAttacks&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  _wKSuperAttacks     &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; slidingRayWestAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m_wKsq, m_occ&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  wKSuperAttacksOrth &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; _wKSuperAttacks&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  horInbetween       &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; _bAttacks &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; _wKSuperAttacks&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;coMULTI&quot;&gt;/* black rooks and queens north */&lt;/span&gt;
  _bAttacks &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; nortAttacks &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m_bRooks &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; m_bQueens, m_occ &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt; m_wKbb&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  bAnyAttacks        &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; _bAttacks&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  _wKSuperAttacks     &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; slidingRaySoutAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m_wKsq, m_occ&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  wKSuperAttacksOrth &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; _wKSuperAttacks&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  verInbetween        &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; _bAttacks &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; _wKSuperAttacks&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;coMULTI&quot;&gt;/* black rooks and queens south */&lt;/span&gt;
  _bAttacks &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; soutAttacks &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m_bRooks &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; m_bQueens, m_occ &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt; m_wKbb&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  bAnyAttacks        &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; _bAttacks&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  _wKSuperAttacks     &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; slidingRayNortAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m_wKsq, m_occ&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  wKSuperAttacksOrth &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; _wKSuperAttacks&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  verInbetween       &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; _bAttacks &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; _wKSuperAttacks&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;coMULTI&quot;&gt;/* black bishops and queens north east */&lt;/span&gt;
  _bAttacks &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; noEaAttacks &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m_bBishops &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; m_bQueens, m_occ &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt; m_wKbb&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  bAnyAttacks        &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; _bAttacks&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  _wKSuperAttacks     &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; slidingRaySoWeAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m_wKsq, m_occ&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  wKSuperAttacksDia   &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; _wKSuperAttacks&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  diaInbetween        &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; _bAttacks &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; _wKSuperAttacks&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;coMULTI&quot;&gt;/* black bishops and queens south west */&lt;/span&gt;
  _bAttacks &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; soWeAttacks &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m_bBishops &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; m_bQueens, m_occ &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt; m_wKbb&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  bAnyAttacks        &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; _bAttacks&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  _wKSuperAttacks     &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; slidingRayNoEaAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m_wKsq, m_occ&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  wKSuperAttacksDia  &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; _wKSuperAttacks&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  diaInbetween       &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; _bAttacks &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; _wKSuperAttacks&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;coMULTI&quot;&gt;/* black bishops and queens north west */&lt;/span&gt;
  _bAttacks &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; noWeAttacks &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m_bBishops &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; m_bQueens, m_occ &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt; m_wKbb&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  bAnyAttacks        &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; _bAttacks&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  _wKSuperAttacks     &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; slidingRaySoEaAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m_wKsq, m_occ&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  wKSuperAttacksDia  &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; _wKSuperAttacks&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  antInbetween        &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; _bAttacks &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; _wKSuperAttacks&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;coMULTI&quot;&gt;/* black bishops and queens south east */&lt;/span&gt;
  _bAttacks &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; soEaAttacks &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m_bBishops &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; m_bQueens, m_occ &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt; m_wKbb&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  bAnyAttacks        &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; _bAttacks&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  _wKSuperAttacks     &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; slidingRayNoWeAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m_wKsq, m_occ&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  wKSuperAttacksDia  &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; _wKSuperAttacks&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  antInbetween       &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; _bAttacks &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; _wKSuperAttacks&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:1 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:23:&amp;lt;h3&amp;gt; --&gt;&lt;h3 id=&quot;toc5&quot;&gt;&lt;a name=&quot;Move Target Sets-Black Attacks-None Sliding Pieces&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:23 --&gt;None Sliding Pieces&lt;/h3&gt;
Black &lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Attacks%20%28Bitboards%29#PawnAttacks&quot;&gt;pawn-&lt;/a&gt; and knight- attacks are best determined by disjoint direction-wise steps and the &lt;a class=&quot;wiki_link&quot; href=&quot;/Knight%20Pattern#MultipleKnightAttacks&quot;&gt;multiple knight attacks&lt;/a&gt; routine. Black &lt;a class=&quot;wiki_link&quot; href=&quot;/King%20Pattern#KingAttacks&quot;&gt;king attacks&lt;/a&gt; may be determined by lookup or &lt;a class=&quot;wiki_link&quot; href=&quot;/King%20Pattern#byCalculation&quot;&gt;calculation&lt;/a&gt;:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:2:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;  /* black knight attacks */&amp;lt;br/&amp;gt;  bAnyAttacks  |= _knightAttacks  (m_bKnights);&amp;lt;br/&amp;gt;  /* black pawn attacks */&amp;lt;br/&amp;gt;  bAnyAttacks |= _bPawnEastAttacks(m_bPawns);&amp;lt;br/&amp;gt;  bAnyAttacks |= _bPawnWestAttacks(m_bPawns);&amp;lt;br/&amp;gt;  /* black king attacks */&amp;lt;br/&amp;gt;  bAnyAttacks |= _kingAttacks(m_bKbb);&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;  &lt;span class=&quot;coMULTI&quot;&gt;/* black knight attacks */&lt;/span&gt;
  bAnyAttacks  &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; _knightAttacks  &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m_bKnights&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;coMULTI&quot;&gt;/* black pawn attacks */&lt;/span&gt;
  bAnyAttacks &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; _bPawnEastAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m_bPawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  bAnyAttacks &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; _bPawnWestAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m_bPawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;coMULTI&quot;&gt;/* black king attacks */&lt;/span&gt;
  bAnyAttacks &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; _kingAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m_bKbb&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:2 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:25:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc6&quot;&gt;&lt;a name=&quot;Move Target Sets-Generating White Moves&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:25 --&gt;Generating White Moves&lt;/h2&gt;
Now, with all black attacks and black sliding vs white king in-between sets processed, one generates all legal white moves into 16 move-target bitboards. &lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:27:&amp;lt;h3&amp;gt; --&gt;&lt;h3 id=&quot;toc7&quot;&gt;&lt;a name=&quot;Move Target Sets-Generating White Moves-In Check?&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:27 --&gt;In Check?&lt;/h3&gt;
To make &lt;a class=&quot;wiki_link&quot; href=&quot;/Check&quot;&gt;in check&lt;/a&gt; or &lt;a class=&quot;wiki_link&quot; href=&quot;/Double%20Check&quot;&gt;double check&lt;/a&gt; handling &lt;a class=&quot;wiki_link&quot; href=&quot;/Avoiding%20Branches&quot;&gt;branch-less&lt;/a&gt;, a target mask for all non king moves is calculated, which is needed anyway to remove own white pieces from the attack sets. In case of check it only contains the check giving piece as capture target - distant sliding checks include the in-between set intersected with empty squares as target set for blocking the check. The rare case of double check is considered by a mask (_nullIfDblCheck) computed from the set of check giving pieces - which leaves &lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#EmptyAndUniverse&quot;&gt;empty&lt;/a&gt; if &lt;a class=&quot;wiki_link&quot; href=&quot;/Population%20Count#SinglePopulatedBitboards&quot;&gt;population greater one&lt;/a&gt; and the universe (~empty) otherwise. Note that the ones&#039; decrement of any single populated bitboard is always positive and leaves the empty set if shifted right 63 arithmetically:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:3:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;  U64 allInbetween = horInbetween | verInbetween | diaInbetween | antInbetween;&amp;lt;br/&amp;gt;  _blocks      =  allInbetween &amp;amp;amp; ~m_occ; /* in case of distant check */&amp;lt;br/&amp;gt;  _checkFrom   = (wKSuperAttacksOrth    &amp;amp;amp; (m_bRooks  | m_bQueens) )&amp;lt;br/&amp;gt;               | (wKSuperAttacksDia     &amp;amp;amp; (m_bBishop | m_bQueens) )&amp;lt;br/&amp;gt;               | (knightAttacks(m_wKbb) &amp;amp;amp;  m_bKnights )&amp;lt;br/&amp;gt;               | (wPawnAttacks (m_wKbb) &amp;amp;amp;  m_bPawns )&amp;lt;br/&amp;gt;               ;&amp;lt;br/&amp;gt;  I64 _nullIfcheck    = ( (I64)( bAnyAttacks &amp;amp;amp; m_wKbb ) - 1) &amp;amp;gt;&amp;amp;gt; 63; /* signed shifts */&amp;lt;br/&amp;gt;  I64 _nullIfDblCheck = ( (I64)( checkFrom &amp;amp;amp; (checkFrom-1) ) - 1) &amp;amp;gt;&amp;amp;gt; 63; &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;  _checkTo     = _checkFrom | _blocks  | _nullIfcheck;&amp;lt;br/&amp;gt;  targetMask   = ~m_wPieces &amp;amp;amp; _checkTo &amp;amp;amp; _nullIfDblCheck;&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;  U64 allInbetween &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; horInbetween &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; verInbetween &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; diaInbetween &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; antInbetween&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  _blocks      &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;  allInbetween &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; ~m_occ&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;coMULTI&quot;&gt;/* in case of distant check */&lt;/span&gt;
  _checkFrom   &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;wKSuperAttacksOrth    &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m_bRooks  &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; m_bQueens&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
               &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;wKSuperAttacksDia     &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m_bBishop &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; m_bQueens&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
               &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;knightAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m_wKbb&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;  m_bKnights &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
               &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;wPawnAttacks &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m_wKbb&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;  m_bPawns &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
               &lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  I64 _nullIfcheck    &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;I64&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; bAnyAttacks &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; m_wKbb &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;63&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;coMULTI&quot;&gt;/* signed shifts */&lt;/span&gt;
  I64 _nullIfDblCheck &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;I64&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; checkFrom &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;checkFrom&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;63&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; 
&amp;nbsp;
  _checkTo     &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; _checkFrom &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; _blocks  &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; _nullIfcheck&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  targetMask   &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; ~m_wPieces &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; _checkTo &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; _nullIfDblCheck&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:3 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:29:&amp;lt;h3&amp;gt; --&gt;&lt;h3 id=&quot;toc8&quot;&gt;&lt;a name=&quot;Move Target Sets-Generating White Moves-Sliding Pieces&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:29 --&gt;Sliding Pieces&lt;/h3&gt;
Moves by white sliding pieces are computed with eight Dumb7 or Kogge-Stone fills. Pinned sliders are considered &lt;a class=&quot;wiki_link&quot; href=&quot;/Pin#PartialPin&quot;&gt;partial pinned&lt;/a&gt; to move along the pinned direction:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:4:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;  /* horizontal rook and queen moves */&amp;lt;br/&amp;gt;  _sliders = (m_wRooks | m_wQueens) &amp;amp;amp; ~(allInbetween ^ horInbetween);&amp;lt;br/&amp;gt;  m_moveTargets[eWest] = westAttacks (_sliders, m_occ) &amp;amp;amp; targetMask;&amp;lt;br/&amp;gt;  m_moveTargets[eEast] = eastAttacks (_sliders, m_occ) &amp;amp;amp; targetMask;&amp;lt;br/&amp;gt;  /* vertical rook and queen moves*/&amp;lt;br/&amp;gt;  _sliders = (m_wRooks | m_wQueens) &amp;amp;amp; ~(allInbetween ^ verInbetween);&amp;lt;br/&amp;gt;  m_moveTargets[eNort] = nortAttacks (_sliders, m_occ) &amp;amp;amp; targetMask;&amp;lt;br/&amp;gt;  m_moveTargets[eSout] = soutAttacks (_sliders, m_occ) &amp;amp;amp; targetMask;&amp;lt;br/&amp;gt;  /* diagonal bishop and queen moves */&amp;lt;br/&amp;gt;  _sliders = (m_wBishops | m_wQueens) &amp;amp;amp; ~(allInbetween ^ diaInbetween);&amp;lt;br/&amp;gt;  m_moveTargets[eNoEa] = noEaAttacks (_sliders, m_occ) &amp;amp;amp; targetMask;&amp;lt;br/&amp;gt;  m_moveTargets[eSoWe] = soWeAttacks (_sliders, m_occ) &amp;amp;amp; targetMask;&amp;lt;br/&amp;gt;  /* antidiagonal bishop and queen moves */&amp;lt;br/&amp;gt;  _sliders = (m_wBishops | m_wQueens) &amp;amp;amp; ~(allInbetween ^ antInbetween);&amp;lt;br/&amp;gt;  m_moveTargets[eNoWe] = noWeAttacks (_sliders, m_occ) &amp;amp;amp; targetMask;&amp;lt;br/&amp;gt;  m_moveTargets[eSoEa] = soEaAttacks (_sliders, m_occ) &amp;amp;amp; targetMask;&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;  &lt;span class=&quot;coMULTI&quot;&gt;/* horizontal rook and queen moves */&lt;/span&gt;
  _sliders &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m_wRooks &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; m_wQueens&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; ~&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;allInbetween &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt; horInbetween&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  m_moveTargets&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;eWest&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; westAttacks &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;_sliders, m_occ&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; targetMask&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  m_moveTargets&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;eEast&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; eastAttacks &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;_sliders, m_occ&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; targetMask&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;coMULTI&quot;&gt;/* vertical rook and queen moves*/&lt;/span&gt;
  _sliders &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m_wRooks &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; m_wQueens&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; ~&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;allInbetween &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt; verInbetween&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  m_moveTargets&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;eNort&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; nortAttacks &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;_sliders, m_occ&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; targetMask&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  m_moveTargets&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;eSout&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; soutAttacks &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;_sliders, m_occ&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; targetMask&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;coMULTI&quot;&gt;/* diagonal bishop and queen moves */&lt;/span&gt;
  _sliders &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m_wBishops &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; m_wQueens&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; ~&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;allInbetween &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt; diaInbetween&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  m_moveTargets&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;eNoEa&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; noEaAttacks &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;_sliders, m_occ&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; targetMask&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  m_moveTargets&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;eSoWe&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; soWeAttacks &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;_sliders, m_occ&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; targetMask&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;coMULTI&quot;&gt;/* antidiagonal bishop and queen moves */&lt;/span&gt;
  _sliders &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m_wBishops &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; m_wQueens&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; ~&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;allInbetween &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt; antInbetween&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  m_moveTargets&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;eNoWe&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; noWeAttacks &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;_sliders, m_occ&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; targetMask&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  m_moveTargets&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;eSoEa&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; soEaAttacks &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;_sliders, m_occ&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; targetMask&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:4 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:31:&amp;lt;h3&amp;gt; --&gt;&lt;h3 id=&quot;toc9&quot;&gt;&lt;a name=&quot;Move Target Sets-Generating White Moves-None Sliding Pieces&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:31 --&gt;None Sliding Pieces&lt;/h3&gt;
Knight moves with their disjoint unique directions are generated by eight appropriate &lt;a class=&quot;wiki_link&quot; href=&quot;/Knight%20Pattern#Calculation&quot;&gt;direction shifts&lt;/a&gt; with all white knights not &lt;a class=&quot;wiki_link&quot; href=&quot;/Pin&quot;&gt;pinned&lt;/a&gt;, using the same targetMask considering in check. Pawn captures and &lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Pushes%20%28Bitboards%29&quot;&gt;Pawn pushes&lt;/a&gt; also consider &lt;a class=&quot;wiki_link&quot; href=&quot;/Pin#PartialPin&quot;&gt;partial pins&lt;/a&gt;. A given &lt;a class=&quot;wiki_link&quot; href=&quot;/En%20passant&quot;&gt;en passant&lt;/a&gt; target square implies a strictly legal move, as already secured while making the triggering double pawn push.&lt;br /&gt;
&lt;br /&gt;
Finally king move targets are generated by eight &lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#OneStepOnly&quot;&gt;one step direction shifts&lt;/a&gt;, masking off target squares occupied by own pieces, or attacked by black, including &lt;a class=&quot;wiki_link&quot; href=&quot;/DirGolem#Xray&quot;&gt;x-rays&lt;/a&gt; through the white king in case of check by a sliding piece. &lt;a class=&quot;wiki_link&quot; href=&quot;/Castling&quot;&gt;Castling&lt;/a&gt; is left to the ambitious reader. In orthodox chess, west or east castling can simply distinguished from ordinal king moves due to the double king step, but requires some more tinkering in &lt;a class=&quot;wiki_link&quot; href=&quot;/Chess960&quot;&gt;Chess960&lt;/a&gt;.&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:5:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;  /* knight moves */&amp;lt;br/&amp;gt;  _knights = m_wKnights &amp;amp;amp; ~allInbetween;&amp;lt;br/&amp;gt;  m_moveTargets[eNoNoEa] = noNoEa(_knights) &amp;amp;amp; targetMask; &amp;lt;br/&amp;gt;  m_moveTargets[eNoEaEa] = noEaEa(_knights) &amp;amp;amp; targetMask; &amp;lt;br/&amp;gt;  m_moveTargets[eSoEaEa] = soEaEa(_knights) &amp;amp;amp; targetMask; &amp;lt;br/&amp;gt;  m_moveTargets[eSoSoEa] = soSoEa(_knights) &amp;amp;amp; targetMask; &amp;lt;br/&amp;gt;  m_moveTargets[eNoNoWe] = noNoWe(_knights) &amp;amp;amp; targetMask; &amp;lt;br/&amp;gt;  m_moveTargets[eNoWeWe] = noWeWe(_knights) &amp;amp;amp; targetMask; &amp;lt;br/&amp;gt;  m_moveTargets[eSoWeWe] = soWeWe(_knights) &amp;amp;amp; targetMask; &amp;lt;br/&amp;gt;  m_moveTargets[eSoSoWe] = soSoWe(_knights) &amp;amp;amp; targetMask; &amp;lt;br/&amp;gt;  /* pawn captures and en passant */&amp;lt;br/&amp;gt;  _targets = ( m_bPieces &amp;amp;amp; targetMask) | (C64(1) &amp;amp;lt;&amp;amp;lt; m_epTarget);&amp;lt;br/&amp;gt;  _pawns   = m_wPans &amp;amp;amp; ~(allInbetween ^ diaInbetween);&amp;lt;br/&amp;gt;  m_moveTargets[eNoEa] |=  noEaOne (_pawns) &amp;amp;amp; _targets ;&amp;lt;br/&amp;gt;  _pawns   = m_wPans &amp;amp;amp; ~(allInbetween ^ antInbetween);&amp;lt;br/&amp;gt;  m_moveTargets[eNoWe] |= noWeOne(_pawns) &amp;amp;amp; _targets;&amp;lt;br/&amp;gt;  /* pawn pushes ... */&amp;lt;br/&amp;gt;  _pawns   = m_wPans  &amp;amp;amp; ~(allInbetween ^ verInbetween);&amp;lt;br/&amp;gt;  _pawnPushs = nortOne (_pawns) &amp;amp;amp; ~m_occ;&amp;lt;br/&amp;gt;  m_moveTargets[eNort] |= _pawnPushs &amp;amp;amp; targetMask;&amp;lt;br/&amp;gt;  /* and double pushs */&amp;lt;br/&amp;gt;  _rank4 = C64(0x00000000FF000000);&amp;lt;br/&amp;gt;  m_moveTargets[eNort] |= nortOne (_pawnPushs) &amp;amp;amp; ~m_occ &amp;amp;amp; targetMask &amp;amp;amp; _rank4;&amp;lt;br/&amp;gt;  /* king moves */&amp;lt;br/&amp;gt;  targetMask = ~(m_wPieces | bAnyAttacks);&amp;lt;br/&amp;gt;  m_moveTargets[eWest] |= westOne (m_wKbb) &amp;amp;amp; targetMask;&amp;lt;br/&amp;gt;  m_moveTargets[eEast] |= eastOne (m_wKbb) &amp;amp;amp; targetMask;&amp;lt;br/&amp;gt;  m_moveTargets[eNort] |= nortOne (m_wKbb) &amp;amp;amp; targetMask;&amp;lt;br/&amp;gt;  m_moveTargets[eSout] |= soutOne (m_wKbb) &amp;amp;amp; targetMask;&amp;lt;br/&amp;gt;  m_moveTargets[eNoEa] |= noEaOne (m_wKbb) &amp;amp;amp; targetMask;&amp;lt;br/&amp;gt;  m_moveTargets[eSoWe] |= soWeOne (m_wKbb) &amp;amp;amp; targetMask;&amp;lt;br/&amp;gt;  m_moveTargets[eNoWe] |= noWeOne (m_wKbb) &amp;amp;amp; targetMask;&amp;lt;br/&amp;gt;  m_moveTargets[eSoEa] |= soEaOne (m_wKbb) &amp;amp;amp; targetMask;&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;  &lt;span class=&quot;coMULTI&quot;&gt;/* knight moves */&lt;/span&gt;
  _knights &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; m_wKnights &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; ~allInbetween&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  m_moveTargets&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;eNoNoEa&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; noNoEa&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;_knights&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; targetMask&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; 
  m_moveTargets&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;eNoEaEa&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; noEaEa&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;_knights&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; targetMask&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; 
  m_moveTargets&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;eSoEaEa&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; soEaEa&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;_knights&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; targetMask&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; 
  m_moveTargets&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;eSoSoEa&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; soSoEa&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;_knights&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; targetMask&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; 
  m_moveTargets&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;eNoNoWe&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; noNoWe&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;_knights&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; targetMask&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; 
  m_moveTargets&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;eNoWeWe&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; noWeWe&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;_knights&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; targetMask&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; 
  m_moveTargets&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;eSoWeWe&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; soWeWe&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;_knights&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; targetMask&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; 
  m_moveTargets&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;eSoSoWe&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; soSoWe&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;_knights&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; targetMask&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;coMULTI&quot;&gt;/* pawn captures and en passant */&lt;/span&gt;
  _targets &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; m_bPieces &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; targetMask&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;C64&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; m_epTarget&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  _pawns   &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; m_wPans &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; ~&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;allInbetween &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt; diaInbetween&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  m_moveTargets&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;eNoEa&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;  noEaOne &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;_pawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; _targets &lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  _pawns   &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; m_wPans &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; ~&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;allInbetween &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt; antInbetween&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  m_moveTargets&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;eNoWe&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; noWeOne&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;_pawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; _targets&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;coMULTI&quot;&gt;/* pawn pushes ... */&lt;/span&gt;
  _pawns   &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; m_wPans  &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; ~&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;allInbetween &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt; verInbetween&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  _pawnPushs &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; nortOne &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;_pawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; ~m_occ&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  m_moveTargets&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;eNort&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; _pawnPushs &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; targetMask&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;coMULTI&quot;&gt;/* and double pushs */&lt;/span&gt;
  _rank4 &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; C64&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu12&quot;&gt;0x00000000FF000000&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  m_moveTargets&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;eNort&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; nortOne &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;_pawnPushs&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; ~m_occ &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; targetMask &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; _rank4&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;coMULTI&quot;&gt;/* king moves */&lt;/span&gt;
  targetMask &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; ~&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m_wPieces &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; bAnyAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  m_moveTargets&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;eWest&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; westOne &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m_wKbb&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; targetMask&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  m_moveTargets&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;eEast&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; eastOne &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m_wKbb&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; targetMask&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  m_moveTargets&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;eNort&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; nortOne &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m_wKbb&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; targetMask&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  m_moveTargets&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;eSout&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; soutOne &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m_wKbb&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; targetMask&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  m_moveTargets&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;eNoEa&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; noEaOne &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m_wKbb&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; targetMask&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  m_moveTargets&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;eSoWe&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; soWeOne &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m_wKbb&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; targetMask&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  m_moveTargets&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;eNoWe&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; noWeOne &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m_wKbb&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; targetMask&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
  m_moveTargets&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;eSoEa&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; soEaOne &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;m_wKbb&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; targetMask&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:5 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:33:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc10&quot;&gt;&lt;a name=&quot;Move Target Sets-Finally&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:33 --&gt;Finally&lt;/h2&gt;
Additionally, all 16 move target bitboards might be aggregated into a union set, so that &lt;a class=&quot;wiki_link&quot; href=&quot;/Checkmate&quot;&gt;checkmate&lt;/a&gt; and &lt;a class=&quot;wiki_link&quot; href=&quot;/Stalemate&quot;&gt;stalemate&lt;/a&gt; is indicated by the zero flag for early returns, wasting a TT prefetch. Further, some disjoint and aggregated attack and pinned piece information might be utilized in &lt;a class=&quot;wiki_link&quot; href=&quot;/Evaluation&quot;&gt;evaluation&lt;/a&gt;, maybe best associated with &lt;a class=&quot;wiki_link&quot; href=&quot;/Thread&quot;&gt;thread&lt;/a&gt; local memory shared by all &lt;a class=&quot;wiki_link&quot; href=&quot;/Node&quot;&gt;nodes&lt;/a&gt; searched, and allocated at the bottom of the &lt;a class=&quot;wiki_link&quot; href=&quot;/Stack&quot;&gt;stack&lt;/a&gt; referred by a (this) pointer, with the limited validity from generation until evaluation or the first (null) move is deepened. &lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:35:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc11&quot;&gt;&lt;a name=&quot;See also&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:35 --&gt;See also&lt;/h1&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/AVX2&quot;&gt;AVX2&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/AVX2#Dumb7Fill&quot;&gt;AVX2 Dumb7Fill&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/AVX2#KnightAttacks&quot;&gt;AVX2 Knight Attacks&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Checks%20and%20Pinned%20Pieces%20%28Bitboards%29&quot;&gt;Checks and Pinned Pieces (Bitboards)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Dumb7Fill&quot;&gt;Dumb7Fill&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Fill%20by%20Subtraction&quot;&gt;Fill by Subtraction&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Fill%20Algorithms&quot;&gt;Fill Algorithms&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/GPU&quot;&gt;GPU&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Kogge-Stone%20Algorithm&quot;&gt;Kogge-Stone Algorithm&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Pigeon&quot;&gt;Pigeon&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/SSE2&quot;&gt;SSE2&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:37:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc12&quot;&gt;&lt;a name=&quot;Forum Posts&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:37 --&gt;Forum Posts&lt;/h1&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=43971&quot; rel=&quot;nofollow&quot;&gt;Is there such a thing as branchless move generation?&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/John%20Hamlen&quot;&gt;John Hamlen&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, June 07, 2012&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:39:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc13&quot;&gt;&lt;a name=&quot;External Links&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:39 --&gt;External Links&lt;/h1&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/Golem&quot; rel=&quot;nofollow&quot;&gt;Golem from Wikipedia&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/Golem_%28disambiguation%29&quot; rel=&quot;nofollow&quot;&gt;Golem (disambiguation) from Wikipedia&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:41:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc14&quot;&gt;&lt;a name=&quot;References&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:41 --&gt;References&lt;/h1&gt;
&lt;!-- ws:start:WikiTextReferencesRule:271:&amp;amp;lt;references /&amp;amp;gt; --&gt;&lt;ol class=&quot;references&quot;&gt;
&lt;li id=&quot;cite_note-1&quot;&gt;&lt;a href=&quot;#cite_ref-1&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/The_Golem:_How_He_Came_into_the_World&quot; rel=&quot;nofollow&quot;&gt;The Golem: How He Came Into the World, from Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;cite_note-2&quot;&gt;&lt;a href=&quot;#cite_ref-2&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://software.intel.com/en-us/blogs/2013/avx-512-instructions&quot; rel=&quot;nofollow&quot;&gt;AVX-512 instructions | Intel® Developer Zone&lt;/a&gt;,  by &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://software.intel.com/en-us/user/335550&quot; rel=&quot;nofollow&quot;&gt;James Reinders&lt;/a&gt;, July 23, 2013&lt;/li&gt;
&lt;/ol&gt;&lt;!-- ws:end:WikiTextReferencesRule:271 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:43:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc15&quot;&gt;&lt;a name=&quot;What links here?&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:43 --&gt;What links here?&lt;/h1&gt;
&lt;!-- ws:start:WikiTextIncludeRule:07:&amp;lt;img src=&amp;quot;https://www.wikispaces.com/site/embedthumbnail/include/backlinks?w=200&amp;amp;h=100&amp;quot; class=&amp;quot;WikiMedia WikiMediaInclude&amp;quot; id=&amp;quot;wikitext@@include@@page=&amp;amp;quot;DirGolem&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;80&amp;amp;quot;&amp;quot; title=&amp;quot;Include backlinks: page=&amp;amp;quot;DirGolem&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;80&amp;amp;quot;&amp;quot; /&amp;gt; --&gt;&lt;div class=&quot;includeBody-DirGolem includeBody-DirGolem includeBody&quot;&gt;&lt;table class=&quot;includeBacklinks&quot;&gt;
  &lt;thead&gt;
    &lt;tr class=&quot;includeBacklinksHeading&quot;&gt;
      &lt;th class=&quot;includeBacklinksPageHeading&quot;&gt;Page&lt;/th&gt;
      &lt;th class=&quot;includeBacklinksDateHeading&quot;&gt;Date Edited&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
    &lt;tbody&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/AltiVec&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;AltiVec&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jun 7, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Avoiding+Branches&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Avoiding Branches&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 16, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/AVX2&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;AVX2&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Aug 8, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Bitboards&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Bitboards&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 14, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Check&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Check&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Feb 1, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Checks+and+Pinned+Pieces+%28Bitboards%29&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Checks and Pinned Pieces (Bitboards)&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Aug 14, 2013&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/DirGolem&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;DirGolem&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jun 5, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Golem&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Golem&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;May 18, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/HansDamf&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;HansDamf&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jun 27, 2012&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Legal+Move&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Legal Move&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Feb 16, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Move+Generation&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Move Generation&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 29, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Pieces+versus+Directions&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Pieces versus Directions&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Oct 6, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/SSE2&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;SSE2&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Feb 27, 2018&lt;/td&gt;
    &lt;/tr&gt;
      &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;&lt;!-- ws:end:WikiTextIncludeRule:07 --&gt;&lt;br /&gt;
&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Move%20Generation&quot;&gt;Up one Level&lt;/a&gt;&lt;/strong&gt;</description>
          </item>
    <item>
      <title>Dispersion and Distortion</title>
      <link>https://chessprogramming.wikispaces.com/Dispersion+and+Distortion</link>
      <dc:creator>GerdIsenberg</dc:creator>
      <guid isPermaLink="true">https://chessprogramming.wikispaces.com/Dispersion+and+Distortion</guid>
      <comments>https://chessprogramming.wikispaces.com/page/messages/Dispersion+and+Distortion</comments>
      <pubDate>Sat, 11 Nov 2017 09:15:45 GMT</pubDate>
      <description>&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Home&quot;&gt;Home&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Board%20Representation&quot;&gt;Board Representation&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Bitboards&quot;&gt;Bitboards&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Pattern%20and%20Properties&quot;&gt;Pawn Pattern and Properties&lt;/a&gt; * Dispersion and Distortion&lt;/strong&gt;&lt;br /&gt;


&lt;table class=&quot;wiki_table&quot;&gt;
    &lt;tr&gt;
        &lt;td&gt;&lt;!-- ws:start:WikiTextLocalImageRule:77:&amp;lt;a href=&amp;quot;http://www.chgs.umn.edu/museum/responses/bak/chess.html&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;/file/view/Luna.jpg/157859223/195x252/Luna.jpg&amp;quot; alt=&amp;quot;&amp;quot; title=&amp;quot;&amp;quot; style=&amp;quot;height: 252px; width: 195px;&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt; --&gt;&lt;a href=&quot;http://www.chgs.umn.edu/museum/responses/bak/chess.html&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;/file/view/Luna.jpg/157859223/195x252/Luna.jpg&quot; alt=&quot;Luna.jpg&quot; title=&quot;Luna.jpg&quot; style=&quot;height: 252px; width: 195px;&quot; /&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextLocalImageRule:77 --&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
        &lt;td rowspan=&quot;2&quot;&gt;&lt;strong&gt;Dispersion&lt;/strong&gt; and &lt;strong&gt;Distortion&lt;/strong&gt;,&lt;br /&gt;
&lt;a class=&quot;wiki_link&quot; href=&quot;/Hans%20Kmoch&quot;&gt;Kmoch&#039;s&lt;/a&gt; terms &lt;!-- ws:start:WikiTextRefRule:9:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link&amp;quot; href=&amp;quot;/Hans%20Kmoch&amp;quot;&amp;gt;Hans Kmoch&amp;lt;/a&amp;gt; (&amp;lt;strong&amp;gt;1959, 1990&amp;lt;/strong&amp;gt;). &amp;lt;em&amp;gt;Pawn Power in Chess&amp;lt;/em&amp;gt;. New York: Dover, 1990. Previous ed.: New York: McKay, 1959. ISBN 0-486-26486-6&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-1&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:9 --&gt; &lt;!-- ws:start:WikiTextRefRule:12:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;https://www.chess.com/forum/view/chess-equipment/pawn-power-in-chess-by-hans-kmoch-glossary-of-terms&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Pawn Power in Chess by Hans Kmoch - Glossary of Terms - Chess Forums&amp;lt;/a&amp;gt; - &amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;https://en.wikipedia.org/wiki/Chess.com&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Chess.com&amp;lt;/a&amp;gt;&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-2&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:12 --&gt; for &lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Structure&quot;&gt;pawn structure&lt;/a&gt; &lt;a class=&quot;wiki_link&quot; href=&quot;/Weak%20Pawns&quot;&gt;weaknesses&lt;/a&gt; due to vertical or horizontal splitting caused by &lt;a class=&quot;wiki_link&quot; href=&quot;/Captures&quot;&gt;captures&lt;/a&gt; or &lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Push&quot;&gt;advancement&lt;/a&gt;. The proposed functions may be used via an additional scaling or indirection, f.i. to index a table with concrete penalties.&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Arts#Bak&quot;&gt;Samuel Bak&lt;/a&gt; - Luna &lt;!-- ws:start:WikiTextRefRule:16:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.chgs.umn.edu/museum/responses/bak/chess.html&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Chess in the Art of Samuel Bak&amp;lt;/a&amp;gt;, &amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.chgs.umn.edu/&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Center for Holocaust &amp;amp;amp; Genocide Studies&amp;lt;/a&amp;gt;, &amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;https://en.wikipedia.org/wiki/University_of_Minnesota&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;University of Minnesota&amp;lt;/a&amp;gt;&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-3&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:16 --&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;th&gt;&lt;br /&gt;
&lt;/th&gt;
    &lt;/tr&gt;
&lt;/table&gt;

&lt;!-- ws:start:WikiTextTocRule:30:&amp;lt;img id=&amp;quot;wikitext@@toc@@normal&amp;quot; class=&amp;quot;WikiMedia WikiMediaToc&amp;quot; title=&amp;quot;Table of Contents&amp;quot; src=&amp;quot;/site/embedthumbnail/toc/normal?w=225&amp;amp;h=100&amp;quot;/&amp;gt; --&gt;&lt;div id=&quot;toc&quot;&gt;&lt;h1 class=&quot;nopad&quot;&gt;Table of Contents&lt;/h1&gt;&lt;!-- ws:end:WikiTextTocRule:30 --&gt;&lt;!-- ws:start:WikiTextTocRule:31: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Dispersion&quot;&gt;Dispersion&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:31 --&gt;&lt;!-- ws:start:WikiTextTocRule:32: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Distortion&quot;&gt;Distortion&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:32 --&gt;&lt;!-- ws:start:WikiTextTocRule:33: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#See also&quot;&gt;See also&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:33 --&gt;&lt;!-- ws:start:WikiTextTocRule:34: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#External Links&quot;&gt;External Links&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:34 --&gt;&lt;!-- ws:start:WikiTextTocRule:35: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#References&quot;&gt;References&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:35 --&gt;&lt;!-- ws:start:WikiTextTocRule:36: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#What links here?&quot;&gt;What links here?&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:36 --&gt;&lt;!-- ws:start:WikiTextTocRule:37: --&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:37 --&gt;&lt;!-- ws:start:WikiTextHeadingRule:18:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc0&quot;&gt;&lt;a name=&quot;Dispersion&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:18 --&gt;Dispersion&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextAnchorRule:38:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@Dispersion&amp;quot; title=&amp;quot;Anchor: Dispersion&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;Dispersion&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:38 --&gt; &lt;strong&gt;Dispersion&lt;/strong&gt; is &lt;a class=&quot;wiki_link&quot; href=&quot;/Hans%20Kmoch&quot;&gt;Kmoch&#039;s&lt;/a&gt; term for vertical splitting of pawns (most commonly, isolation) caused by captures. Having three or four &lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Islands%20%28Bitboards%29&quot;&gt;islands&lt;/a&gt; while the opponent has one or two - assuming about the same number of pawns for both sides - may be considered in evaluation. But this is also implicitly done by evaluating &lt;a class=&quot;wiki_link&quot; href=&quot;/Double%20and%20Triple%20%28Bitboards%29&quot;&gt;double- or triple&lt;/a&gt; and &lt;a class=&quot;wiki_link&quot; href=&quot;/Isolated%20Pawns%20%28Bitboards%29#IsolanisSetWise&quot;&gt;isolated&lt;/a&gt; or the balance of weak pawns in general. Some arbitrary dispersion measure, intended as &lt;a class=&quot;wiki_link&quot; href=&quot;/Evaluation&quot;&gt;evaluation&lt;/a&gt; term.&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:0:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;int dispersion(U64 pawns)&amp;lt;br/&amp;gt;{&amp;lt;br/&amp;gt;   BYTE fileset  = (BYTE) soutFill(pawns);&amp;lt;br/&amp;gt;   int  ni = popCount(islandsEastFiles(fileset));&amp;lt;br/&amp;gt;   int  np = popCount(wpawns);&amp;lt;br/&amp;gt;   return abs(3*ni*ni - np);&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;BYTE islandsEastFiles(BYTE f) {return f &amp;amp;amp; ((f ^ (f &amp;amp;gt;&amp;amp;gt; 1));}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; dispersion&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 pawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   BYTE fileset  &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BYTE&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; soutFill&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt;  ni &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; popCount&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;islandsEastFiles&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;fileset&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt;  np &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; popCount&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;wpawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;abs&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt;ni&lt;span class=&quot;sy2&quot;&gt;*&lt;/span&gt;ni &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt; np&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
BYTE islandsEastFiles&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;BYTE f&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; f &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;f &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;f &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:0 --&gt;The higher the worse.&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:1:
&amp;lt;pre class=&amp;quot;text&amp;quot;&amp;gt;  \  number if islands&amp;lt;br/&amp;gt;   \     1   2   3   4&amp;lt;br/&amp;gt;np  \    3  12  27  48&amp;lt;br/&amp;gt;_____\________________&amp;lt;br/&amp;gt; 1   |   2   -   -   -&amp;lt;br/&amp;gt; 2   |   1  10   -   -&amp;lt;br/&amp;gt; 3   |   0   9  24   -&amp;lt;br/&amp;gt; 4   |   1   8  23  44&amp;lt;br/&amp;gt; 5   |   2   7  22  43&amp;lt;br/&amp;gt; 6   |   3   6  21  42&amp;lt;br/&amp;gt; 7   |   4   5  20  41&amp;lt;br/&amp;gt; 8   |   5   4  19  40&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.text  {font-family:monospace;}
.text .imp {font-weight: bold; color: red;}
.text span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;text&quot;&gt;  \  number if islands
   \     1   2   3   4
np  \    3  12  27  48
_____\________________
 1   |   2   -   -   -
 2   |   1  10   -   -
 3   |   0   9  24   -
 4   |   1   8  23  44
 5   |   2   7  22  43
 6   |   3   6  21  42
 7   |   4   5  20  41
 8   |   5   4  19  40&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:1 --&gt;&lt;!-- ws:start:WikiTextAnchorRule:39:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@Distortion&amp;quot; title=&amp;quot;Anchor: Distortion&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;Distortion&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:39 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:20:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc1&quot;&gt;&lt;a name=&quot;Distortion&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:20 --&gt;Distortion&lt;/h1&gt;
 Distortion is &lt;a class=&quot;wiki_link&quot; href=&quot;/Hans%20Kmoch&quot;&gt;Kmoch&#039;s&lt;/a&gt; term for horizontal splitting of pawns caused by advances. One may use something like this based on &lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Fills&quot;&gt;rearfill&lt;/a&gt;, xor and &lt;a class=&quot;wiki_link&quot; href=&quot;/Population%20Count&quot;&gt;population count&lt;/a&gt; to get an idea of distortion. It considers the rank-difference of two file-adjacent pawns (if any) as distortion penalty - the higher the worse. &lt;a class=&quot;wiki_link&quot; href=&quot;/Isolated%20Pawns%20%28Bitboards%29IsolanisSetWise&quot;&gt;Half-isolated&lt;/a&gt; or even &lt;a class=&quot;wiki_link&quot; href=&quot;/Isolated%20Pawn&quot;&gt;isolated pawns&lt;/a&gt; contribute a distortion penalty according to the size of their rearfill from 2 to 7 for each empty neighboring file, which discourages advancement of such pawns, interacting with terms considerring (half-) isolated pawns. Alternatively, for a &amp;quot;reverse&amp;quot; distortion penalty to encourage advancement of half-isolanis, one may use &lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Fills&quot;&gt;frontfill&lt;/a&gt; instead with a slightly different semantic is case of &lt;a class=&quot;wiki_link&quot; href=&quot;/Doubled%20Pawn&quot;&gt;doubled pawns&lt;/a&gt;. &lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:2:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;int wDistortion(U64 wpawns) {&amp;lt;br/&amp;gt;   U64 fill  = wRearFill(wpawns); // wFrontFill&amp;lt;br/&amp;gt;   U64 delta = (fill ^ (fill&amp;amp;lt;&amp;amp;lt;1)) &amp;amp;amp; C64(0xfefefefefefefefe));&amp;lt;br/&amp;gt;   return popCount(delta);&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; wDistortion&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 wpawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   U64 fill  &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; wRearFill&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;wpawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// wFrontFill&lt;/span&gt;
   U64 delta &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;fill &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;fill&lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; C64&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu12&quot;&gt;0xfefefefefefefefe&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; popCount&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;delta&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:2 --&gt;High distortion sample:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:3:
&amp;lt;pre class=&amp;quot;text&amp;quot;&amp;gt;wpawns              rearFill            rearFill &amp;amp;lt;&amp;amp;lt; 1      xor &amp;amp;amp; ~A-File&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . 1 . 1 . 1 .     . . 1 . 1 . 1 .     . . . 1 . 1 . 1     . . 1 1 1 1 1 1&amp;lt;br/&amp;gt;. . . . . . . .     . . 1 . 1 . 1 .     . . . 1 . 1 . 1     . . 1 1 1 1 1 1&amp;lt;br/&amp;gt;1 . . . . . . .     1 . 1 . 1 . 1 .     . 1 . 1 . 1 . 1     . 1 1 1 1 1 1 1&amp;lt;br/&amp;gt;. . . . . . . .     1 . 1 . 1 . 1 .     1 1 . 1 . 1 . 1     . 1 1 1 1 1 1 1&amp;lt;br/&amp;gt;. 1 . 1 . 1 . 1     1 1 1 1 1 1 1 1     1 1 1 1 1 1 1 1     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     1 1 1 1 1 1 1 1     . 1 1 1 1 1 1 1     . . . . . . . .&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;                                                            26 bits sets&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.text  {font-family:monospace;}
.text .imp {font-weight: bold; color: red;}
.text span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;text&quot;&gt;wpawns              rearFill            rearFill &amp;lt;&amp;lt; 1      xor &amp;amp; ~A-File
. . . . . . . .     . . . . . . . .     . . . . . . . .     . . . . . . . .
. . . . . . . .     . . . . . . . .     . . . . . . . .     . . . . . . . .
. . 1 . 1 . 1 .     . . 1 . 1 . 1 .     . . . 1 . 1 . 1     . . 1 1 1 1 1 1
. . . . . . . .     . . 1 . 1 . 1 .     . . . 1 . 1 . 1     . . 1 1 1 1 1 1
1 . . . . . . .     1 . 1 . 1 . 1 .     . 1 . 1 . 1 . 1     . 1 1 1 1 1 1 1
. . . . . . . .     1 . 1 . 1 . 1 .     1 1 . 1 . 1 . 1     . 1 1 1 1 1 1 1
. 1 . 1 . 1 . 1     1 1 1 1 1 1 1 1     1 1 1 1 1 1 1 1     . . . . . . . .
. . . . . . . .     1 1 1 1 1 1 1 1     . 1 1 1 1 1 1 1     . . . . . . . .
&amp;nbsp;
                                                            26 bits sets&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:3 --&gt;&lt;!-- ws:start:WikiTextHeadingRule:22:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc2&quot;&gt;&lt;a name=&quot;See also&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:22 --&gt;See also&lt;/h1&gt;
 &lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Isolated%20Pawn&quot;&gt;Isolated Pawn&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Isolated%20Pawns%20%28Bitboards%29&quot;&gt;Isolated Pawns (Bitboards)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Islands&quot;&gt;Pawn Islands&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Islands%20%28Bitboards%29&quot;&gt;Pawn Islands (Bitboards)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:24:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc3&quot;&gt;&lt;a name=&quot;External Links&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:24 --&gt;External Links&lt;/h1&gt;
 &lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://www.chess.com/forum/view/chess-equipment/pawn-power-in-chess-by-hans-kmoch-glossary-of-terms&quot; rel=&quot;nofollow&quot;&gt;Pawn Power in Chess by Hans Kmoch - Glossary of Terms - Chess Forums&lt;/a&gt; - &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/Chess.com&quot; rel=&quot;nofollow&quot;&gt;Chess.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://perl.guru.org/scott/hobbies/chess/&quot; rel=&quot;nofollow&quot;&gt;Monsoon/Typhoon Homepage&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Scott%20Gasch&quot;&gt;Scott Gasch&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/Dispersion&quot; rel=&quot;nofollow&quot;&gt;Dispersion from Wikipedia&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/Distortion_%28disambiguation%29&quot; rel=&quot;nofollow&quot;&gt;Distortion (disambiguation) from Wikipedia&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:26:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc4&quot;&gt;&lt;a name=&quot;References&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:26 --&gt;References&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextReferencesRule:137:&amp;amp;lt;references /&amp;amp;gt; --&gt;&lt;ol class=&quot;references&quot;&gt;
&lt;li id=&quot;cite_note-1&quot;&gt;&lt;a href=&quot;#cite_ref-1&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link&quot; href=&quot;/Hans%20Kmoch&quot;&gt;Hans Kmoch&lt;/a&gt; (&lt;strong&gt;1959, 1990&lt;/strong&gt;). &lt;em&gt;Pawn Power in Chess&lt;/em&gt;. New York: Dover, 1990. Previous ed.: New York: McKay, 1959. ISBN 0-486-26486-6&lt;/li&gt;
&lt;li id=&quot;cite_note-2&quot;&gt;&lt;a href=&quot;#cite_ref-2&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://www.chess.com/forum/view/chess-equipment/pawn-power-in-chess-by-hans-kmoch-glossary-of-terms&quot; rel=&quot;nofollow&quot;&gt;Pawn Power in Chess by Hans Kmoch - Glossary of Terms - Chess Forums&lt;/a&gt; - &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/Chess.com&quot; rel=&quot;nofollow&quot;&gt;Chess.com&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;cite_note-3&quot;&gt;&lt;a href=&quot;#cite_ref-3&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.chgs.umn.edu/museum/responses/bak/chess.html&quot; rel=&quot;nofollow&quot;&gt;Chess in the Art of Samuel Bak&lt;/a&gt;, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.chgs.umn.edu/&quot; rel=&quot;nofollow&quot;&gt;Center for Holocaust &amp;amp; Genocide Studies&lt;/a&gt;, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/University_of_Minnesota&quot; rel=&quot;nofollow&quot;&gt;University of Minnesota&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;!-- ws:end:WikiTextReferencesRule:137 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:28:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc5&quot;&gt;&lt;a name=&quot;What links here?&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:28 --&gt;What links here?&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextIncludeRule:04:&amp;lt;img src=&amp;quot;https://www.wikispaces.com/site/embedthumbnail/include/backlinks?w=200&amp;amp;h=100&amp;quot; class=&amp;quot;WikiMedia WikiMediaInclude&amp;quot; id=&amp;quot;wikitext@@include@@page=&amp;amp;quot;Dispersion and Distortion&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;40&amp;amp;quot;&amp;quot; title=&amp;quot;Include backlinks: page=&amp;amp;quot;Dispersion and Distortion&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;40&amp;amp;quot;&amp;quot; /&amp;gt; --&gt;&lt;div class=&quot;includeBody-Dispersion_and_Distortion includeBody-Dispersion%20and%20Distortion includeBody&quot;&gt;&lt;table class=&quot;includeBacklinks&quot;&gt;
  &lt;thead&gt;
    &lt;tr class=&quot;includeBacklinksHeading&quot;&gt;
      &lt;th class=&quot;includeBacklinksPageHeading&quot;&gt;Page&lt;/th&gt;
      &lt;th class=&quot;includeBacklinksDateHeading&quot;&gt;Date Edited&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
    &lt;tbody&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Dispersion+and+Distortion&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Dispersion and Distortion&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 11, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Hans+Kmoch&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Hans Kmoch&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 11, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Pawn+Islands+%28Bitboards%29&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Pawn Islands (Bitboards)&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;May 4, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Pawn+Pattern+and+Properties&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Pawn Pattern and Properties&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 11, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Space-Time+Tradeoff&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Space-Time Tradeoff&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jun 17, 2015&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Weak+Pawns&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Weak Pawns&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Dec 19, 2013&lt;/td&gt;
    &lt;/tr&gt;
      &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;&lt;!-- ws:end:WikiTextIncludeRule:04 --&gt;&lt;br /&gt;
&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Pattern%20and%20Properties&quot;&gt;Up one Level&lt;/a&gt;&lt;/strong&gt;</description>
          </item>
    <item>
      <title>Double and Triple (Bitboards)</title>
      <link>https://chessprogramming.wikispaces.com/Double+and+Triple+%28Bitboards%29</link>
      <dc:creator>GerdIsenberg</dc:creator>
      <guid isPermaLink="true">https://chessprogramming.wikispaces.com/Double+and+Triple+%28Bitboards%29</guid>
      <comments>https://chessprogramming.wikispaces.com/page/messages/Double+and+Triple+%28Bitboards%29</comments>
      <pubDate>Thu, 12 May 2016 19:25:45 GMT</pubDate>
      <description>&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Home&quot;&gt;Home&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Board%20Representation&quot;&gt;Board Representation&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Bitboards&quot;&gt;Bitboards&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Pattern%20and%20Properties&quot;&gt;Pawn Pattern and Properties&lt;/a&gt; * Double and Triple&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextTocRule:16:&amp;lt;img id=&amp;quot;wikitext@@toc@@normal&amp;quot; class=&amp;quot;WikiMedia WikiMediaToc&amp;quot; title=&amp;quot;Table of Contents&amp;quot; src=&amp;quot;/site/embedthumbnail/toc/normal?w=225&amp;amp;h=100&amp;quot;/&amp;gt; --&gt;&lt;div id=&quot;toc&quot;&gt;&lt;h1 class=&quot;nopad&quot;&gt;Table of Contents&lt;/h1&gt;&lt;!-- ws:end:WikiTextTocRule:16 --&gt;&lt;!-- ws:start:WikiTextTocRule:17: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#By Square&quot;&gt;By Square&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:17 --&gt;&lt;!-- ws:start:WikiTextTocRule:18: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Multiple Pawns&quot;&gt;Multiple Pawns&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:18 --&gt;&lt;!-- ws:start:WikiTextTocRule:19: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Forum Posts&quot;&gt;Forum Posts&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:19 --&gt;&lt;!-- ws:start:WikiTextTocRule:20: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#What links here?&quot;&gt;What links here?&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:20 --&gt;&lt;!-- ws:start:WikiTextTocRule:21: --&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:21 --&gt;&lt;!-- ws:start:WikiTextHeadingRule:8:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc0&quot;&gt;&lt;a name=&quot;By Square&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:8 --&gt;By Square&lt;/h1&gt;
 Working in the &lt;strong&gt;square centric world&lt;/strong&gt; of the board implies using a square index of one particular pawn, likely from &lt;a class=&quot;wiki_link&quot; href=&quot;/Bitboard%20Serialization&quot;&gt;bitboard traversal&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
For &lt;a class=&quot;wiki_link&quot; href=&quot;/Doubled%20Pawn&quot;&gt;doubled&lt;/a&gt; (twins) or multiple pawns on a file, we simply intersect the file-mask by own-pawns and perform a &lt;a class=&quot;wiki_link&quot; href=&quot;/Population%20Count&quot;&gt;population count&lt;/a&gt;. This symmetrical property appears to be equal for white and black pawns, except for the before- and behind semantic.&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:0:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;wPawnsOnFile = arrFiles[sqOfWhitePawn] &amp;amp;amp; pawnBB[white];&amp;lt;br/&amp;gt;if ( wPawnsOnFile &amp;amp;amp; (wPawnsOnFile-1) ) -&amp;amp;gt; white pawn is a least double pawn&amp;lt;br/&amp;gt;if ( wPawnsOnFile &amp;amp;amp; arrNortRay[sqOfWhitePawns] ) -&amp;amp;gt; white pawn has own pawn ahead&amp;lt;br/&amp;gt;if ( wPawnsOnFile &amp;amp;amp; arrSoutRay[sqOfWhitePawns] ) -&amp;amp;gt; white pawn has own pawn behind&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;wPawnsOnFile &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; arrFiles&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sqOfWhitePawn&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; pawnBB&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;white&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; wPawnsOnFile &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;wPawnsOnFile&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; white pawn is a least &lt;span class=&quot;kw4&quot;&gt;double&lt;/span&gt; pawn
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; wPawnsOnFile &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; arrNortRay&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sqOfWhitePawns&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; white pawn has own pawn ahead
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; wPawnsOnFile &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; arrSoutRay&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sqOfWhitePawns&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; white pawn has own pawn behind&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:0 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:1:
&amp;lt;pre class=&amp;quot;text&amp;quot;&amp;gt;arrFiles[d*]&amp;lt;br/&amp;gt;. . . 1 . . . .&amp;lt;br/&amp;gt;. . . 1 . . . .&amp;lt;br/&amp;gt;. . . 1 . . . .&amp;lt;br/&amp;gt;. . . 1 . . . .&amp;lt;br/&amp;gt;. . . 1 . . . .&amp;lt;br/&amp;gt;. . . 1 . . . .&amp;lt;br/&amp;gt;. . . 1 . . . .&amp;lt;br/&amp;gt;. . . 1 . . . .&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.text  {font-family:monospace;}
.text .imp {font-weight: bold; color: red;}
.text span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;text&quot;&gt;arrFiles[d*]
. . . 1 . . . .
. . . 1 . . . .
. . . 1 . . . .
. . . 1 . . . .
. . . 1 . . . .
. . . 1 . . . .
. . . 1 . . . .
. . . 1 . . . .&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:1 --&gt;The arrFiles might be condensed to eight bitboards only, instead of 64 - if we index by&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:2:
&amp;lt;pre class=&amp;quot;text&amp;quot;&amp;gt;file(sq) == sq &amp;amp;amp; 7&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.text  {font-family:monospace;}
.text .imp {font-weight: bold; color: red;}
.text span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;text&quot;&gt;file(sq) == sq &amp;amp; 7&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:2 --&gt;instead of square.&lt;br /&gt;
&lt;!-- ws:start:WikiTextAnchorRule:22:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@Multiple&amp;quot; title=&amp;quot;Anchor: Multiple&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;Multiple&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:22 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:10:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc1&quot;&gt;&lt;a name=&quot;Multiple Pawns&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:10 --&gt;Multiple Pawns&lt;/h1&gt;
 Working in the &lt;strong&gt;bitboard centric world&lt;/strong&gt; to determine pawn related pattern set-wise.&lt;br /&gt;
&lt;br /&gt;
All pawns that are member of the &lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Spans&quot;&gt;rearspan&lt;/a&gt; of all own pawns, have at least one pawn in front on the same file. All pawns that are member of the &lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Spans&quot;&gt;frontspan&lt;/a&gt; of all own pawns, have at least one pawn behind on the same file.&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:3:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;// pawns with at least one pawn in front on the same file&amp;lt;br/&amp;gt;U64 wPawnsBehindOwn(U64 wpawns) {return wpawns &amp;amp;amp; wRearSpans(wpawns);}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;// pawns with at least one pawn behind on the same file&amp;lt;br/&amp;gt;U64 wPawnsInfrontOwn (U64 wpawns) {return wpawns &amp;amp;amp; wFrontSpans(wpawns);}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span class=&quot;co1&quot;&gt;// pawns with at least one pawn in front on the same file&lt;/span&gt;
U64 wPawnsBehindOwn&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 wpawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; wpawns &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; wRearSpans&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;wpawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// pawns with at least one pawn behind on the same file&lt;/span&gt;
U64 wPawnsInfrontOwn &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 wpawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; wpawns &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; wFrontSpans&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;wpawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:3 --&gt;Obviously, since each pawn in front of a pawn implies this pawn behind, the number of pawns in front is equal the number of pawns behind.&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:4:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;popCount(wPawnsBehindOwn) == popCount(wPawnsInfrontOwn)&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;popCount&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;wPawnsBehindOwn&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;==&lt;/span&gt; popCount&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;wPawnsInfrontOwn&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:4 --&gt;The intersection of both sets implies at least a triple, thus a pawn in front and behind.&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:5:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;U64 wPawnsInfrontAndBehindOwn (U64 wpawns) {&amp;lt;br/&amp;gt;   return wPawnsInfrontOwn(wpawns) &amp;amp;amp;  wPawnsBehindOwn(wpawns);&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;U64 wPawnsInfrontAndBehindOwn &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 wpawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; wPawnsInfrontOwn&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;wpawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;  wPawnsBehindOwn&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;wpawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:5 --&gt;If the intersection is empty on a file, it is a double pawn or a twin.&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:6:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;fileWithAtLeastTriple = fileFill(infrontAndBehindOwn);&amp;lt;br/&amp;gt;rearTwin  = behindOwn  &amp;amp;amp; ~fileWithAtLeastTriple;&amp;lt;br/&amp;gt;frontTwin = infrontOwn &amp;amp;amp; ~fileWithAtLeastTriple;&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;fileWithAtLeastTriple &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; fileFill&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;infrontAndBehindOwn&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
rearTwin  &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; behindOwn  &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; ~fileWithAtLeastTriple&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
frontTwin &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; infrontOwn &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; ~fileWithAtLeastTriple&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:6 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:12:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc2&quot;&gt;&lt;a name=&quot;Forum Posts&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:12 --&gt;Forum Posts&lt;/h1&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=29689&quot; rel=&quot;nofollow&quot;&gt;Doubled and Backward Pawn Engine &amp;quot;Definitions&amp;quot;&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Brian%20Richardson&quot;&gt;Brian Richardson&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, September 07, 2009&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=60133&quot; rel=&quot;nofollow&quot;&gt;Doubled pawns&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Stefano%20Gemma&quot;&gt;Stefano Gemma&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;, May 11, 2016&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:14:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc3&quot;&gt;&lt;a name=&quot;What links here?&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:14 --&gt;What links here?&lt;/h1&gt;
&lt;!-- ws:start:WikiTextIncludeRule:07:&amp;lt;img src=&amp;quot;https://www.wikispaces.com/site/embedthumbnail/include/backlinks?w=200&amp;amp;h=100&amp;quot; class=&amp;quot;WikiMedia WikiMediaInclude&amp;quot; id=&amp;quot;wikitext@@include@@page=&amp;amp;quot;Double and Triple (Bitboards)&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;20&amp;amp;quot;&amp;quot; title=&amp;quot;Include backlinks: page=&amp;amp;quot;Double and Triple (Bitboards)&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;20&amp;amp;quot;&amp;quot; /&amp;gt; --&gt;&lt;div class=&quot;includeBody-Double_and_Triple_(Bitboards) includeBody-Double%20and%20Triple%20%28Bitboards%29 includeBody&quot;&gt;&lt;table class=&quot;includeBacklinks&quot;&gt;
  &lt;thead&gt;
    &lt;tr class=&quot;includeBacklinksHeading&quot;&gt;
      &lt;th class=&quot;includeBacklinksPageHeading&quot;&gt;Page&lt;/th&gt;
      &lt;th class=&quot;includeBacklinksDateHeading&quot;&gt;Date Edited&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
    &lt;tbody&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Aegon+1993&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Aegon 1993&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 26, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Dispersion+and+Distortion&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Dispersion and Distortion&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 11, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Double+and+Triple+%28Bitboards%29&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Double and Triple (Bitboards)&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;May 12, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Doubled+Pawn&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Doubled Pawn&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 27, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Hans+Kmoch&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Hans Kmoch&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 11, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Pawn+Pattern+and+Properties&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Pawn Pattern and Properties&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 11, 2017&lt;/td&gt;
    &lt;/tr&gt;
      &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;&lt;!-- ws:end:WikiTextIncludeRule:07 --&gt;&lt;br /&gt;
&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Pattern%20and%20Properties&quot;&gt;Up one Level&lt;/a&gt;&lt;/strong&gt;</description>
          </item>
    <item>
      <title>Dumb7Fill</title>
      <link>https://chessprogramming.wikispaces.com/Dumb7Fill</link>
      <dc:creator>GerdIsenberg</dc:creator>
      <guid isPermaLink="true">https://chessprogramming.wikispaces.com/Dumb7Fill</guid>
      <comments>https://chessprogramming.wikispaces.com/page/messages/Dumb7Fill</comments>
      <pubDate>Fri, 27 May 2016 08:32:45 GMT</pubDate>
      <description>&lt;!-- ws:start:WikiTextTocRule:41:&amp;lt;img id=&amp;quot;wikitext@@toc@@normal&amp;quot; class=&amp;quot;WikiMedia WikiMediaToc&amp;quot; title=&amp;quot;Table of Contents&amp;quot; src=&amp;quot;/site/embedthumbnail/toc/normal?w=225&amp;amp;h=100&amp;quot;/&amp;gt; --&gt;&lt;div id=&quot;toc&quot;&gt;&lt;h1 class=&quot;nopad&quot;&gt;Table of Contents&lt;/h1&gt;&lt;!-- ws:end:WikiTextTocRule:41 --&gt;&lt;!-- ws:start:WikiTextTocRule:42: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Occluded Fill&quot;&gt;Occluded Fill&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:42 --&gt;&lt;!-- ws:start:WikiTextTocRule:43: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Occluded Fill-Seven Fill Cycles&quot;&gt;Seven Fill Cycles&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:43 --&gt;&lt;!-- ws:start:WikiTextTocRule:44: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Occluded Fill-Fill Loop&quot;&gt;Fill Loop&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:44 --&gt;&lt;!-- ws:start:WikiTextTocRule:45: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Occluded Fill-Unrolled Loop&quot;&gt;Unrolled Loop&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:45 --&gt;&lt;!-- ws:start:WikiTextTocRule:46: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Attack Fill&quot;&gt;Attack Fill&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:46 --&gt;&lt;!-- ws:start:WikiTextTocRule:47: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Attack Fill-Comparison with Kogge-Stone&quot;&gt;Comparison with Kogge-Stone&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:47 --&gt;&lt;!-- ws:start:WikiTextTocRule:48: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Attack Fill-All Directions&quot;&gt;All Directions&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:48 --&gt;&lt;!-- ws:start:WikiTextTocRule:49: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Generalized Rays&quot;&gt;Generalized Rays&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:49 --&gt;&lt;!-- ws:start:WikiTextTocRule:50: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Generalized Rays-Loop Version&quot;&gt;Loop Version&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:50 --&gt;&lt;!-- ws:start:WikiTextTocRule:51: --&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;a href=&quot;#Generalized Rays-Unrolled Attacks&quot;&gt;Unrolled Attacks&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:51 --&gt;&lt;!-- ws:start:WikiTextTocRule:52: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#See also&quot;&gt;See also&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:52 --&gt;&lt;!-- ws:start:WikiTextTocRule:53: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#External Links&quot;&gt;External Links&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:53 --&gt;&lt;!-- ws:start:WikiTextTocRule:54: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#What links here?&quot;&gt;What links here?&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:54 --&gt;&lt;!-- ws:start:WikiTextTocRule:55: --&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:55 --&gt;&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Home&quot;&gt;Home&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Board%20Representation&quot;&gt;Board Representation&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Bitboards&quot;&gt;Bitboards&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Sliding%20Piece%20Attacks&quot;&gt;Sliding Piece Attacks&lt;/a&gt; * Dumb7Fill&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Dumb7Fill&lt;/strong&gt; - the obvious, straight forward &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/Flood_fill&quot; rel=&quot;nofollow&quot;&gt;flood-fill&lt;/a&gt; approach works &lt;strong&gt;set-wise&lt;/strong&gt; - &lt;strong&gt;seven&lt;/strong&gt; times one fill-cycle by &lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#OneStepOnly&quot;&gt;one step only&lt;/a&gt; in one of eight &lt;a class=&quot;wiki_link&quot; href=&quot;/Direction&quot;&gt;directions&lt;/a&gt;. We rely on the &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/Compass_rose&quot; rel=&quot;nofollow&quot;&gt;compass rose&lt;/a&gt; to identify ray-directions.&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:0:
&amp;lt;pre class=&amp;quot;text&amp;quot;&amp;gt;  noWe         nort         noEa&amp;lt;br/&amp;gt;          +7    +8    +9&amp;lt;br/&amp;gt;              \  |  /&amp;lt;br/&amp;gt;  west    -1 &amp;amp;lt;-  0 -&amp;amp;gt; +1    east&amp;lt;br/&amp;gt;              /  |  \&amp;lt;br/&amp;gt;          -9    -8    -7&amp;lt;br/&amp;gt;  soWe         sout         soEa&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.text  {font-family:monospace;}
.text .imp {font-weight: bold; color: red;}
.text span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;text&quot;&gt;  noWe         nort         noEa
          +7    +8    +9
              \  |  /
  west    -1 &amp;lt;-  0 -&amp;gt; +1    east
              /  |  \
          -9    -8    -7
  soWe         sout         soEa&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:0 --&gt;&lt;!-- ws:start:WikiTextIncludeRule:012:&amp;lt;img src=&amp;quot;https://www.wikispaces.com/site/embedthumbnail/include/page?w=200&amp;amp;h=100&amp;quot; class=&amp;quot;WikiMedia WikiMediaInclude&amp;quot; id=&amp;quot;wikitext@@include@@page=&amp;amp;quot;MappingHint&amp;amp;quot;&amp;quot; title=&amp;quot;Include page: page=&amp;amp;quot;MappingHint&amp;amp;quot;&amp;quot; /&amp;gt; --&gt;

&lt;table class=&quot;wiki_table&quot;&gt;
    &lt;tr&gt;
        &lt;td&gt;&lt;a href=&quot;/Square%20Mapping%20Considerations&quot;&gt;&lt;img src=&quot;/file/view/mapping.JPG/93134172/mapping.JPG&quot; alt=&quot;mapping.JPG&quot; title=&quot;mapping.JPG&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/td&gt;
        &lt;td&gt;&lt;em&gt;Code samples and bitboard diagrams rely on &lt;a class=&quot;wiki_link&quot; href=&quot;/Square%20Mapping%20Considerations#LittleEndianRankFileMapping&quot;&gt;Little endian file and rank mapping&lt;/a&gt;&lt;/em&gt;.&lt;br /&gt;
&lt;/td&gt;
    &lt;/tr&gt;
&lt;/table&gt;

&lt;!-- ws:end:WikiTextIncludeRule:012 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextAnchorRule:56:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@OccludedFill&amp;quot; title=&amp;quot;Anchor: OccludedFill&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;OccludedFill&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:56 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:15:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc0&quot;&gt;&lt;a name=&quot;Occluded Fill&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:15 --&gt;Occluded Fill&lt;/h1&gt;
 An &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.thefreedictionary.com/occluded&quot; rel=&quot;nofollow&quot;&gt;occluded&lt;/a&gt; fill includes the flood generating &lt;a class=&quot;wiki_link&quot; href=&quot;/Sliding%20Pieces&quot;&gt;sliding pieces&lt;/a&gt;, but excludes the blocker. It is base of attack fills. One additional &lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#OneStepOnly&quot;&gt;direction shift&lt;/a&gt; excludes the sliders but includes the blocker.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:17:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc1&quot;&gt;&lt;a name=&quot;Occluded Fill-Seven Fill Cycles&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:17 --&gt;Seven Fill Cycles&lt;/h2&gt;
 The sliding pieces generate the flood. They were &lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#OneStepOnly&quot;&gt;shifted one step&lt;/a&gt; in the desired direction and &lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#Intersection&quot;&gt;intersected&lt;/a&gt; with the set of empty squares, the propagator. The flood aggregates the intersection and the cycle repeats six further times to cover the maximum &lt;a class=&quot;wiki_link&quot; href=&quot;/Distance&quot;&gt;distance&lt;/a&gt; on the &lt;a class=&quot;wiki_link&quot; href=&quot;/Chessboard&quot;&gt;chessboard&lt;/a&gt;. A blocker, not member of propagator, stops the flood in that particular ray-direction for one sliding piece. Therefor occluded fill contains the initial generator but excludes any blocker.&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:1:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;U64 soutOccl(U64 gen, U64 pro) {&amp;lt;br/&amp;gt;   for (int cycle = 0; cycle &amp;amp;lt; 7; cycle++)&amp;lt;br/&amp;gt;      gen |= pro &amp;amp;amp; (gen &amp;amp;gt;&amp;amp;gt; 8);&amp;lt;br/&amp;gt;   return gen;&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;U64 soutOccl&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 gen, U64 pro&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; cycle &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; cycle &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; cycle&lt;span class=&quot;sy2&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
      gen &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; pro &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;gen &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; gen&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:1 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:19:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc2&quot;&gt;&lt;a name=&quot;Occluded Fill-Fill Loop&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:19 --&gt;Fill Loop&lt;/h2&gt;
 Alternatively one may save move-instructions by introducing an explicit flood accumulator, and to probably terminate the loop early if the flood stops:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:2:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;U64 soutOccl(U64 gen, U64 pro) {&amp;lt;br/&amp;gt;   U64 flood = 0;&amp;lt;br/&amp;gt;   while (gen) {&amp;lt;br/&amp;gt;      flood |= gen;&amp;lt;br/&amp;gt;      gen = (gen &amp;amp;gt;&amp;amp;gt; 8) &amp;amp;amp; pro;&amp;lt;br/&amp;gt;   }&amp;lt;br/&amp;gt;   return flood;&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;U64 soutOccl&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 gen, U64 pro&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   U64 flood &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;gen&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
      flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; gen&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
      gen &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;gen &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; pro&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; flood&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:2 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:21:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc3&quot;&gt;&lt;a name=&quot;Occluded Fill-Unrolled Loop&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:21 --&gt;Unrolled Loop&lt;/h2&gt;
 To &lt;a class=&quot;wiki_link&quot; href=&quot;/Avoiding%20Branches&quot;&gt;avoid conditional branches&lt;/a&gt; and to schedule several directions in parallel, the &amp;quot;real&amp;quot; dumb7fill unrolls the loop:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:3:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;U64 soutOccl(U64 gen, U64 pro) {&amp;lt;br/&amp;gt;   U64 flood = gen;&amp;lt;br/&amp;gt;   flood |= gen = (gen &amp;amp;gt;&amp;amp;gt; 8) &amp;amp;amp; pro;&amp;lt;br/&amp;gt;   flood |= gen = (gen &amp;amp;gt;&amp;amp;gt; 8) &amp;amp;amp; pro;&amp;lt;br/&amp;gt;   flood |= gen = (gen &amp;amp;gt;&amp;amp;gt; 8) &amp;amp;amp; pro;&amp;lt;br/&amp;gt;   flood |= gen = (gen &amp;amp;gt;&amp;amp;gt; 8) &amp;amp;amp; pro;&amp;lt;br/&amp;gt;   flood |= gen = (gen &amp;amp;gt;&amp;amp;gt; 8) &amp;amp;amp; pro;&amp;lt;br/&amp;gt;   flood |= gen = (gen &amp;amp;gt;&amp;amp;gt; 8) &amp;amp;amp; pro;&amp;lt;br/&amp;gt;   flood |=       (gen &amp;amp;gt;&amp;amp;gt; 8) &amp;amp;amp; pro;&amp;lt;br/&amp;gt;   return flood;&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;U64 soutOccl&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 gen, U64 pro&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   U64 flood &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; gen&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; gen &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;gen &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; pro&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; gen &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;gen &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; pro&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; gen &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;gen &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; pro&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; gen &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;gen &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; pro&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; gen &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;gen &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; pro&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; gen &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;gen &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; pro&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;       &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;gen &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; pro&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; flood&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:3 --&gt;Some south fill cycles in slow motion:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:4:
&amp;lt;pre class=&amp;quot;text&amp;quot;&amp;gt;flood = gen =&amp;lt;br/&amp;gt;brooks|bqueen       empty&amp;lt;br/&amp;gt;1 . . . . . . .     . 1 1 1 1 1 . 1&amp;lt;br/&amp;gt;. . . 1 . . . .     1 1 . . 1 . 1 .&amp;lt;br/&amp;gt;. . . . . . . .     1 . 1 1 1 1 . 1&amp;lt;br/&amp;gt;. . . . . . . .     1 1 . 1 1 1 1 1&amp;lt;br/&amp;gt;. . . . . 1 . .     1 1 1 . 1 . 1 1&amp;lt;br/&amp;gt;. . . . . . . .     1 1 . 1 1 1 1 .&amp;lt;br/&amp;gt;. . . . . . . .     . . . 1 1 . . 1&amp;lt;br/&amp;gt;. . . . . . . .     . 1 1 . 1 1 . 1&amp;lt;br/&amp;gt;1.fill&amp;lt;br/&amp;gt; gen = gen &amp;amp;gt;&amp;amp;gt; 8   &amp;amp;amp;  empty           =&amp;amp;gt;  flood&amp;lt;br/&amp;gt;. . . . . . . .      . . . . . . . .     1 . . . . . . .&amp;lt;br/&amp;gt;1 . . . . . . .      1 . . . . . . .     1 . . 1 . . . .&amp;lt;br/&amp;gt;. . . 1 . . . .      . . . 1 . . . .     . . . 1 . . . .&amp;lt;br/&amp;gt;. . . . . . . .      . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .      . . . . . . . .     . . . . . 1 . .&amp;lt;br/&amp;gt;. . . . . 1 . .      . . . . . 1 . .     . . . . . 1 . .&amp;lt;br/&amp;gt;. . . . . . . .      . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .      . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;2.fill&amp;lt;br/&amp;gt; gen = gen &amp;amp;gt;&amp;amp;gt; 8   &amp;amp;amp;  empty               flood  |= ...&amp;lt;br/&amp;gt;. . . . . . . .      . . . . . . . .     1 . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .      . . . . . . . .     1 . . 1 . . . .&amp;lt;br/&amp;gt;1 . . . . . . .      1 . . . . . . .     1 . . 1 . . . .&amp;lt;br/&amp;gt;. . . 1 . . . .      . . . 1 . . . .     . . . 1 . . . .&amp;lt;br/&amp;gt;. . . . . . . .      . . . . . . . .     . . . . . 1 . .&amp;lt;br/&amp;gt;. . . . . . . .      . . . . . . . .     . . . . . 1 . .&amp;lt;br/&amp;gt;. . . . . 1 . .      . . . . . 0 . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .      . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;3.fill&amp;lt;br/&amp;gt; gen = gen &amp;amp;gt;&amp;amp;gt; 8   &amp;amp;amp;  empty               flood |= ...&amp;lt;br/&amp;gt;. . . . . . . .      . . . . . . . .     1 . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .      . . . . . . . .     1 . . 1 . . . .&amp;lt;br/&amp;gt;. . . . . . . .      . . . . . . . .     1 . . 1 . . . .&amp;lt;br/&amp;gt;1 . . . . . . .      1 . . . . . . .     1 . . 1 . . . .&amp;lt;br/&amp;gt;. . . 1 . . . .      . . . 0 . . . .     . . . . . 1 . .&amp;lt;br/&amp;gt;. . . . . . . .      . . . . . . . .     . . . . . 1 . .&amp;lt;br/&amp;gt;. . . . . . . .      . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .      . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;...&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;6.fill&amp;lt;br/&amp;gt; gen = gen &amp;amp;gt;&amp;amp;gt; 8  &amp;amp;amp;   empty               flood  |= ...&amp;lt;br/&amp;gt;. . . . . . . .      . . . . . . . .     1 . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .      . . . . . . . .     1 . . 1 . . . .&amp;lt;br/&amp;gt;. . . . . . . .      . . . . . . . .     1 . . 1 . . . .&amp;lt;br/&amp;gt;. . . . . . . .      . . . . . . . .     1 . . 1 . . . .&amp;lt;br/&amp;gt;. . . . . . . .      . . . . . . . .     1 . . . . 1 . .&amp;lt;br/&amp;gt;. . . . . . . .      . . . . . . . .     1 . . . . 1 . .&amp;lt;br/&amp;gt;1 . . . . . . .      0 . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .      . . . . . . . .     . . . . . . . .&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.text  {font-family:monospace;}
.text .imp {font-weight: bold; color: red;}
.text span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;text&quot;&gt;flood = gen =
brooks|bqueen       empty
1 . . . . . . .     . 1 1 1 1 1 . 1
. . . 1 . . . .     1 1 . . 1 . 1 .
. . . . . . . .     1 . 1 1 1 1 . 1
. . . . . . . .     1 1 . 1 1 1 1 1
. . . . . 1 . .     1 1 1 . 1 . 1 1
. . . . . . . .     1 1 . 1 1 1 1 .
. . . . . . . .     . . . 1 1 . . 1
. . . . . . . .     . 1 1 . 1 1 . 1
1.fill
 gen = gen &amp;gt;&amp;gt; 8   &amp;amp;  empty           =&amp;gt;  flood
. . . . . . . .      . . . . . . . .     1 . . . . . . .
1 . . . . . . .      1 . . . . . . .     1 . . 1 . . . .
. . . 1 . . . .      . . . 1 . . . .     . . . 1 . . . .
. . . . . . . .      . . . . . . . .     . . . . . . . .
. . . . . . . .      . . . . . . . .     . . . . . 1 . .
. . . . . 1 . .      . . . . . 1 . .     . . . . . 1 . .
. . . . . . . .      . . . . . . . .     . . . . . . . .
. . . . . . . .      . . . . . . . .     . . . . . . . .
2.fill
 gen = gen &amp;gt;&amp;gt; 8   &amp;amp;  empty               flood  |= ...
. . . . . . . .      . . . . . . . .     1 . . . . . . .
. . . . . . . .      . . . . . . . .     1 . . 1 . . . .
1 . . . . . . .      1 . . . . . . .     1 . . 1 . . . .
. . . 1 . . . .      . . . 1 . . . .     . . . 1 . . . .
. . . . . . . .      . . . . . . . .     . . . . . 1 . .
. . . . . . . .      . . . . . . . .     . . . . . 1 . .
. . . . . 1 . .      . . . . . 0 . .     . . . . . . . .
. . . . . . . .      . . . . . . . .     . . . . . . . .
3.fill
 gen = gen &amp;gt;&amp;gt; 8   &amp;amp;  empty               flood |= ...
. . . . . . . .      . . . . . . . .     1 . . . . . . .
. . . . . . . .      . . . . . . . .     1 . . 1 . . . .
. . . . . . . .      . . . . . . . .     1 . . 1 . . . .
1 . . . . . . .      1 . . . . . . .     1 . . 1 . . . .
. . . 1 . . . .      . . . 0 . . . .     . . . . . 1 . .
. . . . . . . .      . . . . . . . .     . . . . . 1 . .
. . . . . . . .      . . . . . . . .     . . . . . . . .
. . . . . . . .      . . . . . . . .     . . . . . . . .
&amp;nbsp;
...
&amp;nbsp;
6.fill
 gen = gen &amp;gt;&amp;gt; 8  &amp;amp;   empty               flood  |= ...
. . . . . . . .      . . . . . . . .     1 . . . . . . .
. . . . . . . .      . . . . . . . .     1 . . 1 . . . .
. . . . . . . .      . . . . . . . .     1 . . 1 . . . .
. . . . . . . .      . . . . . . . .     1 . . 1 . . . .
. . . . . . . .      . . . . . . . .     1 . . . . 1 . .
. . . . . . . .      . . . . . . . .     1 . . . . 1 . .
1 . . . . . . .      0 . . . . . . .     . . . . . . . .
. . . . . . . .      . . . . . . . .     . . . . . . . .&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:4 --&gt;The flood already stopped, the final 7th fill cycles don&#039;t change anything.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:23:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc4&quot;&gt;&lt;a name=&quot;Attack Fill&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:23 --&gt;Attack Fill&lt;/h1&gt;
 To get attacks, one additional &lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#OneStepOnly&quot;&gt;direction shift&lt;/a&gt; of the occluded fill is necessary to exclude the rooks/queen and include the blocker:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:5:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;U64 soutAttacks (U64 rooks, U64 empty) {return soutOne(soutOccl(rooks, empty));}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;U64 soutAttacks &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 rooks, U64 empty&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; soutOne&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;soutOccl&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rooks, empty&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:5 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:25:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc5&quot;&gt;&lt;a name=&quot;Attack Fill-Comparison with Kogge-Stone&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:25 --&gt;Comparison with Kogge-Stone&lt;/h2&gt;
 To combine the dumb7fill as attack getter, we also can take advantage of &lt;a class=&quot;wiki_link&quot; href=&quot;/First%20Rank%20Attacks#TheOuterSquares&quot;&gt;outer square&lt;/a&gt; occupancy doesn&#039;t affect the attack set. We need one fill cycle less, before the final shift. That takes 19 operations. In anticipation to &lt;a class=&quot;wiki_link&quot; href=&quot;/Parallel%20Prefix%20Algorithms&quot;&gt;parallel prefix&lt;/a&gt;, a &lt;a class=&quot;wiki_link&quot; href=&quot;/Kogge-Stone%20Algorithm&quot;&gt;Kogge-Stone&lt;/a&gt; approach takes 14 instructions, 5 less. Kogge-Stone needs more move-instructions and a temporary register to compute generator as well as propagator, while dumb7fill uses a const propagator:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:6:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;dumb7fill                                  | Kogge-Stone Algorithm&amp;lt;br/&amp;gt;                                           |&amp;lt;br/&amp;gt;U64 soutAttacks(U64 rooks, U64 empty) {    | U64 soutAttacks(U64 rooks, U64 empty) {&amp;lt;br/&amp;gt;   U64 flood = rooks;                      |    rooks |= empty &amp;amp;amp; (rooks &amp;amp;gt;&amp;amp;gt;  8);&amp;lt;br/&amp;gt;   flood |= rooks = (rooks &amp;amp;gt;&amp;amp;gt; 8) &amp;amp;amp; empty;  |    empty  = empty &amp;amp;amp; (empty &amp;amp;gt;&amp;amp;gt;  8);&amp;lt;br/&amp;gt;   flood |= rooks = (rooks &amp;amp;gt;&amp;amp;gt; 8) &amp;amp;amp; empty;  |    rooks |= empty &amp;amp;amp; (rooks &amp;amp;gt;&amp;amp;gt; 16);&amp;lt;br/&amp;gt;   flood |= rooks = (rooks &amp;amp;gt;&amp;amp;gt; 8) &amp;amp;amp; empty;  |    empty  = empty &amp;amp;amp; (empty &amp;amp;gt;&amp;amp;gt; 16);&amp;lt;br/&amp;gt;   flood |= rooks = (rooks &amp;amp;gt;&amp;amp;gt; 8) &amp;amp;amp; empty;  |    rooks |= empty &amp;amp;amp; (rooks &amp;amp;gt;&amp;amp;gt; 32);&amp;lt;br/&amp;gt;   flood |= rooks = (rooks &amp;amp;gt;&amp;amp;gt; 8) &amp;amp;amp; empty;  |    return            rooks &amp;amp;gt;&amp;amp;gt;  8;&amp;lt;br/&amp;gt;   flood |=         (rooks &amp;amp;gt;&amp;amp;gt; 8) &amp;amp;amp; empty;  | }&amp;lt;br/&amp;gt;   return            flood &amp;amp;gt;&amp;amp;gt; 8;           |&amp;lt;br/&amp;gt;}                                          |&amp;lt;br/&amp;gt;                                           |&amp;lt;br/&amp;gt;in x86/64 assembly                         | in x86/64 assembly&amp;lt;br/&amp;gt;; dumb7fill                                |  ; koggeStone&amp;lt;br/&amp;gt;; rooks rdx                                |  ; rooks rdx&amp;lt;br/&amp;gt;; empty rcx                                |  ; empty rcx&amp;lt;br/&amp;gt;                                           |&amp;lt;br/&amp;gt;  mov   rax, rdx                           |    mov   rax, rdx&amp;lt;br/&amp;gt;                                           |    shr   rax, 8&amp;lt;br/&amp;gt;  shr   rdx, 8                             |    and   rax, rcx&amp;lt;br/&amp;gt;  and   rdx, rcx                           |    or    rdx, rax&amp;lt;br/&amp;gt;  or    rax, rdx                           |&amp;lt;br/&amp;gt;                                           |    mov   rax, rcx&amp;lt;br/&amp;gt;  shr   rdx, 8                             |    shr   rax, 8&amp;lt;br/&amp;gt;  and   rdx, rcx                           |    and   rcx, rax&amp;lt;br/&amp;gt;  or    rax, rdx                           |&amp;lt;br/&amp;gt;                                           |    mov   rax, rdx&amp;lt;br/&amp;gt;  shr   rdx, 8                             |    shr   rax, 16&amp;lt;br/&amp;gt;  and   rdx, rcx                           |    and   rax, rcx&amp;lt;br/&amp;gt;  or    rax, rdx                           |    or    rdx, rax&amp;lt;br/&amp;gt;                                           |&amp;lt;br/&amp;gt;  shr   rdx, 8                             |    mov   rax, rcx&amp;lt;br/&amp;gt;  and   rdx, rcx                           |    shr   rax, 16&amp;lt;br/&amp;gt;  or    rax, rdx                           |    and   rcx, rax&amp;lt;br/&amp;gt;                                           |&amp;lt;br/&amp;gt;  shr   rdx, 8                             |    mov   rax, rdx&amp;lt;br/&amp;gt;  and   rdx, rcx                           |    shr   rax, 32&amp;lt;br/&amp;gt;  or    rax, rdx                           |    and   rax, rcx&amp;lt;br/&amp;gt;                                           |    or    rax, rdx&amp;lt;br/&amp;gt;  shr   rdx, 8                             |&amp;lt;br/&amp;gt;  and   rdx, rcx                           |    shr   rax, 8&amp;lt;br/&amp;gt;  or    rax, rdx                           |&amp;lt;br/&amp;gt;                                           |&amp;lt;br/&amp;gt;  shr   rax, 8                             |&amp;lt;br/&amp;gt;                                           |&amp;lt;br/&amp;gt;   1 move                                  |     5 moves&amp;lt;br/&amp;gt;  19 operations                            |    14 operations&amp;lt;br/&amp;gt;  20 instructions                          |    19 instructions&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;dumb7fill                                  &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; Kogge&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;Stone Algorithm
                                           &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;
U64 soutAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 rooks, U64 empty&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;    &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; U64 soutAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 rooks, U64 empty&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   U64 flood &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rooks&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;                      &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;    rooks &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; empty &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rooks &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt;  &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rooks &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rooks &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;    empty  &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; empty &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;empty &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt;  &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rooks &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rooks &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;    rooks &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; empty &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rooks &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rooks &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rooks &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;    empty  &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; empty &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;empty &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rooks &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rooks &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;    rooks &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; empty &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rooks &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;32&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rooks &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rooks &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;            rooks &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt;  &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;         &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rooks &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;            flood &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;           &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;                                          &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;
                                           &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;
in x86&lt;span class=&quot;sy2&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;64&lt;/span&gt; assembly                         &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; in x86&lt;span class=&quot;sy2&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;64&lt;/span&gt; assembly
&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; dumb7fill                                &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;  &lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; koggeStone
&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; rooks rdx                                &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;  &lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; rooks rdx
&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; empty rcx                                &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;  &lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; empty rcx
                                           &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;
  mov   rax, rdx                           &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;    mov   rax, rdx
                                           &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;    shr   rax, &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;
  shr   rdx, &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;                             &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;    and   rax, rcx
  and   rdx, rcx                           &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;    or    rdx, rax
  or    rax, rdx                           &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;
                                           &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;    mov   rax, rcx
  shr   rdx, &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;                             &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;    shr   rax, &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;
  and   rdx, rcx                           &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;    and   rcx, rax
  or    rax, rdx                           &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;
                                           &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;    mov   rax, rdx
  shr   rdx, &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;                             &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;    shr   rax, &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;
  and   rdx, rcx                           &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;    and   rax, rcx
  or    rax, rdx                           &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;    or    rdx, rax
                                           &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;
  shr   rdx, &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;                             &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;    mov   rax, rcx
  and   rdx, rcx                           &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;    shr   rax, &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;
  or    rax, rdx                           &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;    and   rcx, rax
                                           &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;
  shr   rdx, &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;                             &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;    mov   rax, rdx
  and   rdx, rcx                           &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;    shr   rax, &lt;span class=&quot;nu0&quot;&gt;32&lt;/span&gt;
  or    rax, rdx                           &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;    and   rax, rcx
                                           &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;    or    rax, rdx
  shr   rdx, &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;                             &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;
  and   rdx, rcx                           &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;    shr   rax, &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;
  or    rax, rdx                           &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;
                                           &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;
  shr   rax, &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;                             &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;
                                           &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;
   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; move                                  &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;     &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt; moves
  &lt;span class=&quot;nu0&quot;&gt;19&lt;/span&gt; operations                            &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;    &lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt; operations
  &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt; instructions                          &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;    &lt;span class=&quot;nu0&quot;&gt;19&lt;/span&gt; instructions&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:6 --&gt;Thus, dumb7fill is not that bad, specially if processing several directions in parallel, like south and north, all east and all west attacks.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:27:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc6&quot;&gt;&lt;a name=&quot;Attack Fill-All Directions&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:27 --&gt;All Directions&lt;/h2&gt;
 &lt;!-- ws:start:WikiTextCodeRule:7:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;U64 soutAttacks(U64 rooks, U64 empty) {&amp;lt;br/&amp;gt;   U64 flood = rooks;&amp;lt;br/&amp;gt;   flood |= rooks = (rooks &amp;amp;gt;&amp;amp;gt; 8) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   flood |= rooks = (rooks &amp;amp;gt;&amp;amp;gt; 8) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   flood |= rooks = (rooks &amp;amp;gt;&amp;amp;gt; 8) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   flood |= rooks = (rooks &amp;amp;gt;&amp;amp;gt; 8) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   flood |= rooks = (rooks &amp;amp;gt;&amp;amp;gt; 8) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   flood |=         (rooks &amp;amp;gt;&amp;amp;gt; 8) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   return            flood &amp;amp;gt;&amp;amp;gt; 8;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;U64 nortAttacks(U64 rooks, U64 empty) {&amp;lt;br/&amp;gt;   U64 flood = rooks;&amp;lt;br/&amp;gt;   flood |= rooks = (rooks &amp;amp;lt;&amp;amp;lt; 8) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   flood |= rooks = (rooks &amp;amp;lt;&amp;amp;lt; 8) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   flood |= rooks = (rooks &amp;amp;lt;&amp;amp;lt; 8) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   flood |= rooks = (rooks &amp;amp;lt;&amp;amp;lt; 8) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   flood |= rooks = (rooks &amp;amp;lt;&amp;amp;lt; 8) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   flood |=         (rooks &amp;amp;lt;&amp;amp;lt; 8) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   return            flood &amp;amp;lt;&amp;amp;lt; 8;&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;U64 soutAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 rooks, U64 empty&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   U64 flood &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rooks&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rooks &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rooks &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rooks &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rooks &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rooks &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rooks &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rooks &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rooks &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rooks &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rooks &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;         &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rooks &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;            flood &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
U64 nortAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 rooks, U64 empty&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   U64 flood &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rooks&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rooks &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rooks &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rooks &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rooks &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rooks &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rooks &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rooks &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rooks &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rooks &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rooks &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;         &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rooks &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;            flood &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:7 --&gt;Horizontal fills need to consider wraps from H-file to A-file and vice versa. Fortunately this can be combined by intersection of ~A-file or ~H-file with the propagator:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:8:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;U64 eastAttacks(U64 rooks, U64 empty) {&amp;lt;br/&amp;gt;   const U64 notA = C64(0xfefefefefefefefe);&amp;lt;br/&amp;gt;   U64 flood = rooks;&amp;lt;br/&amp;gt;   empty &amp;amp;amp;= notA;&amp;lt;br/&amp;gt;   flood |= rooks = (rooks &amp;amp;lt;&amp;amp;lt; 1) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   flood |= rooks = (rooks &amp;amp;lt;&amp;amp;lt; 1) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   flood |= rooks = (rooks &amp;amp;lt;&amp;amp;lt; 1) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   flood |= rooks = (rooks &amp;amp;lt;&amp;amp;lt; 1) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   flood |= rooks = (rooks &amp;amp;lt;&amp;amp;lt; 1) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   flood |=         (rooks &amp;amp;lt;&amp;amp;lt; 1) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   return           (flood &amp;amp;lt;&amp;amp;lt; 1) &amp;amp;amp; notA ;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;U64 noEaAttacks(U64 bishops, U64 empty) {&amp;lt;br/&amp;gt;   const U64 notA = C64(0xfefefefefefefefe);&amp;lt;br/&amp;gt;   U64 flood = bishops;&amp;lt;br/&amp;gt;   empty &amp;amp;amp;= notA;&amp;lt;br/&amp;gt;   flood |= bishops = (bishops &amp;amp;lt;&amp;amp;lt; 9) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   flood |= bishops = (bishops &amp;amp;lt;&amp;amp;lt; 9) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   flood |= bishops = (bishops &amp;amp;lt;&amp;amp;lt; 9) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   flood |= bishops = (bishops &amp;amp;lt;&amp;amp;lt; 9) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   flood |= bishops = (bishops &amp;amp;lt;&amp;amp;lt; 9) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   flood |=           (bishops &amp;amp;lt;&amp;amp;lt; 9) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   return               (flood &amp;amp;lt;&amp;amp;lt; 9) &amp;amp;amp; notA ;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;U64 soEaAttacks(U64 bishops, U64 empty) {&amp;lt;br/&amp;gt;   const U64 notA = C64(0xfefefefefefefefe);&amp;lt;br/&amp;gt;   U64 flood = bishops;&amp;lt;br/&amp;gt;   empty &amp;amp;amp;= notA;&amp;lt;br/&amp;gt;   flood |= bishops = (bishops &amp;amp;gt;&amp;amp;gt; 7) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   flood |= bishops = (bishops &amp;amp;gt;&amp;amp;gt; 7) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   flood |= bishops = (bishops &amp;amp;gt;&amp;amp;gt; 7) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   flood |= bishops = (bishops &amp;amp;gt;&amp;amp;gt; 7) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   flood |= bishops = (bishops &amp;amp;gt;&amp;amp;gt; 7) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   flood |=           (bishops &amp;amp;gt;&amp;amp;gt; 7) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   return               (flood &amp;amp;gt;&amp;amp;gt; 7) &amp;amp;amp; notA ;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;U64 westAttacks(U64 rooks, U64 empty) {&amp;lt;br/&amp;gt;   const U64 notH = C64(0x7f7f7f7f7f7f7f7f);&amp;lt;br/&amp;gt;   U64 flood = rooks;&amp;lt;br/&amp;gt;   empty &amp;amp;amp;= notH;&amp;lt;br/&amp;gt;   flood |= rooks = (rooks &amp;amp;gt;&amp;amp;gt; 1) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   flood |= rooks = (rooks &amp;amp;gt;&amp;amp;gt; 1) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   flood |= rooks = (rooks &amp;amp;gt;&amp;amp;gt; 1) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   flood |= rooks = (rooks &amp;amp;gt;&amp;amp;gt; 1) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   flood |= rooks = (rooks &amp;amp;gt;&amp;amp;gt; 1) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   flood |=         (rooks &amp;amp;gt;&amp;amp;gt; 1) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   return           (flood &amp;amp;gt;&amp;amp;gt; 1) &amp;amp;amp; notH ;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;U64 soWeAttacks(U64 bishops, U64 empty) {&amp;lt;br/&amp;gt;   const U64 notH = C64(0x7f7f7f7f7f7f7f7f);&amp;lt;br/&amp;gt;   U64 flood = bishops;&amp;lt;br/&amp;gt;   empty &amp;amp;amp;= notH;&amp;lt;br/&amp;gt;   flood |= bishops = (bishops &amp;amp;gt;&amp;amp;gt; 9) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   flood |= bishops = (bishops &amp;amp;gt;&amp;amp;gt; 9) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   flood |= bishops = (bishops &amp;amp;gt;&amp;amp;gt; 9) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   flood |= bishops = (bishops &amp;amp;gt;&amp;amp;gt; 9) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   flood |= bishops = (bishops &amp;amp;gt;&amp;amp;gt; 9) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   flood |=           (bishops &amp;amp;gt;&amp;amp;gt; 9) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   return               (flood &amp;amp;gt;&amp;amp;gt; 9) &amp;amp;amp; notH ;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;U64 noWeAttacks(U64 bishops, U64 empty) {&amp;lt;br/&amp;gt;   const U64 notH = C64(0x7f7f7f7f7f7f7f7f);&amp;lt;br/&amp;gt;   U64 flood = bishops;&amp;lt;br/&amp;gt;   empty &amp;amp;amp;= notH;&amp;lt;br/&amp;gt;   flood |= bishops = (bishops &amp;amp;lt;&amp;amp;lt; 7) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   flood |= bishops = (bishops &amp;amp;lt;&amp;amp;lt; 7) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   flood |= bishops = (bishops &amp;amp;lt;&amp;amp;lt; 7) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   flood |= bishops = (bishops &amp;amp;lt;&amp;amp;lt; 7) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   flood |= bishops = (bishops &amp;amp;lt;&amp;amp;lt; 7) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   flood |=           (bishops &amp;amp;lt;&amp;amp;lt; 7) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   return               (flood &amp;amp;lt;&amp;amp;lt; 7) &amp;amp;amp; notH ;&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;U64 eastAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 rooks, U64 empty&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; U64 notA &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; C64&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu12&quot;&gt;0xfefefefefefefefe&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   U64 flood &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rooks&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   empty &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; notA&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rooks &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rooks &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rooks &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rooks &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rooks &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rooks &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rooks &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rooks &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rooks &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rooks &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;         &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rooks &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;           &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;flood &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; notA &lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
U64 noEaAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 bishops, U64 empty&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; U64 notA &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; C64&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu12&quot;&gt;0xfefefefefefefefe&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   U64 flood &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bishops&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   empty &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; notA&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bishops &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bishops &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bishops &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bishops &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bishops &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bishops &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bishops &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bishops &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bishops &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bishops &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;           &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bishops &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;               &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;flood &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; notA &lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
U64 soEaAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 bishops, U64 empty&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; U64 notA &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; C64&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu12&quot;&gt;0xfefefefefefefefe&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   U64 flood &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bishops&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   empty &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; notA&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bishops &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bishops &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bishops &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bishops &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bishops &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bishops &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bishops &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bishops &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bishops &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bishops &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;           &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bishops &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;               &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;flood &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; notA &lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
U64 westAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 rooks, U64 empty&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; U64 notH &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; C64&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu12&quot;&gt;0x7f7f7f7f7f7f7f7f&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   U64 flood &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rooks&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   empty &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; notH&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rooks &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rooks &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rooks &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rooks &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rooks &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rooks &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rooks &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rooks &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rooks &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rooks &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;         &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rooks &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;           &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;flood &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; notH &lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
U64 soWeAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 bishops, U64 empty&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; U64 notH &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; C64&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu12&quot;&gt;0x7f7f7f7f7f7f7f7f&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   U64 flood &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bishops&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   empty &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; notH&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bishops &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bishops &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bishops &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bishops &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bishops &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bishops &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bishops &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bishops &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bishops &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bishops &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;           &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bishops &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;               &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;flood &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; notH &lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
U64 noWeAttacks&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 bishops, U64 empty&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; U64 notH &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; C64&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu12&quot;&gt;0x7f7f7f7f7f7f7f7f&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   U64 flood &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bishops&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   empty &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; notH&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bishops &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bishops &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bishops &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bishops &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bishops &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bishops &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bishops &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bishops &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; bishops &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bishops &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;           &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bishops &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;               &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;flood &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; notH &lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:8 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextAnchorRule:57:&amp;lt;img src=&amp;quot;/i/anchor.gif&amp;quot; class=&amp;quot;WikiAnchor&amp;quot; alt=&amp;quot;Anchor&amp;quot; id=&amp;quot;wikitext@@anchor@@GeneralizedRays&amp;quot; title=&amp;quot;Anchor: GeneralizedRays&amp;quot;/&amp;gt; --&gt;&lt;a name=&quot;GeneralizedRays&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextAnchorRule:57 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:29:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc7&quot;&gt;&lt;a name=&quot;Generalized Rays&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:29 --&gt;Generalized Rays&lt;/h1&gt;
 &lt;br /&gt;
Since &lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#Rotate&quot;&gt;rotate&lt;/a&gt; works like a &lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#GeneralizedShift&quot;&gt;generalized shift&lt;/a&gt; with positive or negative shift amount - since it internally applies a modulo 64 and makes -i = 64-i. We need to clear either the lower or upper bits by intersection with a mask, which might be combined with the wrap-ands for &lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#OneStepOnly&quot;&gt;one step&lt;/a&gt;. It might be applied to get attacks for both sides with a direction parameter and small lookups for shift amount and wrap-ands - instead of multiple code for eight directions. Of course generalized shift will be a bit slower due to lookups and using cl as the shift amount register.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:31:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc8&quot;&gt;&lt;a name=&quot;Generalized Rays-Loop Version&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:31 --&gt;Loop Version&lt;/h2&gt;
 This is the loop-version:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:9:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;U64 occludedFill (U64 gen, U64 pro, int dir8) {&amp;lt;br/&amp;gt;   U64 flood = 0;&amp;lt;br/&amp;gt;   if (gen) {&amp;lt;br/&amp;gt;      int r = shift[dir8]; // {+-1,7,8,9}&amp;lt;br/&amp;gt;      pro  &amp;amp;amp;= avoidWrap[dir8];&amp;lt;br/&amp;gt;      do {&amp;lt;br/&amp;gt;         flood |= gen;&amp;lt;br/&amp;gt;         gen = rotateLeft(gen, r) &amp;amp;amp; pro;&amp;lt;br/&amp;gt;      } while (gen);&amp;lt;br/&amp;gt;   }&amp;lt;br/&amp;gt;   return flood;&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;U64 shiftOne (U64 b, int dir8) {&amp;lt;br/&amp;gt;   int r = shift[dir8]; // {+-1,7,8,9}&amp;lt;br/&amp;gt;   return rotateLeft(b, r) &amp;amp;amp; avoidWrap[dir8];&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;U64 slidingAttacks (U64 sliders, U64 empty, int dir8) {&amp;lt;br/&amp;gt;   U64 fill = occludedFill(slider, empty, dir8)&amp;lt;br/&amp;gt;   return shiftOne(fill, dir8);&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;// positve left, negative right shifts&amp;lt;br/&amp;gt;int shift[8] = {9, 1,-7,-8,-9,-1, 7, 8};&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;U64 avoidWrap[8] =&amp;lt;br/&amp;gt;{&amp;lt;br/&amp;gt;   0xfefefefefefefe00,&amp;lt;br/&amp;gt;   0xfefefefefefefefe,&amp;lt;br/&amp;gt;   0x00fefefefefefefe,&amp;lt;br/&amp;gt;   0x00ffffffffffffff,&amp;lt;br/&amp;gt;   0x007f7f7f7f7f7f7f,&amp;lt;br/&amp;gt;   0x7f7f7f7f7f7f7f7f,&amp;lt;br/&amp;gt;   0x7f7f7f7f7f7f7f00,&amp;lt;br/&amp;gt;   0xffffffffffffff00,&amp;lt;br/&amp;gt;};&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;U64 occludedFill &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 gen, U64 pro, &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; dir8&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   U64 flood &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;gen&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
      &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; r &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; shift&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;dir8&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// {+-1,7,8,9}&lt;/span&gt;
      pro  &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; avoidWrap&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;dir8&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;kw1&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
         flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; gen&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
         gen &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rotateLeft&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;gen, r&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; pro&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;gen&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; flood&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
U64 shiftOne &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 b, &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; dir8&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; r &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; shift&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;dir8&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// {+-1,7,8,9}&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; rotateLeft&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;b, r&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; avoidWrap&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;dir8&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
U64 slidingAttacks &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 sliders, U64 empty, &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; dir8&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   U64 fill &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; occludedFill&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;slider, empty, dir8&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; shiftOne&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;fill, dir8&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// positve left, negative right shifts&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; shift&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;,&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;,&lt;span class=&quot;sy2&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
U64 avoidWrap&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;nu12&quot;&gt;0xfefefefefefefe00&lt;/span&gt;,
   &lt;span class=&quot;nu12&quot;&gt;0xfefefefefefefefe&lt;/span&gt;,
   &lt;span class=&quot;nu12&quot;&gt;0x00fefefefefefefe&lt;/span&gt;,
   &lt;span class=&quot;nu12&quot;&gt;0x00ffffffffffffff&lt;/span&gt;,
   &lt;span class=&quot;nu12&quot;&gt;0x007f7f7f7f7f7f7f&lt;/span&gt;,
   &lt;span class=&quot;nu12&quot;&gt;0x7f7f7f7f7f7f7f7f&lt;/span&gt;,
   &lt;span class=&quot;nu12&quot;&gt;0x7f7f7f7f7f7f7f00&lt;/span&gt;,
   &lt;span class=&quot;nu12&quot;&gt;0xffffffffffffff00&lt;/span&gt;,
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:9 --&gt;The avoidWrap masks by some arbitrary dir8 enumeration and shift amount:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:10:
&amp;lt;pre class=&amp;quot;text&amp;quot;&amp;gt;6 == noWe -&amp;amp;gt; +7     7 == nort -&amp;amp;gt; +8     0 == noEa -&amp;amp;gt; +9&amp;lt;br/&amp;gt;0x7F7F7F7F7F7F7F00  0xFFFFFFFFFFFFFF00  0xFEFEFEFEFEFEFE00&amp;lt;br/&amp;gt;1 1 1 1 1 1 1 .     1 1 1 1 1 1 1 1     . 1 1 1 1 1 1 1&amp;lt;br/&amp;gt;1 1 1 1 1 1 1 .     1 1 1 1 1 1 1 1     . 1 1 1 1 1 1 1&amp;lt;br/&amp;gt;1 1 1 1 1 1 1 .     1 1 1 1 1 1 1 1     . 1 1 1 1 1 1 1&amp;lt;br/&amp;gt;1 1 1 1 1 1 1 .     1 1 1 1 1 1 1 1     . 1 1 1 1 1 1 1&amp;lt;br/&amp;gt;1 1 1 1 1 1 1 .     1 1 1 1 1 1 1 1     . 1 1 1 1 1 1 1&amp;lt;br/&amp;gt;1 1 1 1 1 1 1 .     1 1 1 1 1 1 1 1     . 1 1 1 1 1 1 1&amp;lt;br/&amp;gt;1 1 1 1 1 1 1 .     1 1 1 1 1 1 1 1     . 1 1 1 1 1 1 1&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;5 == west -&amp;amp;gt; -1                         1 == east -&amp;amp;gt; +1&amp;lt;br/&amp;gt;0x7F7F7F7F7F7F7F7F                      0xFEFEFEFEFEFEFEFE&amp;lt;br/&amp;gt;1 1 1 1 1 1 1 .                         . 1 1 1 1 1 1 1&amp;lt;br/&amp;gt;1 1 1 1 1 1 1 .                         . 1 1 1 1 1 1 1&amp;lt;br/&amp;gt;1 1 1 1 1 1 1 .                         . 1 1 1 1 1 1 1&amp;lt;br/&amp;gt;1 1 1 1 1 1 1 .                         . 1 1 1 1 1 1 1&amp;lt;br/&amp;gt;1 1 1 1 1 1 1 .                         . 1 1 1 1 1 1 1&amp;lt;br/&amp;gt;1 1 1 1 1 1 1 .                         . 1 1 1 1 1 1 1&amp;lt;br/&amp;gt;1 1 1 1 1 1 1 .                         . 1 1 1 1 1 1 1&amp;lt;br/&amp;gt;1 1 1 1 1 1 1 .                         . 1 1 1 1 1 1 1&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;4 == soWe -&amp;amp;gt; -9     3 == sout -&amp;amp;gt; -8     2 == soEa -&amp;amp;gt; -7&amp;lt;br/&amp;gt;0x007F7F7F7F7F7F7F  0x00FFFFFFFFFFFFFF  0x00FEFEFEFEFEFEFE&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;1 1 1 1 1 1 1 .     1 1 1 1 1 1 1 1     . 1 1 1 1 1 1 1&amp;lt;br/&amp;gt;1 1 1 1 1 1 1 .     1 1 1 1 1 1 1 1     . 1 1 1 1 1 1 1&amp;lt;br/&amp;gt;1 1 1 1 1 1 1 .     1 1 1 1 1 1 1 1     . 1 1 1 1 1 1 1&amp;lt;br/&amp;gt;1 1 1 1 1 1 1 .     1 1 1 1 1 1 1 1     . 1 1 1 1 1 1 1&amp;lt;br/&amp;gt;1 1 1 1 1 1 1 .     1 1 1 1 1 1 1 1     . 1 1 1 1 1 1 1&amp;lt;br/&amp;gt;1 1 1 1 1 1 1 .     1 1 1 1 1 1 1 1     . 1 1 1 1 1 1 1&amp;lt;br/&amp;gt;1 1 1 1 1 1 1 .     1 1 1 1 1 1 1 1     . 1 1 1 1 1 1 1&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.text  {font-family:monospace;}
.text .imp {font-weight: bold; color: red;}
.text span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;text&quot;&gt;6 == noWe -&amp;gt; +7     7 == nort -&amp;gt; +8     0 == noEa -&amp;gt; +9
0x7F7F7F7F7F7F7F00  0xFFFFFFFFFFFFFF00  0xFEFEFEFEFEFEFE00
1 1 1 1 1 1 1 .     1 1 1 1 1 1 1 1     . 1 1 1 1 1 1 1
1 1 1 1 1 1 1 .     1 1 1 1 1 1 1 1     . 1 1 1 1 1 1 1
1 1 1 1 1 1 1 .     1 1 1 1 1 1 1 1     . 1 1 1 1 1 1 1
1 1 1 1 1 1 1 .     1 1 1 1 1 1 1 1     . 1 1 1 1 1 1 1
1 1 1 1 1 1 1 .     1 1 1 1 1 1 1 1     . 1 1 1 1 1 1 1
1 1 1 1 1 1 1 .     1 1 1 1 1 1 1 1     . 1 1 1 1 1 1 1
1 1 1 1 1 1 1 .     1 1 1 1 1 1 1 1     . 1 1 1 1 1 1 1
. . . . . . . .     . . . . . . . .     . . . . . . . .
&amp;nbsp;
5 == west -&amp;gt; -1                         1 == east -&amp;gt; +1
0x7F7F7F7F7F7F7F7F                      0xFEFEFEFEFEFEFEFE
1 1 1 1 1 1 1 .                         . 1 1 1 1 1 1 1
1 1 1 1 1 1 1 .                         . 1 1 1 1 1 1 1
1 1 1 1 1 1 1 .                         . 1 1 1 1 1 1 1
1 1 1 1 1 1 1 .                         . 1 1 1 1 1 1 1
1 1 1 1 1 1 1 .                         . 1 1 1 1 1 1 1
1 1 1 1 1 1 1 .                         . 1 1 1 1 1 1 1
1 1 1 1 1 1 1 .                         . 1 1 1 1 1 1 1
1 1 1 1 1 1 1 .                         . 1 1 1 1 1 1 1
&amp;nbsp;
4 == soWe -&amp;gt; -9     3 == sout -&amp;gt; -8     2 == soEa -&amp;gt; -7
0x007F7F7F7F7F7F7F  0x00FFFFFFFFFFFFFF  0x00FEFEFEFEFEFEFE
. . . . . . . .     . . . . . . . .     . . . . . . . .
1 1 1 1 1 1 1 .     1 1 1 1 1 1 1 1     . 1 1 1 1 1 1 1
1 1 1 1 1 1 1 .     1 1 1 1 1 1 1 1     . 1 1 1 1 1 1 1
1 1 1 1 1 1 1 .     1 1 1 1 1 1 1 1     . 1 1 1 1 1 1 1
1 1 1 1 1 1 1 .     1 1 1 1 1 1 1 1     . 1 1 1 1 1 1 1
1 1 1 1 1 1 1 .     1 1 1 1 1 1 1 1     . 1 1 1 1 1 1 1
1 1 1 1 1 1 1 .     1 1 1 1 1 1 1 1     . 1 1 1 1 1 1 1
1 1 1 1 1 1 1 .     1 1 1 1 1 1 1 1     . 1 1 1 1 1 1 1&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:10 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:33:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id=&quot;toc9&quot;&gt;&lt;a name=&quot;Generalized Rays-Unrolled Attacks&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:33 --&gt;Unrolled Attacks&lt;/h2&gt;
 The generalized unrolled sliding attack getter:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:11:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;U64 slidingAttacks (U64 sliders, U64 empty, int dir8) {&amp;lt;br/&amp;gt;   U64 flood = sliders;&amp;lt;br/&amp;gt;   int r = shift[dir8]; // {+-1,7,8,9}&amp;lt;br/&amp;gt;   empty &amp;amp;amp;= avoidWrap[dir8];&amp;lt;br/&amp;gt;   flood |= sliders = rotateLeft(sliders , r) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   flood |= sliders = rotateLeft(sliders , r) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   flood |= sliders = rotateLeft(sliders , r) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   flood |= sliders = rotateLeft(sliders , r) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   flood |= sliders = rotateLeft(sliders , r) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   flood |=         = rotateLeft(sliders , r) &amp;amp;amp; empty;&amp;lt;br/&amp;gt;   return   rotateLeft(flood, r)  &amp;amp;amp;   avoidWrap[dir8];&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;U64 slidingAttacks &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 sliders, U64 empty, &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; dir8&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   U64 flood &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; sliders&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; r &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; shift&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;dir8&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// {+-1,7,8,9}&lt;/span&gt;
   empty &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; avoidWrap&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;dir8&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; sliders &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rotateLeft&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sliders , r&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; sliders &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rotateLeft&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sliders , r&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; sliders &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rotateLeft&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sliders , r&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; sliders &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rotateLeft&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sliders , r&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; sliders &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rotateLeft&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sliders , r&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   flood &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;         &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; rotateLeft&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sliders , r&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; empty&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;   rotateLeft&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;flood, r&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt;   avoidWrap&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;dir8&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:11 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:35:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc10&quot;&gt;&lt;a name=&quot;See also&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:35 --&gt;See also&lt;/h1&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/AVX2#Dumb7Fill&quot;&gt;AVX2 Dumb7Fill&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Fill%20Algorithms&quot;&gt;Fill Algorithms&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Kogge-Stone%20Algorithm&quot;&gt;Kogge-Stone Algorithm&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Pieces%20versus%20Directions&quot;&gt;Pieces versus Directions&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:37:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc11&quot;&gt;&lt;a name=&quot;External Links&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:37 --&gt;External Links&lt;/h1&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://radagast.se/othello/bitmob.c&quot; rel=&quot;nofollow&quot;&gt;bitboard mobility&lt;/a&gt; Copyright (c) 2003, &lt;a class=&quot;wiki_link&quot; href=&quot;/Gunnar%20Andersson&quot;&gt;Gunnar Andersson&lt;/a&gt; » &lt;a class=&quot;wiki_link&quot; href=&quot;/Othello&quot;&gt;Othello&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Mobility&quot;&gt;Mobility&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Videos#WeatherReport&quot;&gt;Weather Report&lt;/a&gt; -  &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.weatherreportdiscography.org/weather-report-1971/&quot; rel=&quot;nofollow&quot;&gt;Seventh Arrow / Umbrellas, 1971&lt;/a&gt;, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://en.wikipedia.org/wiki/YouTube&quot; rel=&quot;nofollow&quot;&gt;YouTube&lt;/a&gt; Video&lt;br /&gt;
&lt;a class=&quot;wiki_link&quot; href=&quot;/Videos#JoeZawinul&quot;&gt;Joe Zawinul&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Videos#WayneShorter&quot;&gt;Wayne Shorter&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Videos#MiroslavVitous&quot;&gt;Miroslav Vitouš&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Videos#AlphonseMouzon&quot;&gt;Alphonse Mouzon&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/Videos#DomUmRomao&quot;&gt;Dom Um Romão&lt;/a&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextMediaRule:12:&amp;lt;img src=&amp;quot;https://www.wikispaces.com/site/embedthumbnail/custom/26371110?h=0&amp;amp;w=0&amp;quot; class=&amp;quot;WikiMedia WikiMediaCustom&amp;quot; id=&amp;quot;wikitext@@media@@type=&amp;amp;quot;custom&amp;amp;quot; key=&amp;amp;quot;26371110&amp;amp;quot;&amp;quot; title=&amp;quot;Custom Media&amp;quot;/&amp;gt; --&gt;&lt;iframe width=&quot;480&quot; height=&quot;360&quot; src=&quot;//www.youtube.com/embed/iigJbeTzFHs?rel=0&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;!-- ws:end:WikiTextMediaRule:12 --&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:39:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc12&quot;&gt;&lt;a name=&quot;What links here?&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:39 --&gt;What links here?&lt;/h1&gt;
 &lt;!-- ws:start:WikiTextIncludeRule:013:&amp;lt;img src=&amp;quot;https://www.wikispaces.com/site/embedthumbnail/include/backlinks?w=200&amp;amp;h=100&amp;quot; class=&amp;quot;WikiMedia WikiMediaInclude&amp;quot; id=&amp;quot;wikitext@@include@@page=&amp;amp;quot;Dumb7Fill&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;20&amp;amp;quot;&amp;quot; title=&amp;quot;Include backlinks: page=&amp;amp;quot;Dumb7Fill&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;20&amp;amp;quot;&amp;quot; /&amp;gt; --&gt;&lt;div class=&quot;includeBody-Dumb7Fill includeBody-Dumb7Fill includeBody&quot;&gt;&lt;table class=&quot;includeBacklinks&quot;&gt;
  &lt;thead&gt;
    &lt;tr class=&quot;includeBacklinksHeading&quot;&gt;
      &lt;th class=&quot;includeBacklinksPageHeading&quot;&gt;Page&lt;/th&gt;
      &lt;th class=&quot;includeBacklinksDateHeading&quot;&gt;Date Edited&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
    &lt;tfoot class=&quot;includeBacklinksFooter&quot;&gt;
    &lt;tr&gt;
      &lt;td colspan=&quot;5&quot;&gt;&lt;a href=&quot;https://chessprogramming.wikispaces.com/page/links/Dumb7Fill&quot;&gt;More Links&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tfoot&gt;
    &lt;tbody&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/AVX2&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;AVX2&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Aug 8, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/DirGolem&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;DirGolem&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jun 5, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Dumb7Fill&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Dumb7Fill&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;May 27, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Efficient+Generation+of+Sliding+Piece+Attacks&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Efficient Generation of Sliding Piece Attacks&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 5, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Fill+Algorithms&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Fill Algorithms&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 6, 2013&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Gaviota&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Gaviota&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 21, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/General+Setwise+Operations&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;General Setwise Operations&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Feb 25, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Gunnar+Andersson&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Gunnar Andersson&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jun 23, 2011&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Influence+Quantity+of+Pieces&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Influence Quantity of Pieces&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jul 21, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/John+L.+Jerz&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;John L. Jerz&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jul 15, 2013&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Kogge-Stone+Algorithm&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Kogge-Stone Algorithm&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Sep 17, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Lachex&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Lachex&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 7, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Little+Wing&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Little Wing&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Oct 26, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Mobility&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Mobility&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 17, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Othello&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Othello&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 4, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Pieces+versus+Directions&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Pieces versus Directions&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Oct 6, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Sequential+Logic&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Sequential Logic&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;May 10, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Shifted+Bitboards&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Shifted Bitboards&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 9, 2011&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/SIMD+and+SWAR+Techniques&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;SIMD and SWAR Techniques&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jun 27, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Sliding+Piece+Attacks&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Sliding Piece Attacks&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;May 27, 2016&lt;/td&gt;
    &lt;/tr&gt;
      &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;&lt;!-- ws:end:WikiTextIncludeRule:013 --&gt;&lt;br /&gt;
&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Sliding%20Piece%20Attacks&quot;&gt;Up one Level&lt;/a&gt;&lt;/strong&gt;</description>
          </item>
    <item>
      <title>Duo Trio Quart (Bitboards)</title>
      <link>https://chessprogramming.wikispaces.com/Duo+Trio+Quart+%28Bitboards%29</link>
      <dc:creator>GerdIsenberg</dc:creator>
      <guid isPermaLink="true">https://chessprogramming.wikispaces.com/Duo+Trio+Quart+%28Bitboards%29</guid>
      <comments>https://chessprogramming.wikispaces.com/page/messages/Duo+Trio+Quart+%28Bitboards%29</comments>
      <pubDate>Fri, 18 Aug 2017 17:28:27 GMT</pubDate>
      <description>&lt;!-- ws:start:WikiTextTocRule:24:&amp;lt;img id=&amp;quot;wikitext@@toc@@normal&amp;quot; class=&amp;quot;WikiMedia WikiMediaToc&amp;quot; title=&amp;quot;Table of Contents&amp;quot; src=&amp;quot;/site/embedthumbnail/toc/normal?w=225&amp;amp;h=100&amp;quot;/&amp;gt; --&gt;&lt;div id=&quot;toc&quot;&gt;&lt;h1 class=&quot;nopad&quot;&gt;Table of Contents&lt;/h1&gt;&lt;!-- ws:end:WikiTextTocRule:24 --&gt;&lt;!-- ws:start:WikiTextTocRule:25: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Neighbors&quot;&gt;Neighbors&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:25 --&gt;&lt;!-- ws:start:WikiTextTocRule:26: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Neighbor Algebra&quot;&gt;Neighbor Algebra&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:26 --&gt;&lt;!-- ws:start:WikiTextTocRule:27: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#See also&quot;&gt;See also&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:27 --&gt;&lt;!-- ws:start:WikiTextTocRule:28: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#Forum Posts&quot;&gt;Forum Posts&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:28 --&gt;&lt;!-- ws:start:WikiTextTocRule:29: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#External Links&quot;&gt;External Links&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:29 --&gt;&lt;!-- ws:start:WikiTextTocRule:30: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#References&quot;&gt;References&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:30 --&gt;&lt;!-- ws:start:WikiTextTocRule:31: --&gt;&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;a href=&quot;#What links here?&quot;&gt;What links here?&lt;/a&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:31 --&gt;&lt;!-- ws:start:WikiTextTocRule:32: --&gt;&lt;/div&gt;
&lt;!-- ws:end:WikiTextTocRule:32 --&gt;&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Home&quot;&gt;Home&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Board%20Representation&quot;&gt;Board Representation&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Bitboards&quot;&gt;Bitboards&lt;/a&gt; * &lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Pattern%20and%20Properties&quot;&gt;Pawn Pattern and Properties&lt;/a&gt; * Duo Trio Quart&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Pawn-Duo&lt;/strong&gt;, (Phalanx) &lt;!-- ws:start:WikiTextRefRule:6:&amp;amp;lt;ref&amp;amp;gt;&amp;lt;a class=&amp;quot;wiki_link_ext&amp;quot; href=&amp;quot;http://www.chess-game-strategies.com/pawn-structure_general_page-5_phalanx-formation.html&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt;Pawn Structure (General) | Page 5 of 5 | Phalanx Formation&amp;lt;/a&amp;gt;&amp;amp;lt;/ref&amp;amp;gt; --&gt;&lt;sup id=&quot;cite_ref-1&quot; class=&quot;reference&quot;&gt;&lt;a href=&quot;#cite_note-1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;!-- ws:end:WikiTextRefRule:6 --&gt; &lt;br /&gt;
two adjacent &lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn&quot;&gt;pawns&lt;/a&gt; of the same &lt;a class=&quot;wiki_link&quot; href=&quot;/Color&quot;&gt;color&lt;/a&gt; on the same &lt;a class=&quot;wiki_link&quot; href=&quot;/Ranks&quot;&gt;rank&lt;/a&gt; that mutually cover the other&#039;s &lt;a class=&quot;wiki_link&quot; href=&quot;/Stop%20Square&quot;&gt;stop square&lt;/a&gt;. A &lt;strong&gt;Trio&lt;/strong&gt; are three horizontal friendly pawns, a &lt;strong&gt;Quart&lt;/strong&gt; four horizontal friendly pawns.&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;Working in the &lt;strong&gt;bitboard centric&lt;/strong&gt; world to determine pawn related pattern set-wise&lt;/em&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;The code snippets rely on &lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#ShiftingBitboards&quot;&gt;shifting bitboards&lt;/a&gt;, specially by &lt;a class=&quot;wiki_link&quot; href=&quot;/General%20Setwise%20Operations#OneStepOnly&quot;&gt;one step only&lt;/a&gt;.&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:10:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc0&quot;&gt;&lt;a name=&quot;Neighbors&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:10 --&gt;Neighbors&lt;/h1&gt;
To get pawns with east or west neighbors is simple:&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:0:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;U64 pawnsWithEastNeighbors(U64 pawns) {&amp;lt;br/&amp;gt;   return pawns &amp;amp;amp; westOne (pawns);&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;U64 pawnsWithWestNeighbors(U64 pawns) {&amp;lt;br/&amp;gt;   return pawnsWithEastNeighbors(pawns) &amp;amp;lt;&amp;amp;lt; 1; // * 2&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;U64 pawnsWithEastNeighbors&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 pawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; pawns &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; westOne &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
U64 pawnsWithWestNeighbors&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 pawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; pawnsWithEastNeighbors&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// * 2&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:0 --&gt;or&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:1:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;U64 pawnsWithWestNeighbors(U64 pawns) {&amp;lt;br/&amp;gt;   return pawns &amp;amp;amp; eastOne (pawns);&amp;lt;br/&amp;gt;}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;U64 pawnsWithEastNeighbors(U64 pawns) {&amp;lt;br/&amp;gt;   return pawnsWithWestNeighbors(pawns) &amp;amp;gt;&amp;amp;gt; 1;&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;U64 pawnsWithWestNeighbors&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 pawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; pawns &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; eastOne &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
U64 pawnsWithEastNeighbors&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 pawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; pawnsWithWestNeighbors&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:1 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:2:
&amp;lt;pre class=&amp;quot;text&amp;quot;&amp;gt;pawns               pawns with east     pawns with west     pawns with east&amp;lt;br/&amp;gt;                    neighbors           neighbors           and west neighbors&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;1 1 1 . . . . .     1 1 . . . . . .     . 1 1 . . . . .     . 1 . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . 1 1 .     . . . . . 1 . .     . . . . . . 1 .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.text  {font-family:monospace;}
.text .imp {font-weight: bold; color: red;}
.text span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;text&quot;&gt;pawns               pawns with east     pawns with west     pawns with east
                    neighbors           neighbors           and west neighbors
. . . . . . . .     . . . . . . . .     . . . . . . . .     . . . . . . . .
. . . . . . . .     . . . . . . . .     . . . . . . . .     . . . . . . . .
. . . . . . . .     . . . . . . . .     . . . . . . . .     . . . . . . . .
. . . . . . . .     . . . . . . . .     . . . . . . . .     . . . . . . . .
1 1 1 . . . . .     1 1 . . . . . .     . 1 1 . . . . .     . 1 . . . . . .
. . . . . . . .     . . . . . . . .     . . . . . . . .     . . . . . . . .
. . . . . 1 1 .     . . . . . 1 . .     . . . . . . 1 .     . . . . . . . .
. . . . . . . .     . . . . . . . .     . . . . . . . .     . . . . . . . .&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:2 --&gt;&lt;!-- ws:start:WikiTextHeadingRule:12:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc1&quot;&gt;&lt;a name=&quot;Neighbor Algebra&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:12 --&gt;Neighbor Algebra&lt;/h1&gt;
Pawns with east or west neighbors are at least member of a duo. Pawns with east and west neighbors at least member of a trio. If two neighbors have both east and west neighbors, it is at least a quart.&lt;br /&gt;
&lt;br /&gt;
An exclusive pawn duo is therefor a pawn with one neighbor, while this neighbor has no other neighbor as well.&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:3:
&amp;lt;pre class=&amp;quot;cpp&amp;quot;&amp;gt;U64 duo (U64 pawns) {&amp;lt;br/&amp;gt;   U64 withWestNeighbors = pawnsWithWestNeighbors(pawns);&amp;lt;br/&amp;gt;   U64 withEastNeighbors = withWestNeighbors &amp;amp;gt;&amp;amp;gt; 1;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;   U64 withOneExclusiveNeighbor  = withWestNeighbors ^ withEastNeighbors;&amp;lt;br/&amp;gt;   U64 withExclusiveWestNeighbor = withWestNeighbors &amp;amp;amp; withOneExclusiveNeighbor;&amp;lt;br/&amp;gt;   U64 withExclusiveEastNeighbor = withEastNeighbors &amp;amp;amp; withOneExclusiveNeighbor;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;   U64 duoWestOne = withEclusiveEastNeighbor &amp;amp;amp; (withEclusiveWestNeighbor &amp;amp;gt;&amp;amp;gt; 1);&amp;lt;br/&amp;gt;   U64 duoEastOne = duoWestOne &amp;amp;lt;&amp;amp;lt; 1;&amp;lt;br/&amp;gt;   return duoWestOne | duoEastOne;&amp;lt;br/&amp;gt;}&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.cpp  {font-family:monospace;}
.cpp .imp {font-weight: bold; color: red;}
.cpp .kw1 {color: #0000ff;}
.cpp .kw2 {color: #0000ff;}
.cpp .kw3 {color: #0000dd;}
.cpp .kw4 {color: #0000ff;}
.cpp .co1 {color: #666666;}
.cpp .co2 {color: #339900;}
.cpp .coMULTI {color: #ff0000; font-style: italic;}
.cpp .es0 {color: #000099; font-weight: bold;}
.cpp .es1 {color: #000099; font-weight: bold;}
.cpp .es2 {color: #660099; font-weight: bold;}
.cpp .es3 {color: #660099; font-weight: bold;}
.cpp .es4 {color: #660099; font-weight: bold;}
.cpp .es5 {color: #006699; font-weight: bold;}
.cpp .br0 {color: #008000;}
.cpp .sy0 {color: #008000;}
.cpp .sy1 {color: #000080;}
.cpp .sy2 {color: #000040;}
.cpp .sy3 {color: #000040;}
.cpp .sy4 {color: #008080;}
.cpp .st0 {color: #FF0000;}
.cpp .nu0 {color: #0000dd;}
.cpp .nu6 {color: #208080;}
.cpp .nu8 {color: #208080;}
.cpp .nu12 {color: #208080;}
.cpp .nu16 {color:#800080;}
.cpp .nu17 {color:#800080;}
.cpp .nu18 {color:#800080;}
.cpp .nu19 {color:#800080;}
.cpp .me1 {color: #007788;}
.cpp .me2 {color: #007788;}
.cpp span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;cpp&quot;&gt;U64 duo &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;U64 pawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   U64 withWestNeighbors &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; pawnsWithWestNeighbors&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pawns&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   U64 withEastNeighbors &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; withWestNeighbors &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
   U64 withOneExclusiveNeighbor  &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; withWestNeighbors &lt;span class=&quot;sy3&quot;&gt;^&lt;/span&gt; withEastNeighbors&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   U64 withExclusiveWestNeighbor &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; withWestNeighbors &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; withOneExclusiveNeighbor&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   U64 withExclusiveEastNeighbor &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; withEastNeighbors &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; withOneExclusiveNeighbor&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
   U64 duoWestOne &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; withEclusiveEastNeighbor &lt;span class=&quot;sy3&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;withEclusiveWestNeighbor &lt;span class=&quot;sy1&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   U64 duoEastOne &lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt; duoWestOne &lt;span class=&quot;sy1&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; duoWestOne &lt;span class=&quot;sy3&quot;&gt;|&lt;/span&gt; duoEastOne&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:3 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextCodeRule:4:
&amp;lt;pre class=&amp;quot;text&amp;quot;&amp;gt;pawns               pawns with excl.    pawns with excl.    duo&amp;lt;br/&amp;gt;                    east neighbor       west neighbor&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;1 1 1 . . . . .     1 . . . . . . .     . . 1 . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;br/&amp;gt;. . . . . 1 1 .     . . . . . 1 . .     . . . . . . 1 .     . . . . . 1 1 .&amp;lt;br/&amp;gt;. . . . . . . .     . . . . . . . .     . . . . . . . .     . . . . . . . .&amp;lt;/pre&amp;gt;
 --&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.text  {font-family:monospace;}
.text .imp {font-weight: bold; color: red;}
.text span.xtra { display:block; }

--&gt;
&lt;/style&gt;&lt;pre class=&quot;text&quot;&gt;pawns               pawns with excl.    pawns with excl.    duo
                    east neighbor       west neighbor
. . . . . . . .     . . . . . . . .     . . . . . . . .     . . . . . . . .
. . . . . . . .     . . . . . . . .     . . . . . . . .     . . . . . . . .
. . . . . . . .     . . . . . . . .     . . . . . . . .     . . . . . . . .
. . . . . . . .     . . . . . . . .     . . . . . . . .     . . . . . . . .
1 1 1 . . . . .     1 . . . . . . .     . . 1 . . . . .     . . . . . . . .
. . . . . . . .     . . . . . . . .     . . . . . . . .     . . . . . . . .
. . . . . 1 1 .     . . . . . 1 . .     . . . . . . 1 .     . . . . . 1 1 .
. . . . . . . .     . . . . . . . .     . . . . . . . .     . . . . . . . .&lt;/pre&gt;

&lt;!-- ws:end:WikiTextCodeRule:4 --&gt;&lt;!-- ws:start:WikiTextHeadingRule:14:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc2&quot;&gt;&lt;a name=&quot;See also&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:14 --&gt;See also&lt;/h1&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Stop%20Square&quot;&gt;Stop Square&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Hanging%20Pawns&quot;&gt;Hanging Pawns&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Islands%20%28Bitboards%29&quot;&gt;Pawn Islands (Bitboards)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Phalanx&quot;&gt;Phalanx&lt;/a&gt; (Engine)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:16:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc3&quot;&gt;&lt;a name=&quot;Forum Posts&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:16 --&gt;Forum Posts&lt;/h1&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.talkchess.com/forum/viewtopic.php?t=52382&quot; rel=&quot;nofollow&quot;&gt;The phalanx concept&lt;/a&gt; by &lt;a class=&quot;wiki_link&quot; href=&quot;/Lyudmil%20Tsvetkov&quot;&gt;Lyudmil Tsvetkov&lt;/a&gt;, &lt;a class=&quot;wiki_link&quot; href=&quot;/CCC&quot;&gt;CCC&lt;/a&gt;,  May 21, 2014&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:18:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc4&quot;&gt;&lt;a name=&quot;External Links&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:18 --&gt;External Links&lt;/h1&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.chess-game-strategies.com/pawn-structure_general_page-5_phalanx-formation.html&quot; rel=&quot;nofollow&quot;&gt;Pawn Structure (General) | Page 5 of 5 | Phalanx Formation&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/Duet&quot; rel=&quot;nofollow&quot;&gt;Duet from Wikipedia&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/Phalanx&quot; rel=&quot;nofollow&quot;&gt;Phalanx from Wikipedia&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/Trio&quot; rel=&quot;nofollow&quot;&gt;Trio from Wikipedia&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://kingaglyk.pl&quot; rel=&quot;nofollow&quot;&gt;Kinga Głyk Trio&lt;/a&gt; - Walking Baby, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.visioninmusica.com/&quot; rel=&quot;nofollow&quot;&gt;VisionInMusica&lt;/a&gt;, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/Terni&quot; rel=&quot;nofollow&quot;&gt;Terni&lt;/a&gt;, March 10, 2017, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/YouTube&quot; rel=&quot;nofollow&quot;&gt;YouTube&lt;/a&gt; Video&lt;br /&gt;
&lt;a class=&quot;wiki_link&quot; href=&quot;/Videos#KingaGlyk&quot;&gt;Kinga Głyk&lt;/a&gt;, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://glyk.pl/&quot; rel=&quot;nofollow&quot;&gt;Irek Głyk&lt;/a&gt;, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.visioninmusica.com/kinga-glyk-happy-birthday/&quot; rel=&quot;nofollow&quot;&gt;Rafal Stepien&lt;/a&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextMediaRule:7:&amp;lt;img src=&amp;quot;https://www.wikispaces.com/site/embedthumbnail/youtube/Xmq52kc_HM0?h=315&amp;amp;w=560&amp;quot; class=&amp;quot;WikiMedia WikiMediaYoutube&amp;quot; id=&amp;quot;wikitext@@media@@type=&amp;amp;quot;youtube&amp;amp;quot; key=&amp;amp;quot;Xmq52kc_HM0&amp;amp;quot;&amp;quot; title=&amp;quot;YouTube Video&amp;quot;height=&amp;quot;315&amp;quot; width=&amp;quot;560&amp;quot;/&amp;gt; --&gt;&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;//www.youtube.com/embed/Xmq52kc_HM0&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;!-- ws:end:WikiTextMediaRule:7 --&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/Quart_%28disambiguation%29&quot; rel=&quot;nofollow&quot;&gt;Quart (disambiguation) from Wikipedia&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Videos#PantaRhei&quot;&gt;Panta Rhei&lt;/a&gt; plays &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/B%C3%A9la_Bart%C3%B3k&quot; rel=&quot;nofollow&quot;&gt;Bartók&#039;s&lt;/a&gt; Quarts, 1977, &lt;a class=&quot;wiki_link_ext&quot; href=&quot;https://en.wikipedia.org/wiki/YouTube&quot; rel=&quot;nofollow&quot;&gt;YouTube&lt;/a&gt; Video&lt;br /&gt;
&lt;!-- ws:start:WikiTextMediaRule:8:&amp;lt;img src=&amp;quot;https://www.wikispaces.com/site/embedthumbnail/youtube/xDiKq9Wf0UQ?h=315&amp;amp;w=560&amp;quot; class=&amp;quot;WikiMedia WikiMediaYoutube&amp;quot; id=&amp;quot;wikitext@@media@@type=&amp;amp;quot;youtube&amp;amp;quot; key=&amp;amp;quot;xDiKq9Wf0UQ&amp;amp;quot;&amp;quot; title=&amp;quot;YouTube Video&amp;quot;height=&amp;quot;315&amp;quot; width=&amp;quot;560&amp;quot;/&amp;gt; --&gt;&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;//www.youtube.com/embed/xDiKq9Wf0UQ&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;!-- ws:end:WikiTextMediaRule:8 --&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:20:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc5&quot;&gt;&lt;a name=&quot;References&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:20 --&gt;References&lt;/h1&gt;
&lt;!-- ws:start:WikiTextReferencesRule:136:&amp;amp;lt;references /&amp;amp;gt; --&gt;&lt;ol class=&quot;references&quot;&gt;
&lt;li id=&quot;cite_note-1&quot;&gt;&lt;a href=&quot;#cite_ref-1&quot;&gt;^&lt;/a&gt; &lt;a class=&quot;wiki_link_ext&quot; href=&quot;http://www.chess-game-strategies.com/pawn-structure_general_page-5_phalanx-formation.html&quot; rel=&quot;nofollow&quot;&gt;Pawn Structure (General) | Page 5 of 5 | Phalanx Formation&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;!-- ws:end:WikiTextReferencesRule:136 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:22:&amp;lt;h1&amp;gt; --&gt;&lt;h1 id=&quot;toc6&quot;&gt;&lt;a name=&quot;What links here?&quot;&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:22 --&gt;What links here?&lt;/h1&gt;
&lt;!-- ws:start:WikiTextIncludeRule:05:&amp;lt;img src=&amp;quot;https://www.wikispaces.com/site/embedthumbnail/include/backlinks?w=200&amp;amp;h=100&amp;quot; class=&amp;quot;WikiMedia WikiMediaInclude&amp;quot; id=&amp;quot;wikitext@@include@@page=&amp;amp;quot;Duo Trio Quart (Bitboards)&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;20&amp;amp;quot;&amp;quot; title=&amp;quot;Include backlinks: page=&amp;amp;quot;Duo Trio Quart (Bitboards)&amp;amp;quot; component=&amp;amp;quot;backlinks&amp;amp;quot; limit=&amp;amp;quot;20&amp;amp;quot;&amp;quot; /&amp;gt; --&gt;&lt;div class=&quot;includeBody-Duo_Trio_Quart_(Bitboards) includeBody-Duo%20Trio%20Quart%20%28Bitboards%29 includeBody&quot;&gt;&lt;table class=&quot;includeBacklinks&quot;&gt;
  &lt;thead&gt;
    &lt;tr class=&quot;includeBacklinksHeading&quot;&gt;
      &lt;th class=&quot;includeBacklinksPageHeading&quot;&gt;Page&lt;/th&gt;
      &lt;th class=&quot;includeBacklinksDateHeading&quot;&gt;Date Edited&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
    &lt;tbody&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Backward+Pawns+%28Bitboards%29&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Backward Pawns (Bitboards)&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;May 5, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/ChessBrainVB&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;ChessBrainVB&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jun 24, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Connected+Passed+Pawns&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Connected Passed Pawns&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 27, 2015&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Dartmouth+CP&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Dartmouth CP&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 19, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Demolito&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Demolito&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 1, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Design+Principles&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Design Principles&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 17, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Duo+Trio+Quart+%28Bitboards%29&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Duo Trio Quart (Bitboards)&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Aug 18, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/En+prise&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;En prise&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Oct 11, 2016&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/GopherCheck&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;GopherCheck&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Feb 3, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Hanging+pawns&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Hanging pawns&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Aug 5, 2015&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Hanging+Piece&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Hanging Piece&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jan 14, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Hans+Kmoch&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Hans Kmoch&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 11, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Isolated+Pawns+%28Bitboards%29&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Isolated Pawns (Bitboards)&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 18, 2012&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Kaissa&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Kaissa&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Apr 9, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Lyudmil+Tsvetkov&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Lyudmil Tsvetkov&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Mar 28, 2018&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Pawn+Pattern+and+Properties&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Pawn Pattern and Properties&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Nov 11, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Pawn+Structure&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Pawn Structure&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Oct 2, 2017&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Pawns+Breakthrough&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Pawns Breakthrough&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;May 4, 2014&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Protected+Passed+Pawn&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Protected Passed Pawn&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Jun 7, 2012&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr class=&quot;includeBacklinksLink&quot;&gt;
      &lt;td class=&quot;includeBacklinksLinkPage&quot;&gt;
        &lt;a href=&quot;https://chessprogramming.wikispaces.com/Stockfish&quot; class=&quot;includeBacklinksLinkUrl&quot;&gt;Stockfish&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&quot;includeBacklinksLinkDate&quot;&gt;Apr 7, 2018&lt;/td&gt;
    &lt;/tr&gt;
      &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;&lt;!-- ws:end:WikiTextIncludeRule:05 --&gt;&lt;br /&gt;
&lt;strong&gt;&lt;a class=&quot;wiki_link&quot; href=&quot;/Pawn%20Pattern%20and%20Properties&quot;&gt;Up one Level&lt;/a&gt;&lt;/strong&gt;</description>
          </item>

  </channel>
</rss>