//computes the state transition matrices
System.out.println("Creating the WELL607 state transition matrices.");
//the state transition matrices
BitMatrix STp0, STpw, STpz;
BitVector[] bv = new BitVector[NUM_BITS];
int[] state = new int[BUFFER_SIZE];
int[] vect = new int[R];
int z0, z1, z2;
for(int i = 0; i < NUM_BITS; i++) {
//state is a unit vector
for(int j = 0; j < BUFFER_SIZE; j++)
state[j] = 0;
state[i / W] = 1 << (i % W);
//advance one state of the recurrence (state_i = 0)
z0 = (state[R1] & MASKL) | (state[R2] & MASKU);
z1 = (state[0]^(state[0]>>>19)) ^ (state[M1]^(state[M1]>>>11));
z2 = (state[M2]^(state[M2]<<(14))) ^ state[M3];
state[0] = z1 ^ z2;
state[BUFFER_SIZE - 1] = (z0^(z0>>>18)) ^
z1 ^ (state[0]^(state[0]<<5));
//put the state vector in vect (state_i = -1)
for(int j = 0; j < R; j++)
vect[j] = state[(j - 1) & MASK_STATE];
bv[i] = new BitVector(vect, NUM_BITS);
}
STp0 = (new BitMatrix(bv)).transpose();
STpw = STp0.power2e(w);
STpz = STpw.power2e(v);
try {
FileOutputStream fos = new FileOutputStream(args[0]);
ObjectOutputStream oos = new ObjectOutputStream(fos);