Skip to Content.
Sympa Menu

charm - [charm] strange hash function in PUP::able::PUP_ID::setName

charm AT lists.cs.illinois.edu

Subject: Charm++ parallel programming system

List archive

[charm] strange hash function in PUP::able::PUP_ID::setName


Chronological Thread 
  • 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.

Top of Page