charm AT lists.siebelschool.illinois.edu
Subject: Charm++ parallel programming system
List archive
- From: Ake Sandgren <ake.sandgren AT hpc2n.umu.se>
- To: charm AT cs.uiuc.edu
- Subject: [charm] strange hash function in PUP::able::PUP_ID::setName
- Date: Wed, 06 Mar 2013 11:48:36 +0100
- List-archive: <http://lists.cs.uiuc.edu/pipermail/charm/>
- List-id: CHARM parallel programming system <charm.cs.uiuc.edu>
Hi!
The hash function in PUP::able::PUP_ID::setName seems a bit strange
void PUP::able::PUP_ID::setName(const char *name)
{
int i,o,n=strlen(name);
int t[len]={0};
for (o=0;o<n;o++)
for (i=0;i<len;i++) {
unsigned char c=name[o];
int shift1=(((o+2)*(i+1)*5+4)%13);
int shift2=(((o+2)*(i+1)*3+2)%11)+13;
t[i]+=(c<<shift1)+(c<<shift2);
}
for (i=0;i<len;i++)
hash[i]=(unsigned char)(t[i]%20117 + t[i]%1217 + t[i]%
157);
}
The value calculated by t[i]%20117+... falls in the 0-20116 range while
unsigned char is only 0 - 255
Shouldn't hash really be unsigned short?
- [charm] strange hash function in PUP::able::PUP_ID::setName, Ake Sandgren, 03/06/2013
Archive powered by MHonArc 2.6.16.