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