title: Checking the error detection capabilities of CRC polynomials
body: <p>I tried to find out how to calculate the error detection capabilities of arbitrary CRC polynomials.</p>
  
  <p>I know that there are various error detection capabilities that may (or may not) apply to an arbitrary polynomial:</p>
  
  <ol>
  <li><p>Detection of a single bit error:
  All CRCs can do this since this only requires a CRC width >= 1.</p></li>
  <li><p>Detection of burst errors:
  All CRCs can detect burst errors up to a size that equals their width.</p></li>
  <li><p>Detection of odd numbers of bit errors:
  CRC with polynomials with an even number of terms (which means an even number of 1-bits in the full binary polynomial) can do this.</p></li>
  <li><p>Detection of random bit errors (depending from frame size):
  I have a ready-to-use C algorithm that allows calculating the maximum frame size for given HD and poylnomial. I didn't understood it completely but it works.</p></li>
  </ol>
  
  <p>Lets assume a 16 bit CRC polynomial x¹⁶+x¹²+x⁵+1 = 0x11021. That polynomial can:</p>
  
  <ul>
  <li>detect all single bit errors (data size independent).</li>
  <li>detect all burst errors up to 16 bit width (data size independent).</li>
  <li>detect all odd numbers of bit errors (since it has 4 polynomial terms; data size independent).</li>
  <li>detect 3 bit errors (HD4) up to 32571 bit data size.</li>
  </ul>
  
  <p>Is the above correct?</p>
  
  <p>Are there additional CRC error detection capabilities? If yes, how can I check (without deep math knowledge) if an arbitrary CRC polynomial supports them?</p>