You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

61 lines
1.4 KiB
Matlab

function mmtest()
tmpfile = [num2str(now()) '.mtx'];
fp_err = 1e-15;
function works = rwtest(m)
mmwrite(tmpfile, m);
m2 = mmread(tmpfile);
works = all(abs(m(:) - m2(:)) < fp_err*mean(abs(m(:))));
delete(tmpfile);
end
dense_r = rand(100) + 1i * rand(100);
sparse_r = sparse(dense_r * (abs(dense_r) > mean(abs(dense_r(:)))));
% full
assert(rwtest(dense_r));
assert(rwtest(sparse_r));
% symmetric
assert(rwtest( tril(dense_r) + tril(dense_r).' ));
assert(rwtest( tril(sparse_r) + tril(sparse_r).' ));
% skew-symmetric
assert(rwtest( tril(dense_r) - tril(dense_r).' ));
assert(rwtest( tril(sparse_r) - tril(sparse_r).' ));
% hermitian
assert(rwtest( tril(dense_r) + tril(dense_r)' ));
assert(rwtest( tril(sparse_r) + tril(sparse_r)' ));
dense_r = real(dense_r);
sparse_r = real(sparse_r);
% full
assert(rwtest(dense_r));
assert(rwtest(sparse_r));
% symmetric
assert(rwtest( tril(dense_r) + tril(dense_r).' ));
assert(rwtest( tril(sparse_r) + tril(sparse_r).' ));
% skew-symmetric
assert(rwtest( tril(dense_r) - tril(dense_r).' ));
assert(rwtest( tril(sparse_r) - tril(sparse_r).' ));
% hermitian
assert(rwtest( tril(dense_r) + tril(dense_r)' ));
assert(rwtest( tril(sparse_r) + tril(sparse_r)' ));
end