[m,n] = size(A);

if m~=n, error('Matrix A must be square'); end

nb=n+1;

Aug=[A b];

% forward elimination

for k = 1: n-1

     %부분 피봇팅

     [big, i]=max(abs(Aug(k:n,k)));

     ipr=i+k-1;

     if ipr~= k

         Aug([k,ipr],:)=Aug([ipr,k],:);

     end

    

     for i = k+1:n

        factor=Aug(i, k)/Aug(k,k);

        Aug(i,k:nb)=Aug(i,k:nb)-factor*Aug(k,k:nb);

     end

end