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)