public void Crc64()
        {
            var u = CRC64.Reflect64(0x8F4F2F1F80402010);

            Assert.AreEqual(0x08040201f8f4f2f1, u);
            Assert.AreEqual(0x8F4F2F1F80402010, CRC64.Reflect64(u));

            //width=64 poly=0x42f0e1eba9ea3693 init=0xffffffffffffffff refin=true refout=true xorout=0xffffffffffffffff check=0x995dc9bbdf1939fa name="CRC-64/XZ"
            {
                var crc64 = CRC64.XZ;
                //check crc test value
                Check(crc64, new byte[0], 0x0);
                Check(crc64, test0, 0x995dc9bbdf1939fa);
                Check(crc64, test1, 0x27db187fc15bbc72);
            }

            //width=64 poly=0x42f0e1eba9ea3693 init=0xffffffffffffffff refin=false refout=false xorout=0xffffffffffffffff check=0x62ec59e3f1a4f00a name="CRC-64/WE"
            {
                var crc64 = CRC64.WE;
                //check expected table against calculated table
                CollectionAssert.AreEqual(ecma182, crc64.Table);
                //check crc test value
                Check(crc64, new byte[0], 0x0);
                Check(crc64, test0, 0x62ec59e3f1a4f00a);
                Check(crc64, test1, 0x85cc6e9690d5a474);
            }

            //width=64 poly=0x42f0e1eba9ea3693 init=0x0000000000000000 refin=false refout=false xorout=0x0000000000000000 check=0x6c40df5f0b497347 name="CRC-64"
            {
                var crc64 = CRC64.ECMA182;
                //check expected table against calculated table
                CollectionAssert.AreEqual(ecma182, crc64.Table);
                //check crc test value
                Check(crc64, new byte[0], 0x0);
                Check(crc64, test0, 0x6c40df5f0b497347);
                Check(crc64, test1, 0x344fe1d09c983d13);
            }
        }