Net2/usr/src/usr.bin/pascal/tstpx/src/funcs.p

program funcs(output);

type
sint=0..30000;
Sint=-30000..30000;
lint=0..100000;
Lint=-100000..100000;
color=(red,yellow,blue);

var
i :sint;
n :Sint;
j :lint;
m :Lint;
k :real;
l :color;
ptr :^integer;

begin
k:=0.7853981635;
{ generate bound checks }
j:=98000;
j:=355;
i:=j;
i:=113;
m:=-25000;
m:=100;
n:=m;
n:=154;
assert(trunc(k) = 0, 'trunc(k)');
assert(round(k) = 1, 'round(k)');
assert(sqr(2.5) = 6.25, 'sqr(2.5)');
assert(sqr(j) = 126025, 'sqr(j)');
assert(sqr(i) = 12769, 'sqr(i)');
assert(succ(j) = 356, 'succ(j)');
assert(succ(i) = 114, 'succ(i)');
l:=yellow;
assert(succ(l) = blue, 'succ(l)');
assert(pred(l) = red, 'pred(l)');
assert(pred(j) = 354, 'pred(j)');
assert(pred(i) = 112, 'pred(i)');
assert(odd(i), 'odd(i)');
assert(odd(j), 'odd(j)');
assert(chr(j-355) = chr(0), 'chr(j-355)');
assert(sqrt(25) = 5.0, 'sqrt(25)');
assert(sqrt(m) = 10.0, 'sqrt(m)');
assert(sin(k)-cos(k) < 1e-7, 'sin(k)-cos(k)');
assert(ln(exp(k))-k < 1e-7, 'ln(exp(k)');
assert(arctan(1.0)-k < 1e-7, 'arctan(1.0)');
assert(expo(k) = -1, 'expo(k)');
assert(expo(-1e+10) = 10, 'expo(-1e+10)');
assert(expo(1e-10) = -10, 'expo(1e-10)');
new(ptr);
dispose(ptr);
assert(seed(seed(1)) = 1, 'seed(seed(1))');
assert(random(1.0) <= 1.0, 'random(1.0) <= 1.0');
assert(random(1.0) >= 0.0, 'random(1.0) >= 0.0');
end.