Mercurial > hg > octave-nkf
annotate test/test_diag_perm.m @ 10928:a93efb08dc7f
ChangeLog (scipts) typos.
author | Ben Abbott <bpabbott@mac.com> |
---|---|
date | Tue, 31 Aug 2010 07:41:18 -0400 |
parents | 2e9af3363669 |
children | fd0a3ac60b0e |
rev | line source |
---|---|
8936
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
1 ## Copyright (C) 2009 E. Jason Riedy |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
2 ## |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
3 ## This file is part of Octave. |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
4 ## |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
5 ## Octave is free software; you can redistribute it and/or modify it |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
6 ## under the terms of the GNU General Public License as published by |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
7 ## the Free Software Foundation; either version 3 of the License, or (at |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
8 ## your option) any later version. |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
9 ## |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
10 ## Octave is distributed in the hope that it will be useful, but |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
13 ## General Public License for more details. |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
14 ## |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
15 ## You should have received a copy of the GNU General Public License |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
16 ## along with Octave; see the file COPYING. If not, see |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
17 ## <http://www.gnu.org/licenses/>. |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
18 |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
19 ######################################## |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
20 ## Permutation matrices |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
21 |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
22 ## row permutation |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
23 %!test |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
24 %! n = 5; |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
25 %! A = rand (n); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
26 %! perm = randperm (n); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
27 %! Prow = eye (n) (perm, :); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
28 %! assert (A(perm, :), Prow * A); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
29 %! invperm(perm) = 1:n; |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
30 %! assert (Prow \ A, A(invperm, :)); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
31 %! assert (Prow' * A, A(invperm, :)); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
32 |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
33 ## column permutation |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
34 %!test |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
35 %! n = 7; |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
36 %! A = rand (n); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
37 %! perm = randperm (n); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
38 %! Pcol = eye (n) (:, perm); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
39 %! assert (A(:, perm), A * Pcol); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
40 %! invperm(perm) = 1:n; |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
41 %! assert (A / Pcol, A(:, invperm)); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
42 %! assert (A * Pcol.', A(:, invperm)); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
43 |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
44 ## fall back to a matrix in addition |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
45 %!test |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
46 %! n = 4; |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
47 %! P1 = eye (n) (:, randperm (n)); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
48 %! A = zeros (n) + P1; |
8975 | 49 %! assert (sum (A), full (ones (1, n))); |
50 %! assert (sum (A, 2), full (ones (n, 1))); | |
8936
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
51 |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
52 ## preserve dense matrix structure |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
53 %!test |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
54 %! n = 7; |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
55 %! Pc = eye (n) (:, randperm (n)); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
56 %! Pr = eye (n) (randperm (n), :); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
57 %! assert (typeinfo (rand (n) * Pc), "matrix"); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
58 %! assert (typeinfo (Pr * rand (n)), "matrix"); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
59 |
8968
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
60 ## preserve sparse matrix structure |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
61 %!test |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
62 %! n = 7; |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
63 %! Pc = eye (n) (:, randperm (n)); |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
64 %! Ac = sprand (n-3, n, .5) + I () * sprand (n-3, n, .5); |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
65 %! Pr = eye (n) (randperm (n), :); |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
66 %! Ar = sprand (n, n+2, .5); |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
67 %! assert (typeinfo (Ac * Pc), "sparse complex matrix"); |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
68 %! assert (full (Ac * Pc), full (Ac) * Pc); |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
69 %! assert (full (Ac / Pc), full (Ac) / Pc); |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
70 %! assert (typeinfo (Pr * Ar), "sparse matrix"); |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
71 %! assert (full (Pr * Ar), Pr * full (Ar)); |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
72 %! assert (full (Pr \ Ar), Pr \ full (Ar)); |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
73 |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
74 ## structure rules for 1x1 dense / scalar and 1x1 perm |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
75 %!test |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
76 %! n = 7; |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
77 %! P1 = eye (1) (:, [1]); |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
78 %! A1 = 1; |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
79 %! P = eye (n) (:, randperm (n)); |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
80 %! A = rand (n-3, n, .5); |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
81 %! assert (typeinfo (A * P1), "matrix"); |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
82 %! assert (full (A * P1), full (A) * P1); |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
83 %! assert (typeinfo (P1 * A), "matrix"); |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
84 %! assert (full (P1 * A), P1 * full (A)); |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
85 %! assert (typeinfo (A1 * P), "matrix"); |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
86 %! assert (full (A1 * P), full (A1) * P); |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
87 %! assert (typeinfo (P * A1), "matrix"); |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
88 %! assert (full (P * A1), P * full (A1)); |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
89 |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
90 ## structure rules for 1x1 sparse and 1x1 perm |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
91 %!test |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
92 %! n = 7; |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
93 %! P1 = eye (1) (:, [1]); |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
94 %! A1 = sparse (1, 1, 2); |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
95 %! P = eye (n) (:, randperm (n)); |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
96 %! A = sprand (n-3, n, .5); |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
97 %! assert (typeinfo (A * P1), "sparse matrix"); |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
98 %! assert (full (A * P1), full (A) * P1); |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
99 %! assert (typeinfo (P1 * A), "sparse matrix"); |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
100 %! assert (full (P1 * A), P1 * full (A)); |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
101 %! assert (typeinfo (A1 * P), "sparse matrix"); |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
102 %! assert (full (A1 * P), full (A1) * P); |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
103 %! assert (typeinfo (P * A1), "sparse matrix"); |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
104 %! assert (full (P * A1), P * full (A1)); |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
105 |
8936
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
106 ## permuting a matrix with exceptional values does not introduce new ones. |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
107 %!test |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
108 %! n = 5; |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
109 %! pc = randperm (n); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
110 %! Pc = eye (n) (:, pc); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
111 %! pr = randperm (n); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
112 %! Pr = eye (n) (pr, :); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
113 %! A = rand (n); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
114 %! A(n, n-2) = NaN; |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
115 %! A(3, 1) = Inf; |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
116 %! assert (Pr * A * Pc, A(pr, pc)); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
117 |
8951
5bce1357edd6
Fix conversion from PermMatrix to SparseMatrix.
Jason Riedy <jason@acm.org>
parents:
8936
diff
changeset
|
118 ## conversion to sparse form |
5bce1357edd6
Fix conversion from PermMatrix to SparseMatrix.
Jason Riedy <jason@acm.org>
parents:
8936
diff
changeset
|
119 %!test |
5bce1357edd6
Fix conversion from PermMatrix to SparseMatrix.
Jason Riedy <jason@acm.org>
parents:
8936
diff
changeset
|
120 %! n = 7; |
5bce1357edd6
Fix conversion from PermMatrix to SparseMatrix.
Jason Riedy <jason@acm.org>
parents:
8936
diff
changeset
|
121 %! P = eye (n) (:, randperm (n)); |
5bce1357edd6
Fix conversion from PermMatrix to SparseMatrix.
Jason Riedy <jason@acm.org>
parents:
8936
diff
changeset
|
122 %! sP = sparse (P); |
5bce1357edd6
Fix conversion from PermMatrix to SparseMatrix.
Jason Riedy <jason@acm.org>
parents:
8936
diff
changeset
|
123 %! assert (full (sP), full (P)); |
5bce1357edd6
Fix conversion from PermMatrix to SparseMatrix.
Jason Riedy <jason@acm.org>
parents:
8936
diff
changeset
|
124 %! assert (size (find (sP), 1), n); |
8952
43aec7c168eb
test_diag_per.m: additional assert for sparse conversion test
Jason Riedy <jason@acm.org>
parents:
8951
diff
changeset
|
125 %! [I, J, V] = find (sP); |
43aec7c168eb
test_diag_per.m: additional assert for sparse conversion test
Jason Riedy <jason@acm.org>
parents:
8951
diff
changeset
|
126 %! assert (all (V == 1)); |
8951
5bce1357edd6
Fix conversion from PermMatrix to SparseMatrix.
Jason Riedy <jason@acm.org>
parents:
8936
diff
changeset
|
127 |
8936
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
128 ######################################## |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
129 ## Diagonal matrices |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
130 |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
131 ## square row scaling |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
132 %!test |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
133 %! m = 7; |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
134 %! n = 11; |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
135 %! A = rand (m, n); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
136 %! scalefact = rand (m, 1); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
137 %! Dr = diag (scalefact); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
138 %! assert (Dr * A, repmat (scalefact, 1, n) .* A); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
139 %! assert (Dr \ A, A ./ repmat (scalefact, 1, n)); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
140 %! scalefact(m-1) = Inf; |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
141 %! Dr(m-1, m-1) = 0; |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
142 %! assert (Dr \ A, A ./ repmat (scalefact, 1, n)); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
143 |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
144 ## square column scaling |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
145 %!test |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
146 %! m = 13; |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
147 %! n = 11; |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
148 %! A = rand (m, n); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
149 %! scalefact = rand (1, n); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
150 %! Dc = diag (scalefact); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
151 %! assert (A * Dc, repmat (scalefact, m, 1) .* A); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
152 %! assert (A / Dc, A ./ repmat (scalefact, m, 1)); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
153 %! scalefact(n-1) = Inf; |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
154 %! Dc(n-1, n-1) = 0; |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
155 %! assert (A / Dc, A ./ repmat (scalefact, m, 1)); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
156 |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
157 ## arithmetic |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
158 %!test |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
159 %! m = 9; |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
160 %! n = 7; |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
161 %! mn = min (m, n); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
162 %! d1 = rand (mn, 1) + I () * rand (mn, 1); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
163 %! D1 = diag (d1, m, n); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
164 %! d2 = rand (mn, 1); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
165 %! D2 = diag (d2, m, n); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
166 %! D1D2 = D1 + D2; |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
167 %! assert (typeinfo (D1D2), "complex diagonal matrix"); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
168 %! assert (diag (D1D2), d1 + d2); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
169 %! D1D2 = D2.' * D1; |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
170 %! assert (typeinfo (D1D2), "complex diagonal matrix"); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
171 %! assert (diag (D1D2), d1 .* d2); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
172 |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
173 ## slicing |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
174 %!test |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
175 %! m = 13; |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
176 %! n = 6; |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
177 %! mn = min (m, n); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
178 %! d = rand (mn, 1); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
179 %! D = diag (d, m, n); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
180 %! Dslice = D (1:(m-3), 1:(n-2)); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
181 %! assert (typeinfo (Dslice), "diagonal matrix"); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
182 |
8964
f4f4d65faaa0
Implement sparse * diagonal and diagonal * sparse operations, double-prec only.
Jason Riedy <jason@acm.org>
parents:
8952
diff
changeset
|
183 ## preserve dense matrix structure when scaling |
8936
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
184 %!assert (typeinfo (rand (8) * (3 * eye (8))), "matrix"); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
185 %!assert (typeinfo ((3 * eye (8)) * rand (8)), "matrix"); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
186 |
8964
f4f4d65faaa0
Implement sparse * diagonal and diagonal * sparse operations, double-prec only.
Jason Riedy <jason@acm.org>
parents:
8952
diff
changeset
|
187 ## preserve sparse matrix structure when scaling |
f4f4d65faaa0
Implement sparse * diagonal and diagonal * sparse operations, double-prec only.
Jason Riedy <jason@acm.org>
parents:
8952
diff
changeset
|
188 %!assert (typeinfo (sprand (8, 8, .5) * (3 * eye (8))), "sparse matrix"); |
f4f4d65faaa0
Implement sparse * diagonal and diagonal * sparse operations, double-prec only.
Jason Riedy <jason@acm.org>
parents:
8952
diff
changeset
|
189 %!assert (typeinfo (sprand (8, 8, .5) * (3 * eye (8))'), "sparse matrix"); |
f4f4d65faaa0
Implement sparse * diagonal and diagonal * sparse operations, double-prec only.
Jason Riedy <jason@acm.org>
parents:
8952
diff
changeset
|
190 %!assert (typeinfo (((3 + 2 * I ()) * eye (8)) * sprand (8, 8, .5)), "sparse complex matrix"); |
f4f4d65faaa0
Implement sparse * diagonal and diagonal * sparse operations, double-prec only.
Jason Riedy <jason@acm.org>
parents:
8952
diff
changeset
|
191 %!assert (typeinfo (((3 + 2 * I ()) * eye (8))' * sprand (8, 8, .5)), "sparse complex matrix"); |
f4f4d65faaa0
Implement sparse * diagonal and diagonal * sparse operations, double-prec only.
Jason Riedy <jason@acm.org>
parents:
8952
diff
changeset
|
192 %!assert (typeinfo (sprand (8, 8, .5) * ((3 + 2 * I ()) * eye (8)).'), "sparse complex matrix"); |
f4f4d65faaa0
Implement sparse * diagonal and diagonal * sparse operations, double-prec only.
Jason Riedy <jason@acm.org>
parents:
8952
diff
changeset
|
193 |
8936
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
194 ## scaling a matrix with exceptional values does not introduce new ones. |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
195 %!test |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
196 %! n = 6; |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
197 %! dr = rand (n, 1); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
198 %! Dr = diag (dr); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
199 %! dc = rand (1, n); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
200 %! Dc = diag (dc); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
201 %! A = rand (n); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
202 %! A(n, n-2) = NaN; |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
203 %! A(4, 1) = Inf; |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
204 %! assert (Dr * A * Dc, A .* kron (dr, dc), eps); |
42e24f4ebc8c
add tests for diag & perm matrices.
Jason Riedy <jason@acm.org>
parents:
diff
changeset
|
205 |
8965
42aff15e059b
Implement diag \ sparse and sparse / diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
206 ## sparse inverse row scaling with a zero factor |
42aff15e059b
Implement diag \ sparse and sparse / diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
207 %!test |
42aff15e059b
Implement diag \ sparse and sparse / diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
208 %! n = 8; |
42aff15e059b
Implement diag \ sparse and sparse / diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
209 %! A = sprand (n, n, .5); |
42aff15e059b
Implement diag \ sparse and sparse / diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
210 %! scalefact = rand (n, 1); |
42aff15e059b
Implement diag \ sparse and sparse / diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
211 %! Dr = diag (scalefact); |
42aff15e059b
Implement diag \ sparse and sparse / diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
212 %! scalefact(n-1) = Inf; |
42aff15e059b
Implement diag \ sparse and sparse / diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
213 %! Dr(n-1, n-1) = 0; |
42aff15e059b
Implement diag \ sparse and sparse / diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
214 %! assert (full (Dr \ A), full (A) ./ repmat (scalefact, 1, n)); |
42aff15e059b
Implement diag \ sparse and sparse / diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
215 |
42aff15e059b
Implement diag \ sparse and sparse / diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
216 ## narrow sparse inverse row scaling |
42aff15e059b
Implement diag \ sparse and sparse / diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
217 %!test |
42aff15e059b
Implement diag \ sparse and sparse / diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
218 %! n = 8; |
42aff15e059b
Implement diag \ sparse and sparse / diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
219 %! A = sprand (n, n, .5); |
42aff15e059b
Implement diag \ sparse and sparse / diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
220 %! scalefact = rand (n-2, 1); |
42aff15e059b
Implement diag \ sparse and sparse / diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
221 %! Dr = diag (scalefact, n, n-2); |
42aff15e059b
Implement diag \ sparse and sparse / diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
222 %! assert (full (Dr \ A), Dr \ full(A)) |
42aff15e059b
Implement diag \ sparse and sparse / diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
223 |
42aff15e059b
Implement diag \ sparse and sparse / diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
224 ## sparse inverse column scaling with a zero factor |
42aff15e059b
Implement diag \ sparse and sparse / diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
225 %!test |
42aff15e059b
Implement diag \ sparse and sparse / diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
226 %! n = 11; |
42aff15e059b
Implement diag \ sparse and sparse / diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
227 %! A = sprand (n, n, .5); |
42aff15e059b
Implement diag \ sparse and sparse / diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
228 %! scalefact = rand (1, n); |
42aff15e059b
Implement diag \ sparse and sparse / diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
229 %! Dc = diag (scalefact); |
42aff15e059b
Implement diag \ sparse and sparse / diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
230 %! scalefact(n-1) = Inf; |
42aff15e059b
Implement diag \ sparse and sparse / diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
231 %! Dc(n-1, n-1) = 0; |
42aff15e059b
Implement diag \ sparse and sparse / diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
232 %! assert (full (A / Dc), full(A) / Dc) |
42aff15e059b
Implement diag \ sparse and sparse / diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
233 |
42aff15e059b
Implement diag \ sparse and sparse / diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
234 ## short sparse inverse column scaling |
42aff15e059b
Implement diag \ sparse and sparse / diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
235 %!test |
42aff15e059b
Implement diag \ sparse and sparse / diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
236 %! n = 7; |
42aff15e059b
Implement diag \ sparse and sparse / diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
237 %! A = sprand (n, n, .5); |
42aff15e059b
Implement diag \ sparse and sparse / diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
238 %! scalefact = rand (1, n-2) + I () * rand(1, n-2); |
42aff15e059b
Implement diag \ sparse and sparse / diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
239 %! Dc = diag (scalefact, n-2, n); |
42aff15e059b
Implement diag \ sparse and sparse / diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
240 %! assert (full (A / Dc), full(A) / Dc) |
8966
1bba53c0a38d
Implement diag + sparse, diag - sparse, sparse + diag, sparse - diag.
Jason Riedy <jason@acm.org>
parents:
8965
diff
changeset
|
241 |
1bba53c0a38d
Implement diag + sparse, diag - sparse, sparse + diag, sparse - diag.
Jason Riedy <jason@acm.org>
parents:
8965
diff
changeset
|
242 ## adding sparse and diagonal stays sparse |
1bba53c0a38d
Implement diag + sparse, diag - sparse, sparse + diag, sparse - diag.
Jason Riedy <jason@acm.org>
parents:
8965
diff
changeset
|
243 %!test |
1bba53c0a38d
Implement diag + sparse, diag - sparse, sparse + diag, sparse - diag.
Jason Riedy <jason@acm.org>
parents:
8965
diff
changeset
|
244 %! n = 9; |
1bba53c0a38d
Implement diag + sparse, diag - sparse, sparse + diag, sparse - diag.
Jason Riedy <jason@acm.org>
parents:
8965
diff
changeset
|
245 %! A = sprand (n, n, .5); |
1bba53c0a38d
Implement diag + sparse, diag - sparse, sparse + diag, sparse - diag.
Jason Riedy <jason@acm.org>
parents:
8965
diff
changeset
|
246 %! D = 2 * eye (n); |
1bba53c0a38d
Implement diag + sparse, diag - sparse, sparse + diag, sparse - diag.
Jason Riedy <jason@acm.org>
parents:
8965
diff
changeset
|
247 %! assert (typeinfo (A + D), "sparse matrix") |
1bba53c0a38d
Implement diag + sparse, diag - sparse, sparse + diag, sparse - diag.
Jason Riedy <jason@acm.org>
parents:
8965
diff
changeset
|
248 %! assert (typeinfo (A - D), "sparse matrix") |
1bba53c0a38d
Implement diag + sparse, diag - sparse, sparse + diag, sparse - diag.
Jason Riedy <jason@acm.org>
parents:
8965
diff
changeset
|
249 %! D = D * I () + D; |
1bba53c0a38d
Implement diag + sparse, diag - sparse, sparse + diag, sparse - diag.
Jason Riedy <jason@acm.org>
parents:
8965
diff
changeset
|
250 %! assert (typeinfo (A - D), "sparse complex matrix") |
1bba53c0a38d
Implement diag + sparse, diag - sparse, sparse + diag, sparse - diag.
Jason Riedy <jason@acm.org>
parents:
8965
diff
changeset
|
251 %! A = A * I () + A; |
1bba53c0a38d
Implement diag + sparse, diag - sparse, sparse + diag, sparse - diag.
Jason Riedy <jason@acm.org>
parents:
8965
diff
changeset
|
252 %! assert (typeinfo (D - A), "sparse complex matrix") |
1bba53c0a38d
Implement diag + sparse, diag - sparse, sparse + diag, sparse - diag.
Jason Riedy <jason@acm.org>
parents:
8965
diff
changeset
|
253 |
1bba53c0a38d
Implement diag + sparse, diag - sparse, sparse + diag, sparse - diag.
Jason Riedy <jason@acm.org>
parents:
8965
diff
changeset
|
254 ## adding sparse and diagonal stays sparse |
1bba53c0a38d
Implement diag + sparse, diag - sparse, sparse + diag, sparse - diag.
Jason Riedy <jason@acm.org>
parents:
8965
diff
changeset
|
255 %!test |
1bba53c0a38d
Implement diag + sparse, diag - sparse, sparse + diag, sparse - diag.
Jason Riedy <jason@acm.org>
parents:
8965
diff
changeset
|
256 %! n = 9; |
1bba53c0a38d
Implement diag + sparse, diag - sparse, sparse + diag, sparse - diag.
Jason Riedy <jason@acm.org>
parents:
8965
diff
changeset
|
257 %! A = sprand (n, n, .5); |
1bba53c0a38d
Implement diag + sparse, diag - sparse, sparse + diag, sparse - diag.
Jason Riedy <jason@acm.org>
parents:
8965
diff
changeset
|
258 %! D = 2 * eye (n); |
1bba53c0a38d
Implement diag + sparse, diag - sparse, sparse + diag, sparse - diag.
Jason Riedy <jason@acm.org>
parents:
8965
diff
changeset
|
259 %! assert (full (A + D), full (A) + D) |
1bba53c0a38d
Implement diag + sparse, diag - sparse, sparse + diag, sparse - diag.
Jason Riedy <jason@acm.org>
parents:
8965
diff
changeset
|
260 %! assert (full (A - D), full (A) - D) |
1bba53c0a38d
Implement diag + sparse, diag - sparse, sparse + diag, sparse - diag.
Jason Riedy <jason@acm.org>
parents:
8965
diff
changeset
|
261 %! D = D * I () + D; |
1bba53c0a38d
Implement diag + sparse, diag - sparse, sparse + diag, sparse - diag.
Jason Riedy <jason@acm.org>
parents:
8965
diff
changeset
|
262 %! assert (full (D + A), D + full (A)) |
1bba53c0a38d
Implement diag + sparse, diag - sparse, sparse + diag, sparse - diag.
Jason Riedy <jason@acm.org>
parents:
8965
diff
changeset
|
263 %! A = A * I () + A; |
1bba53c0a38d
Implement diag + sparse, diag - sparse, sparse + diag, sparse - diag.
Jason Riedy <jason@acm.org>
parents:
8965
diff
changeset
|
264 %! A(6, 4) = nan (); |
1bba53c0a38d
Implement diag + sparse, diag - sparse, sparse + diag, sparse - diag.
Jason Riedy <jason@acm.org>
parents:
8965
diff
changeset
|
265 %! assert (full (D - A), D - full (A)) |