Mercurial > octave-nkf
comparison liboctave/Sparse-perm-op-defs.h @ 12424:afb65a7bc065
update NEWS
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Wed, 09 Feb 2011 16:26:35 -0500 |
parents | fd0a3ac60b0e |
children | e81ddf9cacd5 |
comparison
equal
deleted
inserted
replaced
12423:bbd7b1d4b268 | 12424:afb65a7bc065 |
---|---|
32 const octave_idx_type nr = a.rows (); | 32 const octave_idx_type nr = a.rows (); |
33 const octave_idx_type nc = a.cols (); | 33 const octave_idx_type nc = a.cols (); |
34 const octave_idx_type nent = a.nnz (); | 34 const octave_idx_type nent = a.nnz (); |
35 SM r (nr, nc, nent); | 35 SM r (nr, nc, nent); |
36 | 36 |
37 for (octave_idx_type k = 0; k < nent; ++k) | 37 octave_sort<octave_idx_type> sort; |
38 { | 38 |
39 octave_quit (); | |
40 r.xridx (k) = pcol[a.ridx (k)]; | |
41 r.xdata (k) = a.data (k); | |
42 } | |
43 for (octave_idx_type j = 0; j <= nc; ++j) | 39 for (octave_idx_type j = 0; j <= nc; ++j) |
44 r.xcidx (j) = a.cidx (j); | 40 r.xcidx (j) = a.cidx (j); |
45 | 41 |
46 r.maybe_compress (false); | 42 for (octave_idx_type j = 0; j < nc; j++) |
43 { | |
44 octave_quit (); | |
45 | |
46 OCTAVE_LOCAL_BUFFER (octave_idx_type, sidx, r.xcidx(j+1) - r.xcidx(j)); | |
47 for (octave_idx_type i = r.xcidx(j), ii = 0; i < r.xcidx(j+1); i++) | |
48 { | |
49 sidx[ii++]=i; | |
50 r.xridx (i) = pcol[a.ridx (i)]; | |
51 } | |
52 sort.sort (r.xridx() + r.xcidx(j), sidx, r.xcidx(j+1) - r.xcidx(j)); | |
53 for (octave_idx_type i = r.xcidx(j), ii = 0; i < r.xcidx(j+1); i++) | |
54 r.xdata(i) = a.data (sidx[ii++]); | |
55 } | |
56 | |
47 return r; | 57 return r; |
48 } | 58 } |
49 | 59 |
50 template <typename SM> | 60 template <typename SM> |
51 SM octinternal_do_mul_pm_sm (const PermMatrix& p, const SM& a) | 61 SM octinternal_do_mul_pm_sm (const PermMatrix& p, const SM& a) |
103 r.xdata (k) = a.data (k_src); | 113 r.xdata (k) = a.data (k_src); |
104 } | 114 } |
105 } | 115 } |
106 assert (k_src == nent); | 116 assert (k_src == nent); |
107 | 117 |
108 r.maybe_compress (false); | |
109 return r; | 118 return r; |
110 } | 119 } |
111 | 120 |
112 template <typename SM> | 121 template <typename SM> |
113 SM octinternal_do_mul_sm_colpm (const SM& a, const octave_idx_type *pcol) | 122 SM octinternal_do_mul_sm_colpm (const SM& a, const octave_idx_type *pcol) |
139 r.xdata (k) = a.data (k_src); | 148 r.xdata (k) = a.data (k_src); |
140 } | 149 } |
141 } | 150 } |
142 assert (k == nent); | 151 assert (k == nent); |
143 | 152 |
144 r.maybe_compress (false); | |
145 return r; | 153 return r; |
146 } | 154 } |
147 | 155 |
148 template <typename SM> | 156 template <typename SM> |
149 SM octinternal_do_mul_sm_pm (const SM& a, const PermMatrix& p) | 157 SM octinternal_do_mul_sm_pm (const SM& a, const PermMatrix& p) |