72 private static long[] curr_stream = { GERME, GERME, GERME, GERME, GERME };
81 substream =
new long[5];
83 for (
int i = 0; i < 5; i++)
84 stream[i] = curr_stream[i];
99 z = curr_stream[0] & 0xfffffffffffffffeL;
101 z = (b >>> 58) ^ (b >>> 55) ^ (b >>> 46) ^ (b >>> 43) ^ (z << 5) ^ (z << 8) ^ (z << 17) ^ (z << 20);
104 z = curr_stream[1] & 0xfffffffffffffe00L;
106 z = (b >>> 54) ^ (b >>> 53) ^ (b >>> 52) ^ (b >>> 50) ^ (b >>> 49) ^ (b >>> 48) ^ (b >>> 43) ^ (b >>> 41)
107 ^ (b >>> 38) ^ (b >>> 37) ^ (b >>> 30) ^ (b >>> 25) ^ (b >>> 24) ^ (b >>> 23) ^ (b >>> 19) ^ (b >>> 16)
108 ^ (b >>> 15) ^ (b >>> 14) ^ (b >>> 13) ^ (b >>> 11) ^ (b >>> 8) ^ (b >>> 7) ^ (b >>> 5) ^ (b >>> 3)
109 ^ (z << 0) ^ (z << 2) ^ (z << 3) ^ (z << 6) ^ (z << 7) ^ (z << 8) ^ (z << 9) ^ (z << 10) ^ (z << 11)
110 ^ (z << 12) ^ (z << 13) ^ (z << 14) ^ (z << 16) ^ (z << 18) ^ (z << 19) ^ (z << 21) ^ (z << 25) ^ (z << 30)
111 ^ (z << 31) ^ (z << 32) ^ (z << 36) ^ (z << 39) ^ (z << 40) ^ (z << 41) ^ (z << 42) ^ (z << 44) ^ (z << 47)
112 ^ (z << 48) ^ (z << 50) ^ (z << 52);
115 z = curr_stream[2] & 0xfffffffffffff000L;
117 z = (b >>> 50) ^ (b >>> 49) ^ (b >>> 46) ^ (b >>> 42) ^ (b >>> 40) ^ (b >>> 39) ^ (b >>> 38) ^ (b >>> 37)
118 ^ (b >>> 36) ^ (b >>> 32) ^ (b >>> 29) ^ (b >>> 28) ^ (b >>> 27) ^ (b >>> 25) ^ (b >>> 23) ^ (b >>> 20)
119 ^ (b >>> 19) ^ (b >>> 15) ^ (b >>> 12) ^ (b >>> 11) ^ (b >>> 2) ^ (z << 1) ^ (z << 2) ^ (z << 3) ^ (z << 6)
120 ^ (z << 10) ^ (z << 12) ^ (z << 13) ^ (z << 14) ^ (z << 15) ^ (z << 16) ^ (z << 20) ^ (z << 23) ^ (z << 24)
121 ^ (z << 25) ^ (z << 27) ^ (z << 29) ^ (z << 32) ^ (z << 33) ^ (z << 37) ^ (z << 40) ^ (z << 41) ^ (z << 50);
124 z = curr_stream[3] & 0xfffffffffffe0000L;
126 z = (b >>> 46) ^ (b >>> 44) ^ (b >>> 42) ^ (b >>> 41) ^ (b >>> 40) ^ (b >>> 38) ^ (b >>> 36) ^ (b >>> 32)
127 ^ (b >>> 30) ^ (b >>> 25) ^ (b >>> 18) ^ (b >>> 16) ^ (b >>> 15) ^ (b >>> 14) ^ (b >>> 12) ^ (b >>> 11)
128 ^ (b >>> 10) ^ (b >>> 9) ^ (b >>> 8) ^ (b >>> 6) ^ (b >>> 5) ^ (b >>> 4) ^ (b >>> 3) ^ (b >>> 2) ^ (z << 2)
129 ^ (z << 5) ^ (z << 6) ^ (z << 7) ^ (z << 9) ^ (z << 11) ^ (z << 15) ^ (z << 17) ^ (z << 22) ^ (z << 29)
130 ^ (z << 31) ^ (z << 32) ^ (z << 33) ^ (z << 35) ^ (z << 36) ^ (z << 37) ^ (z << 38) ^ (z << 39) ^ (z << 41)
131 ^ (z << 42) ^ (z << 43) ^ (z << 44) ^ (z << 45);
134 z = curr_stream[4] & 0xffffffffff800000L;
136 z = (b >>> 40) ^ (b >>> 29) ^ (b >>> 10) ^ (z << 1) ^ (z << 12) ^ (z << 31);
251 z = substream[0] & 0xfffffffffffffffeL;
253 z = (b >>> 61) ^ (b >>> 59) ^ (b >>> 58) ^ (b >>> 57) ^ (b >>> 51) ^ (b >>> 47) ^ (b >>> 46) ^ (b >>> 45)
254 ^ (b >>> 43) ^ (b >>> 39) ^ (b >>> 30) ^ (b >>> 29) ^ (b >>> 23) ^ (b >>> 15) ^ (z << 2) ^ (z << 4)
255 ^ (z << 5) ^ (z << 6) ^ (z << 12) ^ (z << 16) ^ (z << 17) ^ (z << 18) ^ (z << 20) ^ (z << 24) ^ (z << 33)
256 ^ (z << 34) ^ (z << 40) ^ (z << 48);
259 z = substream[1] & 0xfffffffffffffe00L;
261 z = (b >>> 52) ^ (b >>> 50) ^ (b >>> 49) ^ (b >>> 46) ^ (b >>> 43) ^ (b >>> 40) ^ (b >>> 37) ^ (b >>> 34)
262 ^ (b >>> 30) ^ (b >>> 28) ^ (b >>> 26) ^ (b >>> 25) ^ (b >>> 23) ^ (b >>> 21) ^ (b >>> 20) ^ (b >>> 19)
263 ^ (b >>> 17) ^ (b >>> 15) ^ (b >>> 13) ^ (b >>> 12) ^ (b >>> 10) ^ (b >>> 8) ^ (b >>> 7) ^ (b >>> 6)
264 ^ (b >>> 2) ^ (z << 1) ^ (z << 4) ^ (z << 6) ^ (z << 7) ^ (z << 11) ^ (z << 14) ^ (z << 15) ^ (z << 16)
265 ^ (z << 17) ^ (z << 21) ^ (z << 22) ^ (z << 25) ^ (z << 27) ^ (z << 29) ^ (z << 30) ^ (z << 32) ^ (z << 34)
266 ^ (z << 35) ^ (z << 36) ^ (z << 38) ^ (z << 40) ^ (z << 42) ^ (z << 43) ^ (z << 45) ^ (z << 47) ^ (z << 48)
267 ^ (z << 49) ^ (z << 53);
270 z = substream[2] & 0xfffffffffffff000L;
272 z = (b >>> 49) ^ (b >>> 45) ^ (b >>> 41) ^ (b >>> 40) ^ (b >>> 32) ^ (b >>> 27) ^ (b >>> 23) ^ (b >>> 14)
273 ^ (b >>> 1) ^ (z << 2) ^ (z << 3) ^ (z << 7) ^ (z << 11) ^ (z << 12) ^ (z << 20) ^ (z << 25) ^ (z << 29)
274 ^ (z << 38) ^ (z << 51);
277 z = substream[3] & 0xfffffffffffe0000L;
279 z = (b >>> 45) ^ (b >>> 32) ^ (b >>> 27) ^ (b >>> 22) ^ (b >>> 17) ^ (b >>> 13) ^ (b >>> 12) ^ (b >>> 7)
280 ^ (b >>> 3) ^ (b >>> 2) ^ (z << 3) ^ (z << 15) ^ (z << 20) ^ (z << 25) ^ (z << 30) ^ (z << 34) ^ (z << 35)
281 ^ (z << 40) ^ (z << 44) ^ (z << 45);
284 z = substream[4] & 0xffffffffff800000L;
286 z = (b >>> 40) ^ (b >>> 39) ^ (b >>> 38) ^ (b >>> 37) ^ (b >>> 35) ^ (b >>> 34) ^ (b >>> 31) ^ (b >>> 30)
287 ^ (b >>> 29) ^ (b >>> 28) ^ (b >>> 27) ^ (b >>> 26) ^ (b >>> 24) ^ (b >>> 23) ^ (b >>> 21) ^ (b >>> 20)
288 ^ (b >>> 18) ^ (b >>> 15) ^ (b >>> 12) ^ (b >>> 10) ^ (b >>> 9) ^ (b >>> 7) ^ (b >>> 6) ^ (b >>> 5)
289 ^ (b >>> 4) ^ (b >>> 3) ^ (z << 1) ^ (z << 2) ^ (z << 3) ^ (z << 4) ^ (z << 6) ^ (z << 7) ^ (z << 10)
290 ^ (z << 11) ^ (z << 12) ^ (z << 13) ^ (z << 14) ^ (z << 15) ^ (z << 17) ^ (z << 18) ^ (z << 20) ^ (z << 21)
291 ^ (z << 23) ^ (z << 26) ^ (z << 29) ^ (z << 31) ^ (z << 32) ^ (z << 34) ^ (z << 35) ^ (z << 36) ^ (z << 37)
332 throw new IllegalArgumentException(i +
" is larger than " + j +
".");
334 long q = 0x4000000000000000L / d;
335 long r = 0x4000000000000000L % d;
339 res = nextNumber() >>> 2;
340 }
while (res >= 0x4000000000000000L - r);
342 return i + (int) (res / q);