p̲r̲o̲c̲e̲d̲u̲r̲e̲ tridiag(a, b, c, d) order : (n) result : (x); a̲r̲r̲a̲y̲ a, b, c, d, x; i̲n̲t̲e̲g̲e̲r̲ n; c̲o̲m̲m̲e̲n̲t̲ ; b̲e̲g̲i̲n̲ a̲r̲r̲a̲y̲ gamma[1 :n-1]; i̲n̲t̲e̲g̲e̲r̲ i; r̲e̲a̲l̲ y; gamma [1] := -a[1]/b[1]; x[1] := -d[1]/b[1]; f̲o̲r̲ i := 2 s̲t̲e̲p̲ 1 u̲n̲t̲i̲l̲ n-1 d̲o̲ b̲e̲g̲i̲n̲ y := b[i] + c[i] × gamma [i - 1]; gamma [i] := -a[i]/y; x[i] := -(c[i] × x[i-1] + d[i])/y e̲n̲d̲; x[n] := -(c[n] × x[n-1] + d[n])/(b[n] + c[n]× gamma[n-1]); f̲o̲r̲ i := n s̲t̲e̲p̲ -1 u̲n̲t̲i̲l̲ 2 d̲o̲ x[i - 1] := x[i] × gamma [i - 1] + x[i - 1] e̲n̲d̲ tridiag;