// Global variables
// Scott Aaronson <aaronson@cs.berkeley.edu>
// Last modified 6/9/2000


typedef struct
{

	long w;	// Weight
	long l;	// Long

} weightedLong;

typedef struct
{

	long dir;	// Direction of quasisymmetry (bitwise encoded)
	long sf;	// Output of function
	long type;	// Type (NONSYM, REGSYM, CONSYM, or XORSYM)

} quasiSym;



extern long *f;					// The Boolean function
extern long n;					// Number of inputs
extern long *q;					// Size 3^n array used for storing partial results
								// in dynamic programming algorithms
extern long N;					// 2^n
extern long M;					// 3^n
extern long domain;				// Size of f's domain
extern long prev;				// The last measure computed
extern double *qq;				// Analogous to q
extern char **ia;				// (n+1)*n array used for storing input strings
extern weightedLong *ca;		// Size 3^n array of where f is constant
extern char cadone;				// Whether ca has been computed yet
extern struct _timeb start;		// Start of timing for an algorithm
extern struct _timeb finish;	// End of timing
extern double elapsed;			// Elapsed time
extern long p2[32];				// Powers of 2
extern long p3[20];				// Powers of 3
//long *t2b;					// Ternary-to-binary conversion
extern long *b2t;				// Binary-to-ternary conversion
//extern char issym = 1;			// Is f symmetric
extern double bsav;				// Average block sensitivity
extern char *fs;				// String containing the factorization
extern char *fsp;				// Pointer to fs
