gepivot.m
% partial pivoting routine called by gauselim
%
% USAGE: [A, err] = gepivot(A, k)
%
% where A = augmented matrix
% k = current pivot row
% err = error code
% = 0 = no error
% = 1 = matrix is singular
function [A, err] = gepivot(A, k)
err = 0;
[n, m] = size(A);
piv = A(k,k);
newpivot = k;
for i = k+1:n % check all rows below pivot
if abs(A(i,k)) > abs(piv)
newpivot = i;
piv = A(i,k);
end
end
if piv == 0 % trouble - can't avoid 0 pivot
err = 1;
elseif newpivot ~= k % best pivot elsewhere, swap rows
for j = k:m
temp1 = A(k,j);
temp2 = A(newpivot,j);
A(k,j) = temp2;
A(newpivot,j) = temp1;
end
end