#include <stdio.h>
#include <stdlib.h>
int default_rand() {
static unsigned int i=3, r[34] = { 0xf3bec5da, 0x991539b1, 0x16a5bce3, 0x6774a4cd,
0x55928aca, 0xc34a51a2, 0x73b5def3, 0x3e01511e, 0x4e508aaa, 0x61048c05,
0xf5500617, 0x846b7115, 0x6a19892c, 0x896a97af, 0xdb48f936, 0x14898454,
0x37ffd106, 0xb58bff9c, 0x59e17104, 0xcf918a49, 0x09378c83, 0x52c7a471,
0x8d293ea9, 0x1f4fc301, 0xc3db71be, 0x39b44e1c, 0xf8a44ef9, 0x4c8b80b1,
0x19edc328, 0x87bf4bdd, 0xc9b240e5, 0xe9ee4b1b, 0x4382aee7, 0x535b6b41 };
i = (i+1) % 34;
return (r[i] = r[(i+3)%34] + r[(i+31)%34]) >> 1;
}
int main(void) {
int i;
for (i=0; i<1000000; i++) {
if (default_rand
() != rand()) { return 0;
}
}
printf("Tested %d values; no errors\n",i
); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCmludCBkZWZhdWx0X3JhbmQoKSB7CiAgc3RhdGljIHVuc2lnbmVkIGludCBpPTMsIHJbMzRdID0geyAweGYzYmVjNWRhLCAweDk5MTUzOWIxLCAweDE2YTViY2UzLCAweDY3NzRhNGNkLAogICAgICAgICAgICAgMHg1NTkyOGFjYSwgMHhjMzRhNTFhMiwgMHg3M2I1ZGVmMywgMHgzZTAxNTExZSwgMHg0ZTUwOGFhYSwgMHg2MTA0OGMwNSwKICAgICAgICAgICAgIDB4ZjU1MDA2MTcsIDB4ODQ2YjcxMTUsIDB4NmExOTg5MmMsIDB4ODk2YTk3YWYsIDB4ZGI0OGY5MzYsIDB4MTQ4OTg0NTQsCiAgICAgICAgICAgICAweDM3ZmZkMTA2LCAweGI1OGJmZjljLCAweDU5ZTE3MTA0LCAweGNmOTE4YTQ5LCAweDA5Mzc4YzgzLCAweDUyYzdhNDcxLAogICAgICAgICAgICAgMHg4ZDI5M2VhOSwgMHgxZjRmYzMwMSwgMHhjM2RiNzFiZSwgMHgzOWI0NGUxYywgMHhmOGE0NGVmOSwgMHg0YzhiODBiMSwKICAgICAgICAgICAgIDB4MTllZGMzMjgsIDB4ODdiZjRiZGQsIDB4YzliMjQwZTUsIDB4ZTllZTRiMWIsIDB4NDM4MmFlZTcsIDB4NTM1YjZiNDEgfTsKICBpID0gKGkrMSkgJSAzNDsKICByZXR1cm4gKHJbaV0gPSByWyhpKzMpJTM0XSArIHJbKGkrMzEpJTM0XSkgPj4gMTsKfQoKaW50IG1haW4odm9pZCkgewogIGludCBpOwogIHNyYW5kKDEpOwogIGZvciAoaT0wOyBpPDEwMDAwMDA7IGkrKykgewogICAgaWYgKGRlZmF1bHRfcmFuZCgpICE9IHJhbmQoKSkgewogICAgICBwcmludGYoIk1pc21hdGNoIGF0IGk9JWRcbiIpOwogICAgICByZXR1cm4gMDsKICAgIH0KICB9CiAgcHJpbnRmKCJUZXN0ZWQgJWQgdmFsdWVzOyBubyBlcnJvcnNcbiIsaSk7CiAgcmV0dXJuIDA7Cn0K