1 /**************************************************************************** 2 ** 3 *A storage_fixed.h ANUPQ source Eamonn O'Brien 4 ** 5 *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany 6 *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia 7 ** 8 */ 9 10 /* the default values of SC1 and SC2 may be altered 11 provided SC1 + SC2 + MAXCLASS = WORD_LENGTH */ 12 13 /* largest number of defining generators = 2^SC1 - 1 */ 14 #define SC1 9 15 #define MAXGENS ((1 << SC1) - 1) 16 17 /* largest number of pc generators = 2^SC2 - 1 */ 18 #define SC2 16 19 #define MAXPC ((1 << SC2) - 1) 20 21 #define SC3 (SC1 + SC2) 22 23 /* largest class = 2^(WORD_LENGTH - (SC1 + SC2)) - 1 */ 24 #define MAXCLASS ((1 << (WORD_LENGTH - SC3)) - 1) 25 26 #define MASK1 ((1U << SC1) - 1) 27 #define MASK2 ((1U << SC2) - 1) 28 29 #define INSWT(i) ((i) << SC3) 30 #define WT(i) ((i) >> SC3) 31 32 #define PACK2(i, j) (((i)<<SC2) + (j)) 33 #define FIELD1(i) ((i) >> SC2) 34 #define FIELD2(i) ((i) & MASK2) 35 36 #define PACK3(i, j, k) (((((i) << SC2) + (j)) << SC1) + (k)) 37 #define PART2(i) (((i) >> SC1) & MASK2) 38 #define PART3(i) ((i) & MASK1) 39 40