Mercurial > hg > octave-lyh
annotate liboctave/CSparse.h @ 9790:a5035bc7fbfb
rewrite dispatch part & slightly improve min,max,cummin,cummax
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Mon, 09 Nov 2009 13:09:49 +0100 |
parents | 91d53dc37f79 |
children | f80c566bc751 |
rev | line source |
---|---|
5164 | 1 /* |
2 | |
8920 | 3 Copyright (C) 2004, 2005, 2006, 2007, 2008 David Bateman |
7016 | 4 Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Andy Adler |
5 | |
6 This file is part of Octave. | |
5164 | 7 |
8 Octave is free software; you can redistribute it and/or modify it | |
9 under the terms of the GNU General Public License as published by the | |
7016 | 10 Free Software Foundation; either version 3 of the License, or (at your |
11 option) any later version. | |
5164 | 12 |
13 Octave is distributed in the hope that it will be useful, but WITHOUT | |
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
16 for more details. | |
17 | |
18 You should have received a copy of the GNU General Public License | |
7016 | 19 along with Octave; see the file COPYING. If not, see |
20 <http://www.gnu.org/licenses/>. | |
5164 | 21 |
22 */ | |
23 | |
24 #if !defined (octave_CSparse_h) | |
25 #define octave_CSparse_h 1 | |
26 | |
27 #include "dMatrix.h" | |
28 #include "dNDArray.h" | |
29 #include "CNDArray.h" | |
30 #include "dColVector.h" | |
31 #include "CColVector.h" | |
32 #include "oct-cmplx.h" | |
33 | |
8335 | 34 #include "DET.h" |
5164 | 35 #include "MSparse.h" |
36 #include "MSparse-defs.h" | |
37 #include "Sparse-op-defs.h" | |
5785 | 38 #include "MatrixType.h" |
5164 | 39 |
8968
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
40 class PermMatrix; |
8964
f4f4d65faaa0
Implement sparse * diagonal and diagonal * sparse operations, double-prec only.
Jason Riedy <jason@acm.org>
parents:
8920
diff
changeset
|
41 class DiagMatrix; |
f4f4d65faaa0
Implement sparse * diagonal and diagonal * sparse operations, double-prec only.
Jason Riedy <jason@acm.org>
parents:
8920
diff
changeset
|
42 class ComplexDiagMatrix; |
5164 | 43 class SparseMatrix; |
44 class SparseBoolMatrix; | |
45 | |
46 class | |
6108 | 47 OCTAVE_API |
5164 | 48 SparseComplexMatrix : public MSparse<Complex> |
49 { | |
50 public: | |
51 | |
52 typedef void (*solve_singularity_handler) (double rcond); | |
53 | |
54 SparseComplexMatrix (void) : MSparse<Complex> () { } | |
55 | |
5275 | 56 SparseComplexMatrix (octave_idx_type r, octave_idx_type c) : MSparse<Complex> (r, c) { } |
5164 | 57 |
6823 | 58 SparseComplexMatrix (const dim_vector& dv, octave_idx_type nz = 0) : |
59 MSparse<Complex> (dv, nz) { } | |
60 | |
5275 | 61 explicit SparseComplexMatrix (octave_idx_type r, octave_idx_type c, Complex val) |
5164 | 62 : MSparse<Complex> (r, c, val) { } |
63 | |
5275 | 64 SparseComplexMatrix (octave_idx_type r, octave_idx_type c, double val) |
5164 | 65 : MSparse<Complex> (r, c, Complex (val)) { } |
66 | |
67 SparseComplexMatrix (const SparseComplexMatrix& a) | |
68 : MSparse<Complex> (a) { } | |
69 | |
70 SparseComplexMatrix (const SparseComplexMatrix& a, const dim_vector& dv) | |
71 : MSparse<Complex> (a, dv) { } | |
72 | |
73 SparseComplexMatrix (const MSparse<Complex>& a) : MSparse<Complex> (a) { } | |
74 | |
75 explicit SparseComplexMatrix (const ComplexMatrix& a) | |
76 : MSparse<Complex> (a) { } | |
77 | |
78 explicit SparseComplexMatrix (const ComplexNDArray& a) | |
79 : MSparse<Complex> (a) { } | |
80 | |
5275 | 81 explicit SparseComplexMatrix (const Array<Complex> a, const Array<octave_idx_type>& r, |
82 const Array<octave_idx_type>& c, octave_idx_type nr = -1, | |
83 octave_idx_type nc = -1, bool sum_terms = true) | |
5164 | 84 : MSparse<Complex> (a, r, c, nr, nc, sum_terms) { } |
85 | |
86 explicit SparseComplexMatrix (const Array<Complex> a, | |
87 const Array<double>& r, | |
5275 | 88 const Array<double>& c, octave_idx_type nr = -1, |
89 octave_idx_type nc = -1, bool sum_terms = true) | |
5164 | 90 : MSparse<Complex> (a, r, c, nr, nc, sum_terms) { } |
91 | |
92 explicit SparseComplexMatrix (const SparseMatrix& a); | |
93 | |
94 explicit SparseComplexMatrix (const SparseBoolMatrix& a); | |
95 | |
8366
8b1a2555c4e2
implement diagonal matrix objects
Jaroslav Hajek <highegg@gmail.com>
parents:
8335
diff
changeset
|
96 explicit SparseComplexMatrix (const ComplexDiagMatrix& a); |
8b1a2555c4e2
implement diagonal matrix objects
Jaroslav Hajek <highegg@gmail.com>
parents:
8335
diff
changeset
|
97 |
5275 | 98 SparseComplexMatrix (octave_idx_type r, octave_idx_type c, octave_idx_type num_nz) |
5164 | 99 : MSparse<Complex> (r, c, num_nz) { } |
100 | |
101 SparseComplexMatrix& operator = (const SparseComplexMatrix& a) | |
102 { | |
103 MSparse<Complex>::operator = (a); | |
104 return *this; | |
105 } | |
106 | |
107 bool operator == (const SparseComplexMatrix& a) const; | |
108 bool operator != (const SparseComplexMatrix& a) const; | |
109 | |
110 bool is_hermitian (void) const; | |
111 | |
9790
a5035bc7fbfb
rewrite dispatch part & slightly improve min,max,cummin,cummax
Jaroslav Hajek <highegg@gmail.com>
parents:
8968
diff
changeset
|
112 SparseComplexMatrix max (int dim = -1) const; |
a5035bc7fbfb
rewrite dispatch part & slightly improve min,max,cummin,cummax
Jaroslav Hajek <highegg@gmail.com>
parents:
8968
diff
changeset
|
113 SparseComplexMatrix max (Array<octave_idx_type>& index, int dim = -1) const; |
a5035bc7fbfb
rewrite dispatch part & slightly improve min,max,cummin,cummax
Jaroslav Hajek <highegg@gmail.com>
parents:
8968
diff
changeset
|
114 SparseComplexMatrix min (int dim = -1) const; |
a5035bc7fbfb
rewrite dispatch part & slightly improve min,max,cummin,cummax
Jaroslav Hajek <highegg@gmail.com>
parents:
8968
diff
changeset
|
115 SparseComplexMatrix min (Array<octave_idx_type>& index, int dim = -1) const; |
5164 | 116 |
5275 | 117 SparseComplexMatrix& insert (const SparseComplexMatrix& a, octave_idx_type r, octave_idx_type c); |
118 SparseComplexMatrix& insert (const SparseMatrix& a, octave_idx_type r, octave_idx_type c); | |
6823 | 119 SparseComplexMatrix& insert (const SparseComplexMatrix& a, const Array<octave_idx_type>& indx); |
120 SparseComplexMatrix& insert (const SparseMatrix& a, const Array<octave_idx_type>& indx); | |
5164 | 121 |
122 SparseComplexMatrix concat (const SparseComplexMatrix& rb, | |
5275 | 123 const Array<octave_idx_type>& ra_idx); |
5164 | 124 SparseComplexMatrix concat (const SparseMatrix& rb, |
5275 | 125 const Array<octave_idx_type>& ra_idx); |
5164 | 126 |
127 ComplexMatrix matrix_value (void) const; | |
128 | |
129 SparseComplexMatrix hermitian (void) const; // complex conjugate transpose | |
130 SparseComplexMatrix transpose (void) const | |
131 { return MSparse<Complex>::transpose (); } | |
132 | |
133 friend SparseComplexMatrix conj (const SparseComplexMatrix& a); | |
134 | |
8303
b11c31849b44
improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
7922
diff
changeset
|
135 // extract row or column i. |
b11c31849b44
improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
7922
diff
changeset
|
136 |
b11c31849b44
improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
7922
diff
changeset
|
137 ComplexRowVector row (octave_idx_type i) const; |
b11c31849b44
improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
7922
diff
changeset
|
138 |
b11c31849b44
improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
7922
diff
changeset
|
139 ComplexColumnVector column (octave_idx_type i) const; |
b11c31849b44
improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
7922
diff
changeset
|
140 |
5506 | 141 private: |
5785 | 142 SparseComplexMatrix dinverse (MatrixType &mattyp, octave_idx_type& info, |
5506 | 143 double& rcond, const bool force = false, |
144 const bool calccond = true) const; | |
145 | |
5785 | 146 SparseComplexMatrix tinverse (MatrixType &mattyp, octave_idx_type& info, |
5506 | 147 double& rcond, const bool force = false, |
148 const bool calccond = true) const; | |
149 | |
150 public: | |
5164 | 151 SparseComplexMatrix inverse (void) const; |
5785 | 152 SparseComplexMatrix inverse (MatrixType& mattype) const; |
153 SparseComplexMatrix inverse (MatrixType& mattype, | |
5506 | 154 octave_idx_type& info) const; |
5785 | 155 SparseComplexMatrix inverse (MatrixType& mattype, octave_idx_type& info, |
5506 | 156 double& rcond, int force = 0, |
5164 | 157 int calc_cond = 1) const; |
158 | |
159 ComplexDET determinant (void) const; | |
5275 | 160 ComplexDET determinant (octave_idx_type& info) const; |
161 ComplexDET determinant (octave_idx_type& info, double& rcond, | |
5164 | 162 int calc_cond = 1) const; |
163 | |
164 private: | |
165 // Diagonal matrix solvers | |
5785 | 166 ComplexMatrix dsolve (MatrixType &typ, const Matrix& b, octave_idx_type& info, |
5681 | 167 double& rcond, solve_singularity_handler sing_handler, |
168 bool calc_cond = false) const; | |
5164 | 169 |
5785 | 170 ComplexMatrix dsolve (MatrixType &typ, const ComplexMatrix& b, |
5681 | 171 octave_idx_type& info, double& rcond, |
172 solve_singularity_handler sing_handler, | |
173 bool calc_cond = false) const; | |
5164 | 174 |
5785 | 175 SparseComplexMatrix dsolve (MatrixType &typ, const SparseMatrix& b, |
5681 | 176 octave_idx_type& info, double& rcond, |
177 solve_singularity_handler sing_handler, | |
178 bool calc_cond = false) const; | |
5164 | 179 |
5785 | 180 SparseComplexMatrix dsolve (MatrixType &typ, const SparseComplexMatrix& b, |
5275 | 181 octave_idx_type& info, double& rcond, |
5681 | 182 solve_singularity_handler sing_handler, |
183 bool calc_cond = false) const; | |
5164 | 184 |
185 // Upper triangular matrix solvers | |
5785 | 186 ComplexMatrix utsolve (MatrixType &typ, const Matrix& b, octave_idx_type& info, |
5681 | 187 double& rcond, solve_singularity_handler sing_handler, |
188 bool calc_cond = false) const; | |
5164 | 189 |
5785 | 190 ComplexMatrix utsolve (MatrixType &typ, const ComplexMatrix& b, |
5681 | 191 octave_idx_type& info, double& rcond, |
192 solve_singularity_handler sing_handler, | |
193 bool calc_cond = false) const; | |
5164 | 194 |
5785 | 195 SparseComplexMatrix utsolve (MatrixType &typ, const SparseMatrix& b, |
5681 | 196 octave_idx_type& info, double& rcond, |
197 solve_singularity_handler sing_handler, | |
198 bool calc_cond = false) const; | |
5164 | 199 |
5785 | 200 SparseComplexMatrix utsolve (MatrixType &typ, const SparseComplexMatrix& b, |
5275 | 201 octave_idx_type& info, double& rcond, |
5681 | 202 solve_singularity_handler sing_handler, |
203 bool calc_cond = false) const; | |
5164 | 204 |
205 // Lower triangular matrix solvers | |
5785 | 206 ComplexMatrix ltsolve (MatrixType &typ, const Matrix& b, |
5681 | 207 octave_idx_type& info, double& rcond, |
208 solve_singularity_handler sing_handler, | |
209 bool calc_cond = false) const; | |
5164 | 210 |
5785 | 211 ComplexMatrix ltsolve (MatrixType &typ, const ComplexMatrix& b, |
5681 | 212 octave_idx_type& info, double& rcond, |
213 solve_singularity_handler sing_handler, | |
214 bool calc_cond = false) const; | |
5164 | 215 |
5785 | 216 SparseComplexMatrix ltsolve (MatrixType &typ, const SparseMatrix& b, |
5681 | 217 octave_idx_type& info, double& rcond, |
218 solve_singularity_handler sing_handler, | |
219 bool calc_cond = false) const; | |
5164 | 220 |
5785 | 221 SparseComplexMatrix ltsolve (MatrixType &typ, const SparseComplexMatrix& b, |
5275 | 222 octave_idx_type& info, double& rcond, |
5681 | 223 solve_singularity_handler sing_handler, |
224 bool calc_cond = false) const; | |
5164 | 225 |
226 // Tridiagonal matrix solvers | |
5785 | 227 ComplexMatrix trisolve (MatrixType &typ, const Matrix& b, |
5681 | 228 octave_idx_type& info, double& rcond, |
229 solve_singularity_handler sing_handler, | |
230 bool calc_cond = false) const; | |
5164 | 231 |
5785 | 232 ComplexMatrix trisolve (MatrixType &typ, const ComplexMatrix& b, |
5681 | 233 octave_idx_type& info, double& rcond, |
234 solve_singularity_handler sing_handler, | |
235 bool calc_cond = false) const; | |
5164 | 236 |
5785 | 237 SparseComplexMatrix trisolve (MatrixType &typ, const SparseMatrix& b, |
5681 | 238 octave_idx_type& info, double& rcond, |
239 solve_singularity_handler sing_handler, | |
240 bool calc_cond = false) const; | |
5164 | 241 |
5785 | 242 SparseComplexMatrix trisolve (MatrixType &typ, const SparseComplexMatrix& b, |
5275 | 243 octave_idx_type& info, double& rcond, |
5681 | 244 solve_singularity_handler sing_handler, |
245 bool calc_cond = false) const; | |
5164 | 246 |
247 // Banded matrix solvers (umfpack/cholesky) | |
5785 | 248 ComplexMatrix bsolve (MatrixType &typ, const Matrix& b, octave_idx_type& info, |
5681 | 249 double& rcond, solve_singularity_handler sing_handler, |
250 bool calc_cond = false) const; | |
5164 | 251 |
5785 | 252 ComplexMatrix bsolve (MatrixType &typ, const ComplexMatrix& b, |
5681 | 253 octave_idx_type& info, double& rcond, |
254 solve_singularity_handler sing_handler, | |
255 bool calc_cond = false) const; | |
5164 | 256 |
5785 | 257 SparseComplexMatrix bsolve (MatrixType &typ, const SparseMatrix& b, |
5681 | 258 octave_idx_type& info, double& rcond, |
259 solve_singularity_handler sing_handler, | |
260 bool calc_cond = false) const; | |
5164 | 261 |
5785 | 262 SparseComplexMatrix bsolve (MatrixType &typ, const SparseComplexMatrix& b, |
5275 | 263 octave_idx_type& info, double& rcond, |
5681 | 264 solve_singularity_handler sing_handler, |
265 bool calc_cond = false) const; | |
5164 | 266 |
267 // Full matrix solvers (umfpack/cholesky) | |
5681 | 268 void * factorize (octave_idx_type& err, double &rcond, Matrix &Control, |
269 Matrix &Info, solve_singularity_handler sing_handler, | |
270 bool calc_cond) const; | |
5164 | 271 |
5785 | 272 ComplexMatrix fsolve (MatrixType &typ, const Matrix& b, octave_idx_type& info, |
5681 | 273 double& rcond, solve_singularity_handler sing_handler, |
274 bool calc_cond = false) const; | |
5164 | 275 |
5785 | 276 ComplexMatrix fsolve (MatrixType &typ, const ComplexMatrix& b, |
5681 | 277 octave_idx_type& info, double& rcond, |
278 solve_singularity_handler sing_handler, | |
279 bool calc_cond = false) const; | |
5164 | 280 |
5785 | 281 SparseComplexMatrix fsolve (MatrixType &typ, const SparseMatrix& b, |
5681 | 282 octave_idx_type& info, double& rcond, |
283 solve_singularity_handler sing_handler, | |
284 bool calc_cond = false) const; | |
5164 | 285 |
5785 | 286 SparseComplexMatrix fsolve (MatrixType &typ, const SparseComplexMatrix& b, |
5275 | 287 octave_idx_type& info, double& rcond, |
5681 | 288 solve_singularity_handler sing_handler, |
289 bool calc_cond = false) const; | |
5164 | 290 |
291 public: | |
292 // Generic interface to solver with no probing of type | |
5785 | 293 ComplexMatrix solve (MatrixType &typ, const Matrix& b) const; |
294 ComplexMatrix solve (MatrixType &typ, const Matrix& b, | |
5697 | 295 octave_idx_type& info) const; |
5785 | 296 ComplexMatrix solve (MatrixType &typ, const Matrix& b, octave_idx_type& info, |
5697 | 297 double& rcond) const; |
5785 | 298 ComplexMatrix solve (MatrixType &typ, const Matrix& b, octave_idx_type& info, |
5697 | 299 double& rcond, solve_singularity_handler sing_handler, |
300 bool singular_fallback = true) const; | |
5164 | 301 |
5785 | 302 ComplexMatrix solve (MatrixType &typ, const ComplexMatrix& b) const; |
303 ComplexMatrix solve (MatrixType &typ, const ComplexMatrix& b, | |
5275 | 304 octave_idx_type& info) const; |
5785 | 305 ComplexMatrix solve (MatrixType &typ, const ComplexMatrix& b, |
5697 | 306 octave_idx_type& info, double& rcond) const; |
5785 | 307 ComplexMatrix solve (MatrixType &typ, const ComplexMatrix& b, |
5697 | 308 octave_idx_type& info, double& rcond, |
309 solve_singularity_handler sing_handler, | |
310 bool singular_fallback = true) const; | |
5164 | 311 |
5785 | 312 SparseComplexMatrix solve (MatrixType &typ, const SparseMatrix& b) const; |
313 SparseComplexMatrix solve (MatrixType &typ, const SparseMatrix& b, | |
5697 | 314 octave_idx_type& info) const; |
5785 | 315 SparseComplexMatrix solve (MatrixType &typ, const SparseMatrix& b, |
5697 | 316 octave_idx_type& info, double& rcond) const; |
5785 | 317 SparseComplexMatrix solve (MatrixType &typ, const SparseMatrix& b, |
5697 | 318 octave_idx_type& info, double& rcond, |
319 solve_singularity_handler sing_handler, | |
320 bool singular_fallback = true) const; | |
5164 | 321 |
5785 | 322 SparseComplexMatrix solve (MatrixType &typ, |
5164 | 323 const SparseComplexMatrix& b) const; |
5785 | 324 SparseComplexMatrix solve (MatrixType &typ, const SparseComplexMatrix& b, |
5275 | 325 octave_idx_type& info) const; |
5785 | 326 SparseComplexMatrix solve (MatrixType &typ, const SparseComplexMatrix& b, |
5275 | 327 octave_idx_type& info, double& rcond) const; |
5785 | 328 SparseComplexMatrix solve (MatrixType &typ, const SparseComplexMatrix& b, |
5697 | 329 octave_idx_type& info, double& rcond, |
330 solve_singularity_handler sing_handler, | |
331 bool singular_fallback = true) const; | |
5164 | 332 |
5785 | 333 ComplexColumnVector solve (MatrixType &typ, const ColumnVector& b) const; |
334 ComplexColumnVector solve (MatrixType &typ, const ColumnVector& b, | |
5697 | 335 octave_idx_type& info) const; |
5785 | 336 ComplexColumnVector solve (MatrixType &typ, const ColumnVector& b, |
5697 | 337 octave_idx_type& info, double& rcond) const; |
5785 | 338 ComplexColumnVector solve (MatrixType &typ, const ColumnVector& b, |
5697 | 339 octave_idx_type& info, double& rcond, |
340 solve_singularity_handler sing_handler) const; | |
5164 | 341 |
5785 | 342 ComplexColumnVector solve (MatrixType &typ, |
5164 | 343 const ComplexColumnVector& b) const; |
5785 | 344 ComplexColumnVector solve (MatrixType &typ, const ComplexColumnVector& b, |
5697 | 345 octave_idx_type& info) const; |
5785 | 346 ComplexColumnVector solve (MatrixType &typ, const ComplexColumnVector& b, |
5275 | 347 octave_idx_type& info, double& rcond) const; |
5785 | 348 ComplexColumnVector solve (MatrixType &typ, const ComplexColumnVector& b, |
5275 | 349 octave_idx_type& info, double& rcond, |
5164 | 350 solve_singularity_handler sing_handler) const; |
351 | |
352 // Generic interface to solver with probing of type | |
353 ComplexMatrix solve (const Matrix& b) const; | |
5275 | 354 ComplexMatrix solve (const Matrix& b, octave_idx_type& info) const; |
5697 | 355 ComplexMatrix solve (const Matrix& b, octave_idx_type& info, |
356 double& rcond) const; | |
5275 | 357 ComplexMatrix solve (const Matrix& b, octave_idx_type& info, double& rcond, |
5164 | 358 solve_singularity_handler sing_handler) const; |
359 | |
360 ComplexMatrix solve (const ComplexMatrix& b) const; | |
5275 | 361 ComplexMatrix solve (const ComplexMatrix& b, octave_idx_type& info) const; |
362 ComplexMatrix solve (const ComplexMatrix& b, octave_idx_type& info, | |
5164 | 363 double& rcond) const; |
5697 | 364 ComplexMatrix solve (const ComplexMatrix& b, octave_idx_type& info, |
365 double& rcond, solve_singularity_handler sing_handler) const; | |
5164 | 366 |
367 SparseComplexMatrix solve (const SparseMatrix& b) const; | |
5275 | 368 SparseComplexMatrix solve (const SparseMatrix& b, octave_idx_type& info) const; |
369 SparseComplexMatrix solve (const SparseMatrix& b, octave_idx_type& info, | |
5164 | 370 double& rcond) const; |
5275 | 371 SparseComplexMatrix solve (const SparseMatrix& b, octave_idx_type& info, |
5164 | 372 double& rcond, |
5697 | 373 solve_singularity_handler sing_handler) const; |
5164 | 374 |
375 SparseComplexMatrix solve (const SparseComplexMatrix& b) const; | |
5697 | 376 SparseComplexMatrix solve (const SparseComplexMatrix& b, |
377 octave_idx_type& info) const; | |
378 SparseComplexMatrix solve (const SparseComplexMatrix& b, | |
379 octave_idx_type& info, double& rcond) const; | |
380 SparseComplexMatrix solve (const SparseComplexMatrix& b, | |
381 octave_idx_type& info, double& rcond, | |
5164 | 382 solve_singularity_handler sing_handler) const; |
383 | |
384 ComplexColumnVector solve (const ColumnVector& b) const; | |
5275 | 385 ComplexColumnVector solve (const ColumnVector& b, octave_idx_type& info) const; |
386 ComplexColumnVector solve (const ColumnVector& b, octave_idx_type& info, | |
5164 | 387 double& rcond) const; |
5697 | 388 ComplexColumnVector solve (const ColumnVector& b, octave_idx_type& info, |
389 double& rcond, | |
5164 | 390 solve_singularity_handler sing_handler) const; |
391 | |
392 ComplexColumnVector solve (const ComplexColumnVector& b) const; | |
5697 | 393 ComplexColumnVector solve (const ComplexColumnVector& b, |
394 octave_idx_type& info) const; | |
5275 | 395 ComplexColumnVector solve (const ComplexColumnVector& b, octave_idx_type& info, |
5164 | 396 double& rcond) const; |
5275 | 397 ComplexColumnVector solve (const ComplexColumnVector& b, octave_idx_type& info, |
5164 | 398 double& rcond, |
399 solve_singularity_handler sing_handler) const; | |
400 | |
401 SparseComplexMatrix squeeze (void) const; | |
402 | |
403 SparseComplexMatrix index (idx_vector& i, int resize_ok) const; | |
404 | |
405 SparseComplexMatrix index (idx_vector& i, idx_vector& j, int resize_ok) const; | |
406 | |
407 SparseComplexMatrix index (Array<idx_vector>& ra_idx, int resize_ok) const; | |
408 | |
409 SparseComplexMatrix reshape (const dim_vector& new_dims) const; | |
410 | |
5697 | 411 SparseComplexMatrix permute (const Array<octave_idx_type>& vec, |
412 bool inv = false) const; | |
5164 | 413 |
5275 | 414 SparseComplexMatrix ipermute (const Array<octave_idx_type>& vec) const; |
5164 | 415 |
7922
935be827eaf8
error for NaN values in & and | expressions
John W. Eaton <jwe@octave.org>
parents:
7802
diff
changeset
|
416 bool any_element_is_nan (void) const; |
5164 | 417 bool any_element_is_inf_or_nan (void) const; |
418 bool all_elements_are_real (void) const; | |
419 bool all_integers (double& max_val, double& min_val) const; | |
420 bool too_large_for_float (void) const; | |
421 | |
422 SparseBoolMatrix operator ! (void) const; | |
423 | |
424 SparseBoolMatrix all (int dim = -1) const; | |
425 SparseBoolMatrix any (int dim = -1) const; | |
426 | |
427 SparseComplexMatrix cumprod (int dim = -1) const; | |
428 SparseComplexMatrix cumsum (int dim = -1) const; | |
429 SparseComplexMatrix prod (int dim = -1) const; | |
430 SparseComplexMatrix sum (int dim = -1) const; | |
431 SparseComplexMatrix sumsq (int dim = -1) const; | |
432 SparseMatrix abs (void) const; | |
433 | |
5275 | 434 SparseComplexMatrix diag (octave_idx_type k = 0) const; |
5164 | 435 |
436 // i/o | |
6108 | 437 friend OCTAVE_API std::ostream& operator << (std::ostream& os, |
5164 | 438 const SparseComplexMatrix& a); |
6108 | 439 friend OCTAVE_API std::istream& operator >> (std::istream& is, |
5164 | 440 SparseComplexMatrix& a); |
7503
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
441 |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
442 typedef double (*dmapper) (const Complex&); |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
443 typedef Complex (*cmapper) (const Complex&); |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
444 typedef bool (*bmapper) (const Complex&); |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
445 SparseMatrix map (dmapper fcn) const; |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
446 SparseComplexMatrix map (cmapper fcn) const; |
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
447 SparseBoolMatrix map (bmapper fcn) const; |
5164 | 448 }; |
449 | |
6108 | 450 extern OCTAVE_API SparseComplexMatrix operator * (const SparseMatrix&, |
5164 | 451 const SparseComplexMatrix&); |
6108 | 452 extern OCTAVE_API SparseComplexMatrix operator * (const SparseComplexMatrix&, |
5164 | 453 const SparseMatrix&); |
6108 | 454 extern OCTAVE_API SparseComplexMatrix operator * (const SparseComplexMatrix&, |
5164 | 455 const SparseComplexMatrix&); |
456 | |
6108 | 457 extern OCTAVE_API ComplexMatrix operator * (const Matrix&, |
5429 | 458 const SparseComplexMatrix&); |
6108 | 459 extern OCTAVE_API ComplexMatrix operator * (const ComplexMatrix&, |
5429 | 460 const SparseMatrix&); |
6108 | 461 extern OCTAVE_API ComplexMatrix operator * (const ComplexMatrix&, |
5429 | 462 const SparseComplexMatrix&); |
7802
1a446f28ce68
implement optimized sparse-dense transposed multiplication
Jaroslav Hajek <highegg@gmail.com>
parents:
7503
diff
changeset
|
463 extern OCTAVE_API ComplexMatrix mul_trans (const ComplexMatrix&, |
1a446f28ce68
implement optimized sparse-dense transposed multiplication
Jaroslav Hajek <highegg@gmail.com>
parents:
7503
diff
changeset
|
464 const SparseComplexMatrix&); |
1a446f28ce68
implement optimized sparse-dense transposed multiplication
Jaroslav Hajek <highegg@gmail.com>
parents:
7503
diff
changeset
|
465 extern OCTAVE_API ComplexMatrix mul_herm (const ComplexMatrix&, |
1a446f28ce68
implement optimized sparse-dense transposed multiplication
Jaroslav Hajek <highegg@gmail.com>
parents:
7503
diff
changeset
|
466 const SparseComplexMatrix&); |
5429 | 467 |
6108 | 468 extern OCTAVE_API ComplexMatrix operator * (const SparseMatrix&, |
5429 | 469 const ComplexMatrix&); |
6108 | 470 extern OCTAVE_API ComplexMatrix operator * (const SparseComplexMatrix&, |
5429 | 471 const Matrix&); |
6108 | 472 extern OCTAVE_API ComplexMatrix operator * (const SparseComplexMatrix&, |
5429 | 473 const ComplexMatrix&); |
7802
1a446f28ce68
implement optimized sparse-dense transposed multiplication
Jaroslav Hajek <highegg@gmail.com>
parents:
7503
diff
changeset
|
474 extern OCTAVE_API ComplexMatrix trans_mul (const SparseComplexMatrix&, |
1a446f28ce68
implement optimized sparse-dense transposed multiplication
Jaroslav Hajek <highegg@gmail.com>
parents:
7503
diff
changeset
|
475 const ComplexMatrix&); |
1a446f28ce68
implement optimized sparse-dense transposed multiplication
Jaroslav Hajek <highegg@gmail.com>
parents:
7503
diff
changeset
|
476 extern OCTAVE_API ComplexMatrix herm_mul (const SparseComplexMatrix&, |
1a446f28ce68
implement optimized sparse-dense transposed multiplication
Jaroslav Hajek <highegg@gmail.com>
parents:
7503
diff
changeset
|
477 const ComplexMatrix&); |
5429 | 478 |
8964
f4f4d65faaa0
Implement sparse * diagonal and diagonal * sparse operations, double-prec only.
Jason Riedy <jason@acm.org>
parents:
8920
diff
changeset
|
479 extern OCTAVE_API SparseComplexMatrix operator * (const DiagMatrix&, const SparseComplexMatrix&); |
f4f4d65faaa0
Implement sparse * diagonal and diagonal * sparse operations, double-prec only.
Jason Riedy <jason@acm.org>
parents:
8920
diff
changeset
|
480 extern OCTAVE_API SparseComplexMatrix operator * (const SparseComplexMatrix&, const DiagMatrix&); |
f4f4d65faaa0
Implement sparse * diagonal and diagonal * sparse operations, double-prec only.
Jason Riedy <jason@acm.org>
parents:
8920
diff
changeset
|
481 |
f4f4d65faaa0
Implement sparse * diagonal and diagonal * sparse operations, double-prec only.
Jason Riedy <jason@acm.org>
parents:
8920
diff
changeset
|
482 extern OCTAVE_API SparseComplexMatrix operator * (const ComplexDiagMatrix&, const SparseMatrix&); |
f4f4d65faaa0
Implement sparse * diagonal and diagonal * sparse operations, double-prec only.
Jason Riedy <jason@acm.org>
parents:
8920
diff
changeset
|
483 extern OCTAVE_API SparseComplexMatrix operator * (const SparseMatrix&, const ComplexDiagMatrix&); |
f4f4d65faaa0
Implement sparse * diagonal and diagonal * sparse operations, double-prec only.
Jason Riedy <jason@acm.org>
parents:
8920
diff
changeset
|
484 |
f4f4d65faaa0
Implement sparse * diagonal and diagonal * sparse operations, double-prec only.
Jason Riedy <jason@acm.org>
parents:
8920
diff
changeset
|
485 extern OCTAVE_API SparseComplexMatrix operator * (const ComplexDiagMatrix&, const SparseComplexMatrix&); |
f4f4d65faaa0
Implement sparse * diagonal and diagonal * sparse operations, double-prec only.
Jason Riedy <jason@acm.org>
parents:
8920
diff
changeset
|
486 extern OCTAVE_API SparseComplexMatrix operator * (const SparseComplexMatrix&, const ComplexDiagMatrix&); |
f4f4d65faaa0
Implement sparse * diagonal and diagonal * sparse operations, double-prec only.
Jason Riedy <jason@acm.org>
parents:
8920
diff
changeset
|
487 |
8966
1bba53c0a38d
Implement diag + sparse, diag - sparse, sparse + diag, sparse - diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
488 extern OCTAVE_API SparseComplexMatrix operator + (const ComplexDiagMatrix&, const SparseMatrix&); |
1bba53c0a38d
Implement diag + sparse, diag - sparse, sparse + diag, sparse - diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
489 extern OCTAVE_API SparseComplexMatrix operator + (const DiagMatrix&, const SparseComplexMatrix&); |
1bba53c0a38d
Implement diag + sparse, diag - sparse, sparse + diag, sparse - diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
490 extern OCTAVE_API SparseComplexMatrix operator + (const ComplexDiagMatrix&, const SparseComplexMatrix&); |
1bba53c0a38d
Implement diag + sparse, diag - sparse, sparse + diag, sparse - diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
491 extern OCTAVE_API SparseComplexMatrix operator + (const SparseMatrix&, const ComplexDiagMatrix&); |
1bba53c0a38d
Implement diag + sparse, diag - sparse, sparse + diag, sparse - diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
492 extern OCTAVE_API SparseComplexMatrix operator + (const SparseComplexMatrix&, const DiagMatrix&); |
1bba53c0a38d
Implement diag + sparse, diag - sparse, sparse + diag, sparse - diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
493 extern OCTAVE_API SparseComplexMatrix operator + (const SparseComplexMatrix&, const ComplexDiagMatrix&); |
1bba53c0a38d
Implement diag + sparse, diag - sparse, sparse + diag, sparse - diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
494 |
1bba53c0a38d
Implement diag + sparse, diag - sparse, sparse + diag, sparse - diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
495 extern OCTAVE_API SparseComplexMatrix operator - (const ComplexDiagMatrix&, const SparseMatrix&); |
1bba53c0a38d
Implement diag + sparse, diag - sparse, sparse + diag, sparse - diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
496 extern OCTAVE_API SparseComplexMatrix operator - (const DiagMatrix&, const SparseComplexMatrix&); |
1bba53c0a38d
Implement diag + sparse, diag - sparse, sparse + diag, sparse - diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
497 extern OCTAVE_API SparseComplexMatrix operator - (const ComplexDiagMatrix&, const SparseComplexMatrix&); |
1bba53c0a38d
Implement diag + sparse, diag - sparse, sparse + diag, sparse - diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
498 extern OCTAVE_API SparseComplexMatrix operator - (const SparseMatrix&, const ComplexDiagMatrix&); |
1bba53c0a38d
Implement diag + sparse, diag - sparse, sparse + diag, sparse - diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
499 extern OCTAVE_API SparseComplexMatrix operator - (const SparseComplexMatrix&, const DiagMatrix&); |
1bba53c0a38d
Implement diag + sparse, diag - sparse, sparse + diag, sparse - diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
500 extern OCTAVE_API SparseComplexMatrix operator - (const SparseComplexMatrix&, const ComplexDiagMatrix&); |
1bba53c0a38d
Implement diag + sparse, diag - sparse, sparse + diag, sparse - diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
501 |
8968
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
502 extern OCTAVE_API SparseComplexMatrix operator * (const PermMatrix&, |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
503 const SparseComplexMatrix&); |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
504 extern OCTAVE_API SparseComplexMatrix operator * (const SparseComplexMatrix&, |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
505 const PermMatrix&); |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
506 |
6108 | 507 extern OCTAVE_API SparseComplexMatrix min (const Complex& c, |
5164 | 508 const SparseComplexMatrix& m); |
6108 | 509 extern OCTAVE_API SparseComplexMatrix min (const SparseComplexMatrix& m, |
5164 | 510 const Complex& c); |
6108 | 511 extern OCTAVE_API SparseComplexMatrix min (const SparseComplexMatrix& a, |
5164 | 512 const SparseComplexMatrix& b); |
513 | |
6108 | 514 extern OCTAVE_API SparseComplexMatrix max (const Complex& c, |
5164 | 515 const SparseComplexMatrix& m); |
6108 | 516 extern OCTAVE_API SparseComplexMatrix max (const SparseComplexMatrix& m, |
5164 | 517 const Complex& c); |
6108 | 518 extern OCTAVE_API SparseComplexMatrix max (const SparseComplexMatrix& a, |
5164 | 519 const SparseComplexMatrix& b); |
520 | |
6708 | 521 SPARSE_SMS_CMP_OP_DECLS (SparseComplexMatrix, Complex, OCTAVE_API) |
522 SPARSE_SMS_BOOL_OP_DECLS (SparseComplexMatrix, Complex, OCTAVE_API) | |
5164 | 523 |
6708 | 524 SPARSE_SSM_CMP_OP_DECLS (Complex, SparseComplexMatrix, OCTAVE_API) |
525 SPARSE_SSM_BOOL_OP_DECLS (Complex, SparseComplexMatrix, OCTAVE_API) | |
5164 | 526 |
6708 | 527 SPARSE_SMSM_CMP_OP_DECLS (SparseComplexMatrix, SparseComplexMatrix, OCTAVE_API) |
528 SPARSE_SMSM_BOOL_OP_DECLS (SparseComplexMatrix, SparseComplexMatrix, OCTAVE_API) | |
5164 | 529 |
530 SPARSE_FORWARD_DEFS (MSparse, SparseComplexMatrix, ComplexMatrix, Complex) | |
531 | |
5351 | 532 #ifdef IDX_TYPE_LONG |
5322 | 533 #define UMFPACK_ZNAME(name) umfpack_zl_ ## name |
534 #else | |
535 #define UMFPACK_ZNAME(name) umfpack_zi_ ## name | |
536 #endif | |
537 | |
5164 | 538 #endif |
539 | |
540 /* | |
541 ;;; Local Variables: *** | |
542 ;;; mode: C++ *** | |
543 ;;; End: *** | |
544 */ |