program float_stress;
var
x, y, z: real;
procedure test;
var
a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t : real;
sum, tmp : real;
begin
a := 1.1; b := 2.2; c := 3.3; d := 4.4;
e := 5.5; f := 6.6; g := 7.7; h := 8.8;
i := 9.9; j := 10.10; k := 11.11; l := 12.12;
m := 13.13; n := 14.14; o := 15.15; p := 16.16;
q := 17.17; r := 18.18; s := 19.19; t := 20.20;
sum := 0.0;
{ allocate lots of float temporaries via complex expressions }
tmp := a*b + c/d - e*f + g/h - i*j + k/l - m/n + o/p - q/r + s/t;
sum := sum + tmp;
tmp := (a + b + c + d + e) * (f + g + h + i + j);
sum := sum + tmp;
tmp := (k*l - m*n) / (o + p + q) + (r*s) * (t + a);
sum := sum + tmp;
{ big linear combination to stress registers/reuse }
sum := sum + a + b + c + d + e + f + g + h + i + j
+ k + l + m + n + o + p + q + r + s + t;
writeln(sum);
end;
begin
test;
x := 0;
y := 1;
z := 2;
x := y * z;
writeln(x);
end.