% ------- PARAMETERS -------------------------------
n = 500;
m = 500;
k = 490;
maxval = 10;
minval = -10;
version = 0;
% ------- Generating matrix ------------------------
dm = (maxval-minval)/(k-1);
I = minval:dm:maxval;
I = diag([exp(I) zeros(1,max([n,m])-k)]);
I = I(1:n,1:m);
W = randn(n,n);
V = randn(m,m);
[W,dum] = qr(W);
[V,dum] = qr(V);
A = W*I*V;
tol = max([n,m])*norm(A,1)*eps;
% ------- Factorizations ---------------------------
tic;
for i=1:1:10
[L1,U1,P1] = lu(A);
end
t1 = toc/10;
err_lu = norm(L1*U1-P1*A,1);
tic;
for i=1:1:10
[L, U, P, Q] = rrlu_mex(A, version);
end
t2 = toc/10;
err = norm(L*U-A(P,Q),1);
Rank = getRank(version,L,U,tol);
% ------- Summary -----------------------------------
disp(' ');
disp(' Summary:');
disp(' ');
disp([' Random matrix ' num2str(n) ' x ' num2str(m) ' with rank ' num2str(k)]);
disp([' Elapsed time of rrlu factorization: ' num2str(t2)]);
disp([' Elapsed time of lu factorization: ' num2str(t1)]);
disp([' Estimated rank: ' num2str(Rank)]);
disp([' Norm of residuals (rrlu): ' num2str(err)]);
disp([' Norm of residuals (lu): ' num2str(err_lu)]);
disp(' ');