31 lines
805 B
Text
31 lines
805 B
Text
subtractive_generator: procedure options (main);
|
|
|
|
declare (r, s) (0:54) fixed binary (31);
|
|
declare (i, n, seed) fixed binary (31);
|
|
|
|
/* Bentley's initialization */
|
|
seed = 292929;
|
|
s(0) = seed; s(1) = 1;
|
|
|
|
/* Compute s2,s3,...,s54 using the subtractive formula sn = s(n-2) - s(n-1)(mod 10**9). */
|
|
do n = 2 to hbound(s,1);
|
|
s(n) = mod ( s(n-2) - s(n-1), 1000000000);
|
|
end;
|
|
|
|
/* Rearrange initial values. */
|
|
do n = 0 to hbound(r,1);
|
|
r(n) = s( mod(34*(n+1), 55));
|
|
end;
|
|
|
|
do n = 55 to 219;
|
|
i = mod (n, 55);
|
|
r(i) = mod ( r(mod(n-55, 55)) - r(mod(n-24, 55)), 1000000000);
|
|
end;
|
|
|
|
do n = 220 to 235;
|
|
i = mod(n, 55);
|
|
r(i) = mod ( r(mod(n-55, 55)) - r(mod(n-24, 55)), 1000000000);
|
|
put skip list (r(i));
|
|
end;
|
|
|
|
end subtractive_generator;
|