1extern crate c2rust_bitfields;
2extern crate libc;
3extern crate core;
4static mut mt: [libc::c_ulonglong; 312] = [0; 312];
5static mut mti: libc::c_int = 312 as libc::c_int + 1 as libc::c_int;
6#[no_mangle]
7pub unsafe extern "C" fn init_genrand64(mut seed: libc::c_ulonglong) {
8 mt[0 as libc::c_int as usize] = seed;
9 mti = 1 as libc::c_int;
10 while mti < 312 as libc::c_int {
11 mt[mti
12 as usize] = (6364136223846793005 as libc::c_ulonglong)
13 .wrapping_mul(
14 mt[(mti - 1 as libc::c_int) as usize]
15 ^ mt[(mti - 1 as libc::c_int) as usize] >> 62 as libc::c_int,
16 )
17 .wrapping_add(mti as libc::c_ulonglong);
18 mti += 1;
19 }
20}
21#[no_mangle]
22pub unsafe extern "C" fn init_by_array64(
23 mut init_key: *mut libc::c_ulonglong,
24 mut key_length: libc::c_ulonglong,
25) {
26 let mut i: libc::c_ulonglong = 0;
27 let mut j: libc::c_ulonglong = 0;
28 let mut k: libc::c_ulonglong = 0;
29 init_genrand64(19650218 as libc::c_ulonglong);
30 i = 1 as libc::c_int as libc::c_ulonglong;
31 j = 0 as libc::c_int as libc::c_ulonglong;
32 k = if 312 as libc::c_int as libc::c_ulonglong > key_length {
33 312 as libc::c_int as libc::c_ulonglong
34 } else {
35 key_length
36 };
37 while k != 0 {
38 mt[i
39 as usize] = (mt[i as usize]
40 ^ (mt[i.wrapping_sub(1 as libc::c_int as libc::c_ulonglong) as usize]
41 ^ mt[i.wrapping_sub(1 as libc::c_int as libc::c_ulonglong) as usize]
42 >> 62 as libc::c_int)
43 .wrapping_mul(3935559000370003845 as libc::c_ulonglong))
44 .wrapping_add(*init_key.offset(j as isize))
45 .wrapping_add(j);
46 i = i.wrapping_add(1);
47 j = j.wrapping_add(1);
48 if i >= 312 as libc::c_int as libc::c_ulonglong {
49 mt[0 as libc::c_int
50 as usize] = mt[(312 as libc::c_int - 1 as libc::c_int) as usize];
51 i = 1 as libc::c_int as libc::c_ulonglong;
52 }
53 if j >= key_length {
54 j = 0 as libc::c_int as libc::c_ulonglong;
55 }
56 k = k.wrapping_sub(1);
57 }
58 k = (312 as libc::c_int - 1 as libc::c_int) as libc::c_ulonglong;
59 while k != 0 {
60 mt[i
61 as usize] = (mt[i as usize]
62 ^ (mt[i.wrapping_sub(1 as libc::c_int as libc::c_ulonglong) as usize]
63 ^ mt[i.wrapping_sub(1 as libc::c_int as libc::c_ulonglong) as usize]
64 >> 62 as libc::c_int)
65 .wrapping_mul(2862933555777941757 as libc::c_ulonglong))
66 .wrapping_sub(i);
67 i = i.wrapping_add(1);
68 if i >= 312 as libc::c_int as libc::c_ulonglong {
69 mt[0 as libc::c_int
70 as usize] = mt[(312 as libc::c_int - 1 as libc::c_int) as usize];
71 i = 1 as libc::c_int as libc::c_ulonglong;
72 }
73 k = k.wrapping_sub(1);
74 }
75 mt[0 as libc::c_int as usize] = (1 as libc::c_ulonglong) << 63 as libc::c_int;
76}
77#[no_mangle]
78pub unsafe extern "C" fn genrand64_int64() -> libc::c_ulonglong {
79 let mut i: libc::c_int = 0;
80 let mut x: libc::c_ulonglong = 0;
81 static mut mag01: [libc::c_ulonglong; 2] = [
82 0 as libc::c_ulonglong,
83 0xb5026f5aa96619e9 as libc::c_ulonglong,
84 ];
85 if mti >= 312 as libc::c_int {
86 if mti == 312 as libc::c_int + 1 as libc::c_int {
87 init_genrand64(5489 as libc::c_ulonglong);
88 }
89 i = 0 as libc::c_int;
90 while i < 312 as libc::c_int - 156 as libc::c_int {
91 x = mt[i as usize] & 0xffffffff80000000 as libc::c_ulonglong
92 | mt[(i + 1 as libc::c_int) as usize] & 0x7fffffff as libc::c_ulonglong;
93 mt[i
94 as usize] = mt[(i + 156 as libc::c_int) as usize] ^ x >> 1 as libc::c_int
95 ^ mag01[(x & 1 as libc::c_ulonglong) as libc::c_int as usize];
96 i += 1;
97 }
98 while i < 312 as libc::c_int - 1 as libc::c_int {
99 x = mt[i as usize] & 0xffffffff80000000 as libc::c_ulonglong
100 | mt[(i + 1 as libc::c_int) as usize] & 0x7fffffff as libc::c_ulonglong;
101 mt[i
102 as usize] = mt[(i + (156 as libc::c_int - 312 as libc::c_int)) as usize]
103 ^ x >> 1 as libc::c_int
104 ^ mag01[(x & 1 as libc::c_ulonglong) as libc::c_int as usize];
105 i += 1;
106 }
107 x = mt[(312 as libc::c_int - 1 as libc::c_int) as usize]
108 & 0xffffffff80000000 as libc::c_ulonglong
109 | mt[0 as libc::c_int as usize] & 0x7fffffff as libc::c_ulonglong;
110 mt[(312 as libc::c_int - 1 as libc::c_int)
111 as usize] = mt[(156 as libc::c_int - 1 as libc::c_int) as usize]
112 ^ x >> 1 as libc::c_int
113 ^ mag01[(x & 1 as libc::c_ulonglong) as libc::c_int as usize];
114 mti = 0 as libc::c_int;
115 }
116 let fresh0 = mti;
117 mti = mti + 1;
118 x = mt[fresh0 as usize];
119 x ^= x >> 29 as libc::c_int & 0x5555555555555555 as libc::c_ulonglong;
120 x ^= x << 17 as libc::c_int & 0x71d67fffeda60000 as libc::c_ulonglong;
121 x ^= x << 37 as libc::c_int & 0xfff7eee000000000 as libc::c_ulonglong;
122 x ^= x >> 43 as libc::c_int;
123 return x;
124}
125#[no_mangle]
126pub unsafe extern "C" fn genrand64_int63() -> libc::c_longlong {
127 return (genrand64_int64() >> 1 as libc::c_int) as libc::c_longlong;
128}
129#[no_mangle]
130pub unsafe extern "C" fn genrand64_real1() -> libc::c_double {
131 return (genrand64_int64() >> 11 as libc::c_int) as libc::c_double
132 * (1.0f64 / 9007199254740991.0f64);
133}
134#[no_mangle]
135pub unsafe extern "C" fn genrand64_real2() -> libc::c_double {
136 return (genrand64_int64() >> 11 as libc::c_int) as libc::c_double
137 * (1.0f64 / 9007199254740992.0f64);
138}
139#[no_mangle]
140pub unsafe extern "C" fn genrand64_real3() -> libc::c_double {
141 return ((genrand64_int64() >> 12 as libc::c_int) as libc::c_double + 0.5f64)
142 * (1.0f64 / 4503599627370496.0f64);
143}