14887Schin 24887Schin /* : : generated by proto : : */ 34887Schin /*********************************************************************** 44887Schin * * 54887Schin * This software is part of the ast package * 6*12068SRoger.Faulkner@Oracle.COM * Copyright (c) 1985-2010 AT&T Intellectual Property * 74887Schin * and is licensed under the * 84887Schin * Common Public License, Version 1.0 * 98462SApril.Chin@Sun.COM * by AT&T Intellectual Property * 104887Schin * * 114887Schin * A copy of the License is available at * 124887Schin * http://www.opensource.org/licenses/cpl1.0.txt * 134887Schin * (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) * 144887Schin * * 154887Schin * Information and Software Systems Research * 164887Schin * AT&T Research * 174887Schin * Florham Park NJ * 184887Schin * * 194887Schin * Glenn Fowler <gsf@research.att.com> * 204887Schin * David Korn <dgk@research.att.com> * 214887Schin * Phong Vo <kpv@research.att.com> * 224887Schin * * 234887Schin ***********************************************************************/ 244887Schin 254887Schin /* 264887Schin * K. P. Vo 274887Schin * G. S. Fowler 284887Schin * AT&T Research 294887Schin * 304887Schin * ``the best'' combined linear congruent checksum/hash/PRNG 314887Schin */ 324887Schin 334887Schin #ifndef _HASHPART_H 344887Schin #if !defined(__PROTO__) 354887Schin #include <prototyped.h> 364887Schin #endif 374887Schin #if !defined(__LINKAGE__) 384887Schin #define __LINKAGE__ /* 2004-08-11 transition */ 394887Schin #endif 404887Schin 414887Schin #define _HASHPART_H 424887Schin 434887Schin #define HASH_ADD(h) (0x9c39c33dL) 444887Schin 454887Schin #if __sparc__ || __sparc || sparc 464887Schin 474887Schin #define HASH_A(h,n) ((((h) << 2) - (h)) << (n)) 484887Schin #define HASH_B(h,n) ((((h) << 4) - (h)) << (n)) 494887Schin #define HASH_C(h,n) ((HASH_A(h,7) + HASH_B(h,0)) << (n)) 504887Schin #define HASH_MPY(h) (HASH_C(h,22)+HASH_C(h,10)+HASH_A(h,6)+HASH_A(h,3)+(h)) 514887Schin 524887Schin #else 534887Schin 544887Schin #define HASH_MPY(h) ((h)*0x63c63cd9L) 554887Schin 564887Schin #endif 574887Schin 584887Schin #define HASHPART(h,c) (h = HASH_MPY(h) + HASH_ADD(h) + (c)) 594887Schin 604887Schin #endif 61