
I have obtained the CRC-64 code used in the SWISS-PROT genetic
database:

  ftp://ftp.ebi.ac.uk/pub/software/swissprot/Swissknife/SPcrc.tar.gz

(Thanks go to Henning Hermjakob <hhe@ebi.ac.uk> of the European
Bioinformatics Institute.)  From the README:

  The code in this package has been derived from the BTLib package 
  obtained from Christian Iseli <chris@ludwig-alpha.unil.ch>.
  From his mail:

  The reference is: W. H. Press, S. A. Teukolsky, W. T. Vetterling, and 
  B. P.  Flannery, "Numerical recipes in C", 2nd ed., Cambridge University 
  Press.  Pages 896ff.

  The generator polynomial is x64 + x4 + x3 + x1 + 1.

Choosing a good polynomial is considered a black art.  A good tutorial 
on CRC practice is at

  http://www.repairfaq.org/filipg/LINK/F_crc_v3.html

and there's a clear exposition of the theory in Tanenbaum's 
"Computer Networks".  Note that initialization is important, and 
often neglected: one quality to check is, does a block of all zeroes, 
and a zero CRC, come out as an error?

Nathan Myers
ncm@zembu.com

Thu, 14 Dec 2000 13:08:10 -0800
ncm@zembu.com (Nathan Myers)
CRC-64