% ./main > jj
count = 5, limit = 20
eps = 2.22045e-16
|A*A'-I| = 1774.97
|Q*Q'-I| = 1.00458e-15
|V*V'-I| = 7.85046e-17
|A-Q'*S*V| = 1.64551e-14
% octave jj
>> check
r
r =                    2
norm (A * A' - eye (n), 'fro')
ans =     1774.97154906776
norm (Q * Q' - eye (n), 'fro')
ans = 2.43758348837088e-15
norm (V (1:r, :) * V (1:r, :)' - eye (r), 'fro')
ans = 1.00578923416921e-15
norm (A - Q (1:r, :)' * diag (S, r, r) * V (1:r, :), 'fro')
ans = 5.03283367941483e-14
[UU, SS, VV] = svd (A);
rr = rank (SS)
rr =                    2
norm (UU * UU' - eye (n), 'fro')
ans = 1.03705000601808e-15
norm (VV (1:rr, :) * VV (1:rr, :)' - eye (r), 'fro')
ans = 2.85779051049352e-16
norm (A - UU (:, 1:rr) * SS (1:rr, 1:rr) * VV (:, 1:rr)', 'fro')
ans = 1.34188152880838e-14
echo ('off')
>> 
% ./cmain > jj
count = 5, limit = 20
eps = 2.22045e-16
|A*A'-I| = 4637.49
|Q*Q'-I| = 5.52427e-16
|V*V'-I| = 2.66945e-16
|A-Q'*S*V| = 1.01925e-14
% octave jj
>> check
r
r =                    2
norm (A * A' - eye (n), 'fro')
ans =     4637.48681938828
norm (Q * Q' - eye (n), 'fro')
ans =  1.1879883951554e-15
norm (V (1:r, :) * V (1:r, :)' - eye (r), 'fro')
ans =   5.397168433366e-16
norm (A - Q (1:r, :)' * diag (S, r, r) * V (1:r, :), 'fro')
ans = 7.45234259151262e-14
[UU, SS, VV] = svd (A);
rr = rank (SS)
rr =                    2
norm (UU * UU' - eye (n), 'fro')
ans = 3.66269661125979e-16
norm (VV (1:rr, :) * VV (1:rr, :)' - eye (r), 'fro')
ans = 5.67803375025566e-16
norm (A - UU (:, 1:rr) * SS (1:rr, 1:rr) * VV (:, 1:rr)', 'fro')
ans = 1.70848205888697e-14
echo ('off')
>> 
% ./main -r 20 30 > jj
seed = 1641480163
count = 8, limit = 20
eps = 2.22045e-16
|A*A'-I| = 52.5953
|Q*Q'-I| = 5.48304e-15
|V*V'-I| = 4.71223e-15
|A-Q'*S*V| = 1.56833e-14
% octave jj
>> check
r
r =                   20
norm (A * A' - eye (n), 'fro')
ans =     52.5953311505678
norm (Q * Q' - eye (n), 'fro')
ans = 8.39222899693267e-15
norm (V (1:r, :) * V (1:r, :)' - eye (r), 'fro')
ans = 8.03521044636603e-15
norm (A - Q (1:r, :)' * diag (S, r, r) * V (1:r, :), 'fro')
ans = 3.14636932749961e-14
[UU, SS, VV] = svd (A);
rr = rank (SS)
rr =                   20
norm (UU * UU' - eye (n), 'fro')
ans = 5.60723569509489e-15
norm (VV (1:rr, :) * VV (1:rr, :)' - eye (r), 'fro')
ans = 4.29085084915597e-15
norm (A - UU (:, 1:rr) * SS (1:rr, 1:rr) * VV (:, 1:rr)', 'fro')
ans = 2.29480438477324e-14
echo ('off')
>> 
% ./cmain -r 20 30 > jj
seed = 1641480184
count = 8, limit = 20
eps = 2.22045e-16
|A*A'-I| = 111.387
|Q*Q'-I| = 6.11478e-15
|V*V'-I| = 3.82711e-15
|A-Q'*S*V| = 2.53805e-14
% octave jj
>> check
r
r =                   20
norm (A * A' - eye (n), 'fro')
ans =      111.38668784362
norm (Q * Q' - eye (n), 'fro')
ans = 1.01590179250117e-14
norm (V (1:r, :) * V (1:r, :)' - eye (r), 'fro')
ans = 8.73807346657604e-15
norm (A - Q (1:r, :)' * diag (S, r, r) * V (1:r, :), 'fro')
ans = 5.19211272579621e-14
[UU, SS, VV] = svd (A);
rr = rank (SS)
rr =                   20
norm (UU * UU' - eye (n), 'fro')
ans = 4.68080632987205e-15
norm (VV (1:rr, :) * VV (1:rr, :)' - eye (r), 'fro')
ans = 4.30756603528784e-15
norm (A - UU (:, 1:rr) * SS (1:rr, 1:rr) * VV (:, 1:rr)', 'fro')
ans = 3.02014079257295e-14
echo ('off')
>> 
%
