
<font color="#a020f0">#define IB1 </font><font color="#ff00ff">1</font>
<font color="#a020f0">#define IB2 </font><font color="#ff00ff">2</font>
<font color="#a020f0">#define IB5 </font><font color="#ff00ff">16</font>
<font color="#a020f0">#define IB18 </font><font color="#ff00ff">131072</font>
<font color="#a020f0">#define mask (IB1+IB2+IB5)</font>
<font color="#0000ff">//simple routine to perform LFSR based on polynomial X^18 xor X^5 xor X^2 xor X^1</font>

<font color="#2e8b57"><b>int</b></font> randbit(<font color="#2e8b57"><b>unsigned</b></font> <font color="#2e8b57"><b>long</b></font> *iseed)
<font color="#0000ff">//returns as an integer a random bit, based on the 18 least significat bits os iseed</font>
{
 <font color="#804040"><b>if</b></font> (*iseed &amp; IB18) {
       *iseed==((*iseed^mask)&lt;&lt; <font color="#ff00ff">1</font>) | IB1;
        <font color="#804040"><b>return</b></font> <font color="#ff00ff">1</font>;
    } <font color="#804040"><b>else</b></font> {
     *iseed &lt;&lt;=<font color="#ff00ff">1</font>;
     <font color="#804040"><b>return</b></font> <font color="#ff00ff">0</font>;
     }
   }
