Mercurial > hg > octave-lyh
annotate liboctave/dSparse.h @ 10396:a0b51ac0f88a
optimize accumdim with summation
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Fri, 05 Mar 2010 12:31:30 +0100 |
parents | cbc402e64d83 |
children | 99e9bae2d81e |
rev | line source |
---|---|
5164 | 1 /* |
2 | |
8920 | 3 Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 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_dSparse_h) | |
25 #define octave_dSparse_h 1 | |
26 | |
27 #include "dMatrix.h" | |
28 #include "dNDArray.h" | |
29 #include "CMatrix.h" | |
30 #include "dColVector.h" | |
31 #include "CColVector.h" | |
32 | |
8335 | 33 #include "DET.h" |
5164 | 34 #include "MSparse.h" |
35 #include "MSparse-defs.h" | |
36 #include "Sparse-op-defs.h" | |
5785 | 37 #include "MatrixType.h" |
5164 | 38 |
8968
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
39 class PermMatrix; |
8964
f4f4d65faaa0
Implement sparse * diagonal and diagonal * sparse operations, double-prec only.
Jason Riedy <jason@acm.org>
parents:
8920
diff
changeset
|
40 class DiagMatrix; |
5164 | 41 class SparseComplexMatrix; |
42 class SparseBoolMatrix; | |
43 | |
44 class | |
6108 | 45 OCTAVE_API |
5164 | 46 SparseMatrix : public MSparse<double> |
47 { | |
48 public: | |
49 | |
50 typedef void (*solve_singularity_handler) (double rcond); | |
51 | |
52 SparseMatrix (void) : MSparse<double> () { } | |
53 | |
5275 | 54 SparseMatrix (octave_idx_type r, octave_idx_type c) : MSparse<double> (r, c) { } |
5164 | 55 |
6823 | 56 SparseMatrix (const dim_vector& dv, octave_idx_type nz = 0) : |
57 MSparse<double> (dv, nz) { } | |
58 | |
5275 | 59 explicit SparseMatrix (octave_idx_type r, octave_idx_type c, double val) |
5164 | 60 : MSparse<double> (r, c, val) { } |
61 | |
62 SparseMatrix (const SparseMatrix& a) : MSparse<double> (a) { } | |
63 | |
64 SparseMatrix (const SparseMatrix& a, const dim_vector& dv) | |
65 : MSparse<double> (a, dv) { } | |
66 | |
67 SparseMatrix (const MSparse<double>& a) : MSparse<double> (a) { } | |
68 | |
69 explicit SparseMatrix (const SparseBoolMatrix& a); | |
70 | |
71 explicit SparseMatrix (const Matrix& a) : MSparse<double> (a) { } | |
72 | |
73 explicit SparseMatrix (const NDArray& a) : MSparse<double> (a) { } | |
74 | |
5275 | 75 explicit SparseMatrix (const Array<double> a, const Array<octave_idx_type>& r, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
76 const Array<octave_idx_type>& c, octave_idx_type nr = -1, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
77 octave_idx_type nc = -1, bool sum_terms = true) |
5164 | 78 : MSparse<double> (a, r, c, nr, nc, sum_terms) { } |
79 | |
80 explicit SparseMatrix (const Array<double> a, const Array<double>& r, | |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
81 const Array<double>& c, octave_idx_type nr = -1, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
82 octave_idx_type nc = -1, bool sum_terms = true) |
5164 | 83 : MSparse<double> (a, r, c, nr, nc, sum_terms) { } |
84 | |
8366
8b1a2555c4e2
implement diagonal matrix objects
Jaroslav Hajek <highegg@gmail.com>
parents:
8335
diff
changeset
|
85 explicit SparseMatrix (const DiagMatrix& a); |
8b1a2555c4e2
implement diagonal matrix objects
Jaroslav Hajek <highegg@gmail.com>
parents:
8335
diff
changeset
|
86 |
8910
6e9f26506804
optimize diag -> sparse and perm -> sparse conversions
Jaroslav Hajek <highegg@gmail.com>
parents:
8366
diff
changeset
|
87 explicit SparseMatrix (const PermMatrix& a); |
6e9f26506804
optimize diag -> sparse and perm -> sparse conversions
Jaroslav Hajek <highegg@gmail.com>
parents:
8366
diff
changeset
|
88 |
5275 | 89 SparseMatrix (octave_idx_type r, octave_idx_type c, octave_idx_type num_nz) : MSparse<double> (r, c, num_nz) { } |
5164 | 90 |
91 SparseMatrix& operator = (const SparseMatrix& a) | |
92 { | |
93 MSparse<double>::operator = (a); | |
94 return *this; | |
95 } | |
96 | |
97 bool operator == (const SparseMatrix& a) const; | |
98 bool operator != (const SparseMatrix& a) const; | |
99 | |
100 bool is_symmetric (void) const; | |
101 | |
9790
a5035bc7fbfb
rewrite dispatch part & slightly improve min,max,cummin,cummax
Jaroslav Hajek <highegg@gmail.com>
parents:
8968
diff
changeset
|
102 SparseMatrix max (int dim = -1) const; |
a5035bc7fbfb
rewrite dispatch part & slightly improve min,max,cummin,cummax
Jaroslav Hajek <highegg@gmail.com>
parents:
8968
diff
changeset
|
103 SparseMatrix 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
|
104 SparseMatrix min (int dim = -1) const; |
a5035bc7fbfb
rewrite dispatch part & slightly improve min,max,cummin,cummax
Jaroslav Hajek <highegg@gmail.com>
parents:
8968
diff
changeset
|
105 SparseMatrix min (Array<octave_idx_type>& index, int dim = -1) const; |
5164 | 106 |
107 // destructive insert/delete/reorder operations | |
108 | |
5275 | 109 SparseMatrix& insert (const SparseMatrix& a, octave_idx_type r, octave_idx_type c); |
5164 | 110 |
6823 | 111 SparseMatrix& insert (const SparseMatrix& a, const Array<octave_idx_type>& indx); |
112 | |
5275 | 113 SparseMatrix concat (const SparseMatrix& rb, const Array<octave_idx_type>& ra_idx); |
5164 | 114 SparseComplexMatrix concat (const SparseComplexMatrix& rb, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
115 const Array<octave_idx_type>& ra_idx); |
5164 | 116 |
6108 | 117 friend OCTAVE_API SparseMatrix real (const SparseComplexMatrix& a); |
118 friend OCTAVE_API SparseMatrix imag (const SparseComplexMatrix& a); | |
5164 | 119 |
6108 | 120 friend OCTAVE_API SparseMatrix atan2 (const double& x, const SparseMatrix& y); |
121 friend OCTAVE_API SparseMatrix atan2 (const SparseMatrix& x, const double& y); | |
122 friend OCTAVE_API SparseMatrix atan2 (const SparseMatrix& x, const SparseMatrix& y); | |
5164 | 123 |
124 SparseMatrix transpose (void) const | |
125 { | |
126 return MSparse<double>::transpose (); | |
127 } | |
5506 | 128 SparseMatrix hermitian (void) const { return transpose (); } |
5164 | 129 |
8303
b11c31849b44
improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
7922
diff
changeset
|
130 // extract row or column i. |
b11c31849b44
improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
7922
diff
changeset
|
131 |
b11c31849b44
improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
7922
diff
changeset
|
132 RowVector row (octave_idx_type i) const; |
b11c31849b44
improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
7922
diff
changeset
|
133 |
b11c31849b44
improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
7922
diff
changeset
|
134 ColumnVector column (octave_idx_type i) const; |
b11c31849b44
improve norm computation capabilities
Jaroslav Hajek <highegg@gmail.com>
parents:
7922
diff
changeset
|
135 |
5506 | 136 private: |
5785 | 137 SparseMatrix dinverse (MatrixType &mattyp, octave_idx_type& info, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
138 double& rcond, const bool force = false, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
139 const bool calccond = true) const; |
5506 | 140 |
5785 | 141 SparseMatrix tinverse (MatrixType &mattyp, octave_idx_type& info, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
142 double& rcond, const bool force = false, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
143 const bool calccond = true) const; |
5506 | 144 |
145 public: | |
5164 | 146 SparseMatrix inverse (void) const; |
5785 | 147 SparseMatrix inverse (MatrixType& mattype) const; |
148 SparseMatrix inverse (MatrixType& mattype, octave_idx_type& info) const; | |
149 SparseMatrix inverse (MatrixType& mattype, octave_idx_type& info, | |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
150 double& rcond, int force = 0, int calc_cond = 1) const; |
5164 | 151 |
152 DET determinant (void) const; | |
5275 | 153 DET determinant (octave_idx_type& info) const; |
154 DET determinant (octave_idx_type& info, double& rcond, int calc_cond = 1) const; | |
5164 | 155 |
156 private: | |
157 // Diagonal matrix solvers | |
5785 | 158 Matrix dsolve (MatrixType &typ, const Matrix& b, octave_idx_type& info, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
159 double& rcond, solve_singularity_handler sing_handler, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
160 bool calc_cond = false) const; |
5164 | 161 |
5785 | 162 ComplexMatrix dsolve (MatrixType &typ, const ComplexMatrix& b, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
163 octave_idx_type& info, double& rcond, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
164 solve_singularity_handler sing_handler, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
165 bool calc_cond = false) const; |
5164 | 166 |
5785 | 167 SparseMatrix dsolve (MatrixType &typ, const SparseMatrix& b, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
168 octave_idx_type& info, double& rcond, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
169 solve_singularity_handler sing_handler, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
170 bool calc_cond = false) const; |
5164 | 171 |
5785 | 172 SparseComplexMatrix dsolve (MatrixType &typ, const SparseComplexMatrix& b, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
173 octave_idx_type& info, double& rcond, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
174 solve_singularity_handler sing_handler, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
175 bool calc_cond = false) const; |
5164 | 176 |
177 // Upper triangular matrix solvers | |
5785 | 178 Matrix utsolve (MatrixType &typ, const Matrix& b, octave_idx_type& info, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
179 double& rcond, solve_singularity_handler sing_handler, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
180 bool calc_cond = false) const; |
5164 | 181 |
5785 | 182 ComplexMatrix utsolve (MatrixType &typ, const ComplexMatrix& b, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
183 octave_idx_type& info, double& rcond, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
184 solve_singularity_handler sing_handler, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
185 bool calc_cond = false) const; |
5164 | 186 |
5785 | 187 SparseMatrix utsolve (MatrixType &typ, const SparseMatrix& b, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
188 octave_idx_type& info, double& rcond, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
189 solve_singularity_handler sing_handler, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
190 bool calc_cond = false) const; |
5164 | 191 |
5785 | 192 SparseComplexMatrix utsolve (MatrixType &typ, const SparseComplexMatrix& b, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
193 octave_idx_type& info, double& rcond, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
194 solve_singularity_handler sing_handler, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
195 bool calc_cond = false) const; |
5164 | 196 |
197 // Lower triangular matrix solvers | |
5785 | 198 Matrix ltsolve (MatrixType &typ, const Matrix& b, octave_idx_type& info, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
199 double& rcond, solve_singularity_handler sing_handler, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
200 bool calc_cond = false) const; |
5164 | 201 |
5785 | 202 ComplexMatrix ltsolve (MatrixType &typ, const ComplexMatrix& b, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
203 octave_idx_type& info, double& rcond, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
204 solve_singularity_handler sing_handler, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
205 bool calc_cond = false) const; |
5164 | 206 |
5785 | 207 SparseMatrix ltsolve (MatrixType &typ, const SparseMatrix& b, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
208 octave_idx_type& info, double& rcond, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
209 solve_singularity_handler sing_handler, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
210 bool calc_cond = false) const; |
5164 | 211 |
5785 | 212 SparseComplexMatrix ltsolve (MatrixType &typ, const SparseComplexMatrix& b, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
213 octave_idx_type& info, double& rcond, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
214 solve_singularity_handler sing_handler, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
215 bool calc_cond = false) const; |
5164 | 216 |
217 // Tridiagonal matrix solvers | |
5785 | 218 Matrix trisolve (MatrixType &typ, const Matrix& b, octave_idx_type& info, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
219 double& rcond, solve_singularity_handler sing_handler, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
220 bool calc_cond = false) const; |
5164 | 221 |
5785 | 222 ComplexMatrix trisolve (MatrixType &typ, const ComplexMatrix& b, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
223 octave_idx_type& info, double& rcond, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
224 solve_singularity_handler sing_handler, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
225 bool calc_cond = false) const; |
5164 | 226 |
5785 | 227 SparseMatrix trisolve (MatrixType &typ, const SparseMatrix& b, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
228 octave_idx_type& info, double& rcond, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
229 solve_singularity_handler sing_handler, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
230 bool calc_cond = false) const; |
5164 | 231 |
5785 | 232 SparseComplexMatrix trisolve (MatrixType &typ, const SparseComplexMatrix& b, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
233 octave_idx_type& info, double& rcond, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
234 solve_singularity_handler sing_handler, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
235 bool calc_cond = false) const; |
5164 | 236 |
237 // Banded matrix solvers (umfpack/cholesky) | |
5785 | 238 Matrix bsolve (MatrixType &typ, const Matrix& b, octave_idx_type& info, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
239 double& rcond, solve_singularity_handler sing_handler, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
240 bool calc_cond = false) const; |
5164 | 241 |
5785 | 242 ComplexMatrix bsolve (MatrixType &typ, const ComplexMatrix& b, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
243 octave_idx_type& info, double& rcond, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
244 solve_singularity_handler sing_handler, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
245 bool calc_cond = false) const; |
5164 | 246 |
5785 | 247 SparseMatrix bsolve (MatrixType &typ, const SparseMatrix& b, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
248 octave_idx_type& info, double& rcond, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
249 solve_singularity_handler sing_handler, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
250 bool calc_cond = false) const; |
5164 | 251 |
5785 | 252 SparseComplexMatrix bsolve (MatrixType &typ, const SparseComplexMatrix& b, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
253 octave_idx_type& info, double& rcond, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
254 solve_singularity_handler sing_handler, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
255 bool calc_cond = false) const; |
5164 | 256 |
257 // Full matrix solvers (umfpack/cholesky) | |
5681 | 258 void * factorize (octave_idx_type& err, double &rcond, Matrix &Control, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
259 Matrix &Info, solve_singularity_handler sing_handler, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
260 bool calc_cond = false) const; |
5164 | 261 |
5785 | 262 Matrix fsolve (MatrixType &typ, const Matrix& b, octave_idx_type& info, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
263 double& rcond, solve_singularity_handler sing_handler, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
264 bool calc_cond = false) const; |
5164 | 265 |
5785 | 266 ComplexMatrix fsolve (MatrixType &typ, const ComplexMatrix& b, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
267 octave_idx_type& info, double& rcond, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
268 solve_singularity_handler sing_handler, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
269 bool calc_cond = false) const; |
5164 | 270 |
5785 | 271 SparseMatrix fsolve (MatrixType &typ, const SparseMatrix& b, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
272 octave_idx_type& info, double& rcond, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
273 solve_singularity_handler sing_handler, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
274 bool calc_cond = false) const; |
5164 | 275 |
5785 | 276 SparseComplexMatrix fsolve (MatrixType &typ, const SparseComplexMatrix& b, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
277 octave_idx_type& info, double& rcond, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
278 solve_singularity_handler sing_handler, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
279 bool calc_cond = false) const; |
5164 | 280 |
281 public: | |
282 // Generic interface to solver with no probing of type | |
5785 | 283 Matrix solve (MatrixType &typ, const Matrix& b) const; |
284 Matrix solve (MatrixType &typ, const Matrix& b, octave_idx_type& info) const; | |
285 Matrix solve (MatrixType &typ, const Matrix& b, octave_idx_type& info, | |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
286 double& rcond) const; |
5785 | 287 Matrix solve (MatrixType &typ, const Matrix& b, octave_idx_type& info, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
288 double& rcond, solve_singularity_handler sing_handler, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
289 bool singular_fallback = true) const; |
5164 | 290 |
5785 | 291 ComplexMatrix solve (MatrixType &typ, const ComplexMatrix& b) const; |
292 ComplexMatrix solve (MatrixType &typ, const ComplexMatrix& b, | |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
293 octave_idx_type& info) const; |
5785 | 294 ComplexMatrix solve (MatrixType &typ, const ComplexMatrix& b, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
295 octave_idx_type& info, double& rcond) const; |
5785 | 296 ComplexMatrix solve (MatrixType &typ, const ComplexMatrix& b, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
297 octave_idx_type& info, double& rcond, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
298 solve_singularity_handler sing_handler, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
299 bool singular_fallback = true) const; |
5164 | 300 |
5785 | 301 SparseMatrix solve (MatrixType &typ, const SparseMatrix& b) const; |
302 SparseMatrix solve (MatrixType &typ, const SparseMatrix& b, | |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
303 octave_idx_type& info) const; |
5785 | 304 SparseMatrix solve (MatrixType &typ, const SparseMatrix& b, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
305 octave_idx_type& info, double& rcond) const; |
5785 | 306 SparseMatrix solve (MatrixType &typ, const SparseMatrix& b, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
307 octave_idx_type& info, double& rcond, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
308 solve_singularity_handler sing_handler, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
309 bool singular_fallback = true) const; |
5164 | 310 |
5785 | 311 SparseComplexMatrix solve (MatrixType &typ, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
312 const SparseComplexMatrix& b) const; |
5785 | 313 SparseComplexMatrix solve (MatrixType &typ, const SparseComplexMatrix& b, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
314 octave_idx_type& info) const; |
5785 | 315 SparseComplexMatrix solve (MatrixType &typ, const SparseComplexMatrix& b, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
316 octave_idx_type& info, double& rcond) const; |
5785 | 317 SparseComplexMatrix solve (MatrixType &typ, const SparseComplexMatrix& b, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
318 octave_idx_type& info, double& rcond, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
319 solve_singularity_handler sing_handler, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
320 bool singular_fallabck = true) const; |
5164 | 321 |
5785 | 322 ColumnVector solve (MatrixType &typ, const ColumnVector& b) const; |
323 ColumnVector solve (MatrixType &typ, const ColumnVector& b, | |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
324 octave_idx_type& info) const; |
5785 | 325 ColumnVector solve (MatrixType &typ, const ColumnVector& b, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
326 octave_idx_type& info, double& rcond) const; |
5785 | 327 ColumnVector solve (MatrixType &typ, const ColumnVector& b, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
328 octave_idx_type& info, double& rcond, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
329 solve_singularity_handler sing_handler) const; |
5164 | 330 |
5785 | 331 ComplexColumnVector solve (MatrixType &typ, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
332 const ComplexColumnVector& b) const; |
5785 | 333 ComplexColumnVector solve (MatrixType &typ, const ComplexColumnVector& b, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
334 octave_idx_type& info) const; |
5785 | 335 ComplexColumnVector solve (MatrixType &typ, const ComplexColumnVector& b, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
336 octave_idx_type& info, double& rcond) const; |
5785 | 337 ComplexColumnVector solve (MatrixType &typ, const ComplexColumnVector& b, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
338 octave_idx_type& info, double& rcond, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
339 solve_singularity_handler sing_handler) const; |
5164 | 340 |
341 // Generic interface to solver with probing of type | |
342 Matrix solve (const Matrix& b) const; | |
5275 | 343 Matrix solve (const Matrix& b, octave_idx_type& info) const; |
344 Matrix solve (const Matrix& b, octave_idx_type& info, double& rcond) const; | |
345 Matrix solve (const Matrix& b, octave_idx_type& info, double& rcond, | |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
346 solve_singularity_handler sing_handler) const; |
5164 | 347 |
348 ComplexMatrix solve (const ComplexMatrix& b) const; | |
5275 | 349 ComplexMatrix solve (const ComplexMatrix& b, octave_idx_type& info) const; |
350 ComplexMatrix solve (const ComplexMatrix& b, octave_idx_type& info, | |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
351 double& rcond) const; |
5275 | 352 ComplexMatrix solve (const ComplexMatrix& b, octave_idx_type& info, double& rcond, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
353 solve_singularity_handler sing_handler) const; |
5164 | 354 |
355 SparseMatrix solve (const SparseMatrix& b) const; | |
5275 | 356 SparseMatrix solve (const SparseMatrix& b, octave_idx_type& info) const; |
357 SparseMatrix solve (const SparseMatrix& b, octave_idx_type& info, | |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
358 double& rcond) const; |
5275 | 359 SparseMatrix solve (const SparseMatrix& b, octave_idx_type& info, double& rcond, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
360 solve_singularity_handler sing_handler) const; |
5164 | 361 |
362 SparseComplexMatrix solve (const SparseComplexMatrix& b) const; | |
5275 | 363 SparseComplexMatrix solve (const SparseComplexMatrix& b, octave_idx_type& info) const; |
364 SparseComplexMatrix solve (const SparseComplexMatrix& b, octave_idx_type& info, | |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
365 double& rcond) const; |
5275 | 366 SparseComplexMatrix solve (const SparseComplexMatrix& b, octave_idx_type& info, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
367 double& rcond, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
368 solve_singularity_handler sing_handler) const; |
5164 | 369 |
370 ColumnVector solve (const ColumnVector& b) const; | |
5275 | 371 ColumnVector solve (const ColumnVector& b, octave_idx_type& info) const; |
372 ColumnVector solve (const ColumnVector& b, octave_idx_type& info, double& rcond) const; | |
373 ColumnVector solve (const ColumnVector& b, octave_idx_type& info, double& rcond, | |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
374 solve_singularity_handler sing_handler) const; |
5164 | 375 |
376 ComplexColumnVector solve (const ComplexColumnVector& b) const; | |
5275 | 377 ComplexColumnVector solve (const ComplexColumnVector& b, octave_idx_type& info) const; |
378 ComplexColumnVector solve (const ComplexColumnVector& b, octave_idx_type& info, | |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
379 double& rcond) const; |
5275 | 380 ComplexColumnVector solve (const ComplexColumnVector& b, octave_idx_type& info, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
381 double& rcond, |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
382 solve_singularity_handler sing_handler) const; |
5164 | 383 |
384 // other operations | |
385 | |
386 bool any_element_is_negative (bool = false) const; | |
7922
935be827eaf8
error for NaN values in & and | expressions
John W. Eaton <jwe@octave.org>
parents:
7802
diff
changeset
|
387 bool any_element_is_nan (void) const; |
5164 | 388 bool any_element_is_inf_or_nan (void) const; |
9852
aabf7a8c2e57
implement sparse logical conversion
Jaroslav Hajek <highegg@gmail.com>
parents:
9812
diff
changeset
|
389 bool any_element_not_one_or_zero (void) const; |
6989 | 390 bool all_elements_are_zero (void) const; |
5164 | 391 bool all_elements_are_int_or_inf_or_nan (void) const; |
392 bool all_integers (double& max_val, double& min_val) const; | |
393 bool too_large_for_float (void) const; | |
394 | |
395 SparseBoolMatrix operator ! (void) const; | |
396 | |
397 SparseBoolMatrix all (int dim = -1) const; | |
398 SparseBoolMatrix any (int dim = -1) const; | |
399 | |
400 SparseMatrix cumprod (int dim = -1) const; | |
401 SparseMatrix cumsum (int dim = -1) const; | |
402 SparseMatrix prod (int dim = -1) const; | |
403 SparseMatrix sum (int dim = -1) const; | |
404 SparseMatrix sumsq (int dim = -1) const; | |
405 SparseMatrix abs (void) const; | |
406 | |
5275 | 407 SparseMatrix diag (octave_idx_type k = 0) const; |
5164 | 408 |
409 Matrix matrix_value (void) const; | |
410 | |
411 SparseMatrix squeeze (void) const; | |
412 | |
413 SparseMatrix index (idx_vector& i, int resize_ok) const; | |
414 | |
415 SparseMatrix index (idx_vector& i, idx_vector& j, int resize_ok) const; | |
416 | |
417 SparseMatrix index (Array<idx_vector>& ra_idx, int resize_ok) const; | |
418 | |
419 SparseMatrix reshape (const dim_vector& new_dims) const; | |
420 | |
5275 | 421 SparseMatrix permute (const Array<octave_idx_type>& vec, bool inv = false) const; |
5164 | 422 |
5275 | 423 SparseMatrix ipermute (const Array<octave_idx_type>& vec) const; |
5164 | 424 |
425 // i/o | |
426 | |
6108 | 427 friend OCTAVE_API std::ostream& operator << (std::ostream& os, const SparseMatrix& a); |
428 friend OCTAVE_API std::istream& operator >> (std::istream& is, SparseMatrix& a); | |
7503
8c32f95c2639
convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
429 |
5164 | 430 }; |
431 | |
5509 | 432 // Publish externally used friend functions. |
433 | |
6108 | 434 extern OCTAVE_API SparseMatrix real (const SparseComplexMatrix& a); |
435 extern OCTAVE_API SparseMatrix imag (const SparseComplexMatrix& a); | |
5509 | 436 |
437 // Other operators. | |
438 | |
6108 | 439 extern OCTAVE_API SparseMatrix operator * (const SparseMatrix& a, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
440 const SparseMatrix& b); |
6108 | 441 extern OCTAVE_API Matrix operator * (const Matrix& a, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
442 const SparseMatrix& b); |
7802
1a446f28ce68
implement optimized sparse-dense transposed multiplication
Jaroslav Hajek <highegg@gmail.com>
parents:
7503
diff
changeset
|
443 extern OCTAVE_API Matrix mul_trans (const Matrix& a, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
444 const SparseMatrix& b); |
6108 | 445 extern OCTAVE_API Matrix operator * (const SparseMatrix& a, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
446 const Matrix& b); |
7802
1a446f28ce68
implement optimized sparse-dense transposed multiplication
Jaroslav Hajek <highegg@gmail.com>
parents:
7503
diff
changeset
|
447 extern OCTAVE_API Matrix trans_mul (const SparseMatrix& a, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
448 const Matrix& b); |
5164 | 449 |
8964
f4f4d65faaa0
Implement sparse * diagonal and diagonal * sparse operations, double-prec only.
Jason Riedy <jason@acm.org>
parents:
8920
diff
changeset
|
450 extern OCTAVE_API SparseMatrix operator * (const DiagMatrix&, const SparseMatrix&); |
f4f4d65faaa0
Implement sparse * diagonal and diagonal * sparse operations, double-prec only.
Jason Riedy <jason@acm.org>
parents:
8920
diff
changeset
|
451 extern OCTAVE_API SparseMatrix operator * (const SparseMatrix&, const DiagMatrix&); |
f4f4d65faaa0
Implement sparse * diagonal and diagonal * sparse operations, double-prec only.
Jason Riedy <jason@acm.org>
parents:
8920
diff
changeset
|
452 |
8966
1bba53c0a38d
Implement diag + sparse, diag - sparse, sparse + diag, sparse - diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
453 extern OCTAVE_API SparseMatrix operator + (const DiagMatrix&, const SparseMatrix&); |
1bba53c0a38d
Implement diag + sparse, diag - sparse, sparse + diag, sparse - diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
454 extern OCTAVE_API SparseMatrix operator + (const SparseMatrix&, const DiagMatrix&); |
1bba53c0a38d
Implement diag + sparse, diag - sparse, sparse + diag, sparse - diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
455 extern OCTAVE_API SparseMatrix operator - (const DiagMatrix&, const SparseMatrix&); |
1bba53c0a38d
Implement diag + sparse, diag - sparse, sparse + diag, sparse - diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
456 extern OCTAVE_API SparseMatrix operator - (const SparseMatrix&, const DiagMatrix&); |
1bba53c0a38d
Implement diag + sparse, diag - sparse, sparse + diag, sparse - diag.
Jason Riedy <jason@acm.org>
parents:
8964
diff
changeset
|
457 |
8968
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
458 extern OCTAVE_API SparseMatrix operator * (const PermMatrix&, const SparseMatrix&); |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
459 extern OCTAVE_API SparseMatrix operator * (const SparseMatrix&, const PermMatrix&); |
91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Jason Riedy <jason@acm.org>
parents:
8966
diff
changeset
|
460 |
6108 | 461 extern OCTAVE_API SparseMatrix min (double d, const SparseMatrix& m); |
462 extern OCTAVE_API SparseMatrix min (const SparseMatrix& m, double d); | |
463 extern OCTAVE_API SparseMatrix min (const SparseMatrix& a, const SparseMatrix& b); | |
5164 | 464 |
6108 | 465 extern OCTAVE_API SparseMatrix max (double d, const SparseMatrix& m); |
466 extern OCTAVE_API SparseMatrix max (const SparseMatrix& m, double d); | |
467 extern OCTAVE_API SparseMatrix max (const SparseMatrix& a, const SparseMatrix& b); | |
5164 | 468 |
6708 | 469 SPARSE_SMS_CMP_OP_DECLS (SparseMatrix, double, OCTAVE_API) |
470 SPARSE_SMS_BOOL_OP_DECLS (SparseMatrix, double, OCTAVE_API) | |
5164 | 471 |
6708 | 472 SPARSE_SSM_CMP_OP_DECLS (double, SparseMatrix, OCTAVE_API) |
473 SPARSE_SSM_BOOL_OP_DECLS (double, SparseMatrix, OCTAVE_API) | |
5164 | 474 |
6708 | 475 SPARSE_SMSM_CMP_OP_DECLS (SparseMatrix, SparseMatrix, OCTAVE_API) |
476 SPARSE_SMSM_BOOL_OP_DECLS (SparseMatrix, SparseMatrix, OCTAVE_API) | |
5164 | 477 |
478 SPARSE_FORWARD_DEFS (MSparse, SparseMatrix, Matrix, double) | |
479 | |
5351 | 480 #ifdef IDX_TYPE_LONG |
5322 | 481 #define UMFPACK_DNAME(name) umfpack_dl_ ## name |
482 #else | |
483 #define UMFPACK_DNAME(name) umfpack_di_ ## name | |
484 #endif | |
485 | |
5164 | 486 #endif |