CRC is controlled by a fixed 'polynomial', which is divided into a bigger polynomial that is specified by the input data. The remainder is what you call the CRC of the data.
128!:3 allows you to specify the polynomial as x. If you don't specify one, you get _306674912 = 0xEDB88320 which is the IEEE 802.3 polynomial: x^32 + x^26 + x^23 + x^22 + x^16 + x^12 + x^11 + x^10 + x^8 + x^7 + x^5 + x^4 + x^2 + x + 1 If you want a different polynomial, you can supply one. The implementation processes the input a byte at a time, which requires the precomputation of a table. If you assign x&(128!:3) to a name, the precomputation time will be spent only when the name is assigned. Henry Rich Don Guinn wrote: > If you look at the low-order 32 bits, they are the same. For CRC32 that is > all that counts. What surprised me was that there are several versions of > CRC calculations. I wonder which one J computes. > > On Fri, Nov 27, 2009 at 7:37 PM, 0j1 <[email protected]> wrote: > >> It looks like the high 32 bits of the 64-bit version are all-1s so on >> J64 the result would always be negative. >> >> ($~16) #: _3606737805 688229491x >> 15 15 15 15 15 15 15 15 2 9 0 5 8 12 7 3 >> 0 0 0 0 0 0 0 0 2 9 0 5 8 12 7 3 >> >> >> bill lam wrote: >>> On Fri, 27 Nov 2009, Don Guinn wrote: >>>> The last 32 bits are the same. It's just that the number is too big for >> 32 >>>> bit representation. >>>> >>>> (2x^32)+_3606737805x >>>> 688229491 >>> If crc in J32 is 688229491 how can it tell if that for J64 will be >>> _3606737805 or still be 688229491? >> ---------------------------------------------------------------------- >> For information about J forums see http://www.jsoftware.com/forums.htm >> > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
