procedure tridiag(a, b, c, d) order : (n) result : (x);
   array a, b, c, d, x; integer n;
     comment ;
begin array gamma[1 :n-1]; integer i; real y;
   gamma [1] ≔ -a[1]/b[1];
   x[1] ≔ -d[1]/b[1];
   for	    i ≔ 2 step 1 until n-1 do
      begin	    y ≔ b[i] + c[i] × gamma [i - 1];
         gamma [i] ≔ -a[i]/y; x[i] ≔ -(c[i] × x[i-1]
           + d[i])/y end;
   x[n] ≔ -(c[n] × x[n-1] + d[n])/(b[n] + c[n]× gamma[n-1]);
   for	    i ≔ n step -1 until 2 do
        x[i - 1] ≔ x[i] × gamma [i - 1] + x[i - 1]
end tridiag;