/* e(a, b, m) := a^b (mod m) */
define e(a, b, m) {
auto s, sb;
sb = obase; obase = 16;
s = 1;
while(b != 0) {
if((b % 2) == 1) {
s = (s * a) % m;
}
b /= 2;
a = (a * a) % m;
}
obase = sb;
return (s);
}
/* g(a, b) := (a, b) */
define g(a, b) {
auto r;
while(b != 0) {
r = a % b;
a = b;
b = r;
}
if(a < 0) {
return(-a);
} else {
return(a);
}
}
define a(x) {
if(x < 0) {
return (-x);
} else {
return (x);
}
}
xgu = 0; xgv = 0;
define x(a, b) {
auto u, v, x, y, t, r;
if(a(b) > a(a)) {
t = b; b = a; a = t; r = 1;
} else {
r = 0;
}
u = 1; v = 0;
x = 0; y = 1;
while(b != 0) {
t = a / b;
a = a - (t * b);
v = v - (t * y);
u = u - (t * x);
if(a(a) < a(b)) {
t = a; a = b; b = t;
t = v; v = y; y = t;
t = u; u = x; x = t;
}
}
if(r) {
xgu = v; xgv = u;
} else {
xgu = u; xgv = v;
}
if(a < 0) {
return (-a);
} else {
return (a);
}
}
define i(a, m) {
auto c;
c = x(a, m);
if(c != 1)
return(0);
return ((xgu + m) % m);
}
scale = 0
rand_modulus = 2860385147
rand_base = 129
rand_seed = 10342799
define srand(s) {
rand_seed = s;
}
define rand(n) {
auto r;
r = (rand_seed * rand_base) % rand_modulus;
rand_seed = r;
return(r % n);
}
define rand_digits(k) {
auto s;
s = 0;
while(k > 0) {
s = (s * 10) + rand(10);
k = k - 1;
}
return(s);
}
define rval(ndigits, probneg) {
auto x;
x = rand_digits(ndigits);
if(probneg > 0 && rand(100) < probneg)
x = x * -1;
return(x);
}
for(i = 2; i < 100; i += 4) {
value = rand_digits(i);
obase = 256;
print "readuns:", value;
obase = 10;
print ":", value, "\n"
}
/*
for(i = 2; i < 100; i += 4) {
for(j = 0; j < 2; ++j) {
ndig = rand(7);
base = rval(ndig, 20);
expt = rand_digits(i);
mod = rand_digits(i);
result = e(base, expt, mod);
if(result < 0) {
result = result + mod;
}
print "emodbv:", base, ",", expt, ",", mod, ",0:", result, "\n";
print "emodbv:", base, ",", expt, ",", mod, ",=2:", result, "\n";
print "emodbv:", base, ",", expt, ",", mod, ",=3:", result, "\n";
}
}
*/
halt