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

Reply via email to