21 vout.
general(
m_vl,
"RandomNumbers_Mseries: read from file = %s\n", filename.c_str());
24 infile.open(filename.c_str());
27 vout.
crucial(
m_vl,
"RandomNumbers_Mseries: unable to open input file.\n");
33 for (
int i = 0; i <
Np; i++) {
54 for (
int i = 0; i < IP; ++i) {
61 for (
int j = 0; j < IP; ++j) {
64 for (
int i = 0; i < 32; ++i) {
65 iwork = iwork * 2 + IB[JR];
66 IB[JR] = IB[JR] ^ IB[KR];
94 unsigned IWK[2 * IP - 1];
100 for (
int i = 0; i < IP; ++i) {
104 for (
int i = IP; i < 2 * IP - 1; ++i) {
105 IWK[i] = IWK[i - IP] ^ IWK[i - IQ];
108 for (
int i = 0; i < MU; ++i) {
115 if (M <= IP - 1)
goto continued300;
122 for (
int i = 0; i < IP; ++i) {
127 for (
int j = NB; j >= 0; --j) {
128 for (
int i = IP - 1; i >= 0; --i) {
129 C[2 * i + IB[j]] = C[i];
130 C[2 * i + 1 - IB[j]] = 0;
132 for (
int i = 2 * IP - 1; i >= IP; --i) {
133 C[i - IP] = C[i - IP] ^ C[i];
134 C[i - IQ] = C[i - IQ] ^ C[i];
138 for (
int j = 0; j < IP; ++j) {
140 for (
int i = 0; i < IP; ++i) {
141 iwork = iwork ^ (C[i] * IWK[j + i]);
151 vout.
general(
m_vl,
"RandomNumbers_Mseries: write down to file = %s\n", filename.c_str());
153 std::ofstream outfile;
154 outfile.open(filename.c_str());
157 vout.
crucial(
m_vl,
"RandomNumbers_Mseries: unable to open output file.\n");
161 outfile <<
" " <<
jr <<
" " <<
kr << std::endl;
163 for (
int i = 0; i <
Np; i++) {
164 outfile <<
" " <<
w[i] << std::endl;