function x = NaiveGE(a,b)
[n m] = size(a);
nb = length(b);
if( n ~= m | nb ~= m ),
error('Mismatched dimensions in NaiveGE');
end
% Forward elimination
for k=1:n-1, % Go column by column (k) and only operate
for i=k+1:n, % on the rows (i) below column k
coeff = a(i,k)/a(k,k);
for j=k+1:n,
a(i,j) = a(i,j) - coeff*a(k,j);
end
a(i,k) = coeff;
b(i) = b(i) - coeff*b(k);
end
end
% Backsubstitution
x(n) = b(n)/a(n,n); % Start from the bottom
for i=n-1:-1:1, % and work upward (Note: This for loop
sum = b(i); % goes from n-1 to 1 in steps of -1)
for j=i+1:n, % Skip lower triangular part of a(i,j)
sum = sum - a(i,j)*x(j);
end
x(i) = sum/a(i,i);
end
x = x';
return;