1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
function test_randperms
%TEST_RANDPERMS test random permutations
% Example:
% test_randperms
% See also: testall
% CXSparse, Copyright (c) 2006-2022, Timothy A. Davis. All Rights Reserved.
% SPDX-License-Identifier: LGPL-2.1+
rand ('state', 0)
for trial = 1:100
m = fix (30 * rand (1)) ;
n = fix (30 * rand (1)) ;
d = rand (1) ;
A = sprandn (m,n,d) ;
if (m == 0)
p = [] ;
else
p = randperm (m) ;
end
if (n == 0)
q = [] ;
else
q = randperm (n) ;
end
C = A(p,q) ;
Im = speye (m) ;
In = speye (n) ;
P = Im (p,:) ;
Q = In (:,q) ;
q2 = find (Q) ;
if (any (q ~= q2'))
error ('!')
end
p2 = find (P') ;
if (any (p ~= p2'))
error ('!')
end
E = P*A*Q ;
if (norm (C-E,1) ~= 0)
error ('!')
end
P = sparse (1:m, p, 1) ;
Q = sparse (q, 1:n, 1) ;
E = P*A*Q ;
if (norm (C-E,1) ~= 0)
error ('2!')
end
end
|