With CRC32 you can only ever have 2^32 different values, which is not different enough when x has more than 2^32 items.
Reducing the chance of collision is the main point of hashing. On Wed, Jul 30, 2014 at 9:30 PM, bill lam <bbill....@gmail.com> wrote: > Sorry Roger. I forgot pointer arithmatic. > > BTW I think hardware crc32 can also be used in J64. What will > be its downside apart from higer chance of getting collison when > compared to crc64? > > Ср, 30 июл 2014, Roger Hui написал(а): > > Actually, no. z would be declared to be a pointer of the appropriate > type > > and z=z+1; would make z point to the next item. > > > > z=z+sizeof(*z); would in fact be wrong. For example, if z points to a > > 4-byte integer, sizeof(*z) would be 4 and z=z+sizeof(*z); would make z > > point to 4 items further. You can verify this by writing and running a > > short C program or by rummaging around in a C debugger. > > > > > > > > > > On Wed, Jul 30, 2014 at 7:05 PM, bill lam <bbill....@gmail.com> wrote: > > > > > Sorry for being meticulous, the last step probably better be expressed > as > > > z=z+sizeof(*z) > > > On Jul 31, 2014 12:37 AM, "Roger Hui" <rogerhui.can...@gmail.com> > wrote: > > > > > > > Thanks for your comments and questions. > > > > > > > > 0. The C code presented is only for a primitive datatype (in C). The > > > paper > > > > (script) says this. The basic hashing logic still works for other > > > > datatypes, but instead of using == and != (the C equals and > not-equal) > > > > you'd need something more elaborate. Still simple conceptually > because > > > in > > > > your head you can subsume the details by thinking "match" or "not > match". > > > > > > > > 1. The APL\360 defn assumes that the left argument is a vector. The > > > > "anomaly" you found only occurs if the left argument is not a vector. > > > > > > > > 2. *z++=*h<0?xn:*h; is equivalent to: > > > > > > > > blah= *h<0 ? xn : *h; // if *h is less than 0 then xn, otherwise *h > > > > *z=blah; // set the location pointed to by z, to blah > > > > z=z+1; // increment the pointer z by 1 > > > > > > > > This is standard C. In that context the statement is also > equivalent to > > > > z[i]=*h<0?xn:*h; > > > > > > > > > > > > > > > > On Wed, Jul 30, 2014 at 8:53 AM, Brian Schott < > schott.br...@gmail.com> > > > > wrote: > > > > > > > > > Roger, > > > > > > > > > > Because my C is so weak I could use some explanation in words of > what > > > > the C > > > > > is doing, not in general, but to discuss the questions below. > > > > > > > > > > Would you say that the basic approach that is being taken in DO's > is > > > more > > > > > like the APL\360 definition or more like the Extended definition. I > > > > guess I > > > > > am a little surprised that a Loop is required through both the x > and > > > the > > > > y > > > > > values. In the Dictionary entry for Index of is the following > example, > > > > > where the y component is not an atom, but a string. Is that a > typical > > > > case > > > > > for which y must be looped through as well as x? I thought maybe > the > > > > answer > > > > > was yes, and tried. > > > > > > > > > > A=: 'abcdefghijklmnopqrstuvwxyz' > > > > > m=: 5 4 $ 12{. A > > > > > m;(m i. 'efgh');(1{m);(4{m) > > > > > > > > > > I then found a slight "anomaly" though, trying the APL\360 > definition > > > > with > > > > > that example. > > > > > > > > > > > > > > > +/*./\m~:/'efgh' > > > > > 1 5 5 5 > > > > > 5 1 5 5 > > > > > 5 5 1 5 > > > > > 5 5 5 1 > > > > > > > > > > However that "anomaly" was fixed by the Extended definition, so > maybe > > > > > therein is an example of why the y value must be looped through, > too. > > > > > > > > > > +/*./\m~:/&:<"(_1+#$m)'efgh' > > > > > 1 > > > > > > > > > > Can you comment, please? > > > > > > > > > > Also, in the second DO there is a phrase like this: > *z++=*h<0?xn:*h; > > > > > > > > > > I am familiar with the B?T:F part of the phrase, but I have never > seen > > > a > > > > ++ > > > > > followed by an assignment. Does that just add one to the result > from > > > the > > > > > assigned amount? > > > > > > > > > > Oh, and thanks for posting your paper. > > > > > > > > > > > > > > > -- > > > > > (B=) > > > > > > ---------------------------------------------------------------------- > > > > > 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 > > > > > ---------------------------------------------------------------------- > > For information about J forums see http://www.jsoftware.com/forums.htm > > -- > regards, > ==================================================== > GPG key 1024D/4434BAB3 2008-08-24 > gpg --keyserver subkeys.pgp.net --recv-keys 4434BAB3 > gpg --keyserver subkeys.pgp.net --armor --export 4434BAB3 > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm