1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2020 - Samuel GOUGEON
5 // This file is distributed under the same license as the Scilab package.
6 // =============================================================================
8 // <-- CLI SHELL MODE -->
9 // <-- NO CHECK REF -->
11 // <-- Short Description -->
12 // Unitary tests for intersect() with sparse boolean or numeric matrices
18 [esp, espb] = (sparse([]), sparse(F)); espb(1) = []
21 assert_checkequal(intersect(T, espb), []);
22 [v, ka, kb] = intersect(T, espb);
23 assert_checkequal(list(v, ka, kb), list([], [], []));
25 assert_checkequal(intersect(espb, F), []);
26 [v, ka, kb] = intersect(espb, F);
27 assert_checkequal(list(v, ka, kb), list([], [], []));
38 [spA, spB, spref] = (sparse(A), sparse(B), sparse(ref));
39 assert_checkequal(intersect(spA, B), sparse([F T]));
40 assert_checkequal(intersect(A, spB), sparse([F T]));
41 assert_checkequal(intersect(spA, spB), sparse([F T]));
43 LA = list(spA, A, spA);
44 LB = list(B, spB, spB);
46 assert_checkequal(intersect(LA(i), LB(i), "c"), spref);
47 [v,ka,kb] = intersect(LA(i), LB(i), "c");
48 assert_checkequal(v, spref);
49 assert_checkequal(ka, [6 1 3]);
50 assert_checkequal(kb, [1 5 4]);
51 assert_checkequal(sparse(LA(i)(:,ka)), v);
52 assert_checkequal(sparse(LB(i)(:,kb)), v);
54 assert_checkequal(intersect(LA(i)', LB(i)', "r"), spref');
55 [v,ka,kb] = intersect(LA(i)', LB(i)', "r");
56 assert_checkequal(v, spref');
57 assert_checkequal(ka, [6 1 3]);
58 assert_checkequal(kb, [1 5 4]);
59 assert_checkequal(sparse(LA(i)(:,ka))', v);
60 assert_checkequal(sparse(LB(i)(:,kb))', v);
66 A = sparse([-3 5 %nan 0 1e20 -%inf 123 1000]);
67 B = sparse([1 %nan -3 123 4530 0 -%inf ]);
68 assert_checkequal(intersect(A,B), sparse([-%inf -3 0 123]));
69 [v, ka, kb] = intersect(A,B);
70 assert_checkequal(v, sparse([-%inf -3 0 123]));
71 assert_checkequal([ka ; kb], [6 1 4 7 ; 7 3 6 4]);
73 A = sparse([1 0 0 0 0 1 2 0 2 0
75 2 0 0 0 0 1 0 0 0 0 ]);
76 B = sparse([2 1 1 0 1 0 0 2 2 0
78 0 2 0 0 1 1 1 2 0 0 ]);
85 assert_checkequal(intersect(A,B,"c"), Ref);
86 [v, ka, kb] = intersect(A,B,"c");
87 assert_checkequal(v, Ref);
88 assert_checkequal(ka, kaRef);
89 assert_checkequal(kb, kbRef);
91 assert_checkequal(intersect(A',B',"r"), Ref');
92 [v, ka, kb] = intersect(A',B',"r");
93 assert_checkequal(v, Ref');
94 assert_checkequal(ka, kaRef);
95 assert_checkequal(kb, kbRef);
101 r = [-3 5 %nan 0 1e20 %inf 123 0];
102 i = [1 %nan -3 123 4530 0 -%inf 1];
103 A = sparse(complex(r,i))
104 r = [-3 0 1e20 %nan 0 %inf 123 ];
105 i = [0 1 1 -3 123 0 -%inf];
106 B = sparse(complex(r,i))
107 Ref = sparse(complex([0 0 123 %inf], [1 123 -%inf 0]));
108 assert_checkequal(intersect(A,B), Ref);
112 r = [0. 1. 0. 0. 0. 1. 0. 1. 0. 0.
113 1. 0. 1. 1. 1. 0. 1. 0. 1. 0. ];
114 i = [1. 0. 0. 1. 1. 0. 1. 0. 0. 0.
115 1. 1. 0. 0. 1. 0. 0. 0. 1. 0. ];
116 A = sparse(complex(r,i));
118 r = [0. 1. 1. 1. 0. 1. 0. 0. 0. 0.
119 1. 1. 1. 1. 1. 0. 0. 1. 0. 1. ];
120 i = [0. 0. 1. 1. 1. 1. 1. 0. 1. 1.
121 0. 0. 0. 0. 1. 0. 0. 1. 1. 1. ];
122 B = sparse(complex(r,i));
124 Ref = sparse([0, 0 , %i ;
129 assert_checkequal(intersect(A,B,"c"), Ref);
130 [v, ka, kb] = intersect(A,B,"c");
131 assert_checkequal(v, Ref);
132 assert_checkequal(ka, kaRef);
133 assert_checkequal(kb, kbRef);
135 assert_checkequal(intersect(A',B',"r"), Ref');
136 [v, ka, kb] = intersect(A',B',"r");
137 assert_checkequal(v, Ref');
138 assert_checkequal(ka, kaRef);
139 assert_checkequal(kb, kbRef);