crunch
#define hash(str) (int)(((unsigned)(crunch(str) * FACTOR)) >> shift)
static unsigned int crunch();
static unsigned int crunch(POINTER);
return (crunch(key) % length);
return ((int)(((unsigned)(crunch(key) * FACTOR)) >> SHIFT));
return (((unsigned int)((crunch(key) * FACTOR) << m) >> SHIFT) | 1);