Mercurial > hg > octave-nkf
annotate liboctave/array/dDiagMatrix.h @ 20830:b65888ec820e draft default tip gccjit
dmalcom gcc jit import
author | Stefan Mahr <dac922@gmx.de> |
---|---|
date | Fri, 27 Feb 2015 16:59:36 +0100 |
parents | 4197fc428c7d |
children |
rev | line source |
---|---|
458 | 1 /* |
2 | |
19898
4197fc428c7d
maint: Update copyright notices for 2015.
John W. Eaton <jwe@octave.org>
parents:
18535
diff
changeset
|
3 Copyright (C) 1994-2015 John W. Eaton |
458 | 4 |
5 This file is part of Octave. | |
6 | |
7 Octave is free software; you can redistribute it and/or modify it | |
8 under the terms of the GNU General Public License as published by the | |
7016 | 9 Free Software Foundation; either version 3 of the License, or (at your |
10 option) any later version. | |
458 | 11 |
12 Octave is distributed in the hope that it will be useful, but WITHOUT | |
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
15 for more details. | |
16 | |
17 You should have received a copy of the GNU General Public License | |
7016 | 18 along with Octave; see the file COPYING. If not, see |
19 <http://www.gnu.org/licenses/>. | |
458 | 20 |
21 */ | |
22 | |
17822
ebb3ef964372
maint: Use common #define syntax "octave_filename_h" in h_files.
Rik <rik@octave.org>
parents:
17769
diff
changeset
|
23 #if !defined (octave_dDiagMatrix_h) |
ebb3ef964372
maint: Use common #define syntax "octave_filename_h" in h_files.
Rik <rik@octave.org>
parents:
17769
diff
changeset
|
24 #define octave_dDiagMatrix_h 1 |
458 | 25 |
1989 | 26 #include "MDiagArray2.h" |
458 | 27 |
28 #include "dRowVector.h" | |
29 #include "dColVector.h" | |
8371
c3f7e2549abb
make det & inv aware of diagonal & permutation matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8367
diff
changeset
|
30 #include "DET.h" |
458 | 31 |
32 #include "mx-defs.h" | |
33 | |
3585 | 34 class |
6108 | 35 OCTAVE_API |
3585 | 36 DiagMatrix : public MDiagArray2<double> |
458 | 37 { |
17769
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
38 friend class SVD; |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
39 friend class ComplexSVD; |
458 | 40 |
41 public: | |
42 | |
1989 | 43 DiagMatrix (void) : MDiagArray2<double> () { } |
3585 | 44 |
17769
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
45 DiagMatrix (octave_idx_type r, octave_idx_type c) |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
46 : MDiagArray2<double> (r, c) { } |
3585 | 47 |
17769
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
48 DiagMatrix (octave_idx_type r, octave_idx_type c, double val) |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
49 : MDiagArray2<double> (r, c, val) { } |
3585 | 50 |
51 DiagMatrix (const DiagMatrix& a) : MDiagArray2<double> (a) { } | |
52 | |
1989 | 53 DiagMatrix (const MDiagArray2<double>& a) : MDiagArray2<double> (a) { } |
3585 | 54 |
8366
8b1a2555c4e2
implement diagonal matrix objects
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
55 template <class U> |
8b1a2555c4e2
implement diagonal matrix objects
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
56 DiagMatrix (const DiagArray2<U>& a) : MDiagArray2<double> (a) { } |
8b1a2555c4e2
implement diagonal matrix objects
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
57 |
10363
a0728e81ed25
improve diag matrix interface & implementation
Jaroslav Hajek <highegg@gmail.com>
parents:
10158
diff
changeset
|
58 explicit DiagMatrix (const Array<double>& a) : MDiagArray2<double> (a) { } |
3585 | 59 |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
60 DiagMatrix (const Array<double>& a, octave_idx_type r, octave_idx_type c) |
10363
a0728e81ed25
improve diag matrix interface & implementation
Jaroslav Hajek <highegg@gmail.com>
parents:
10158
diff
changeset
|
61 : MDiagArray2<double> (a, r, c) { } |
458 | 62 |
63 DiagMatrix& operator = (const DiagMatrix& a) | |
17769
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
64 { |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
65 MDiagArray2<double>::operator = (a); |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
66 return *this; |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
67 } |
458 | 68 |
2385 | 69 bool operator == (const DiagMatrix& a) const; |
70 bool operator != (const DiagMatrix& a) const; | |
458 | 71 |
72 DiagMatrix& fill (double val); | |
5275 | 73 DiagMatrix& fill (double val, octave_idx_type beg, octave_idx_type end); |
458 | 74 DiagMatrix& fill (const ColumnVector& a); |
75 DiagMatrix& fill (const RowVector& a); | |
5275 | 76 DiagMatrix& fill (const ColumnVector& a, octave_idx_type beg); |
77 DiagMatrix& fill (const RowVector& a, octave_idx_type beg); | |
458 | 78 |
17769
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
79 DiagMatrix transpose (void) const |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
80 { return MDiagArray2<double>::transpose (); } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
81 DiagMatrix abs (void) const; |
458 | 82 |
6153 | 83 friend OCTAVE_API DiagMatrix real (const ComplexDiagMatrix& a); |
84 friend OCTAVE_API DiagMatrix imag (const ComplexDiagMatrix& a); | |
1205 | 85 |
1359 | 86 // resize is the destructive analog for this one |
458 | 87 |
17769
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
88 Matrix extract (octave_idx_type r1, octave_idx_type c1, |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
89 octave_idx_type r2, octave_idx_type c2) const; |
458 | 90 |
1359 | 91 // extract row or column i. |
458 | 92 |
5275 | 93 RowVector row (octave_idx_type i) const; |
458 | 94 RowVector row (char *s) const; |
95 | |
5275 | 96 ColumnVector column (octave_idx_type i) const; |
458 | 97 ColumnVector column (char *s) const; |
98 | |
99 DiagMatrix inverse (void) const; | |
8811 | 100 DiagMatrix inverse (octave_idx_type& info) const; |
18535
c5a101de2d88
Allow pinv to work on Diagonal Matrices with a tolerance (bug #41546).
Rik <rik@octave.org>
parents:
17822
diff
changeset
|
101 DiagMatrix pseudo_inverse (double tol = 0.0) const; |
458 | 102 |
1359 | 103 // other operations |
458 | 104 |
15448
0a0912a9ab6e
Replace deprecated DiagArray2<T>::diag calls with DiagArray2<T>::extract_diag
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15271
diff
changeset
|
105 ColumnVector extract_diag (octave_idx_type k = 0) const |
17769
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
106 { return MDiagArray2<double>::extract_diag (k); } |
458 | 107 |
8371
c3f7e2549abb
make det & inv aware of diagonal & permutation matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8367
diff
changeset
|
108 DET determinant (void) const; |
c3f7e2549abb
make det & inv aware of diagonal & permutation matrices
Jaroslav Hajek <highegg@gmail.com>
parents:
8367
diff
changeset
|
109 double rcond (void) const; |
8367
445d27d79f4e
support permutation matrix objects
Jaroslav Hajek <highegg@gmail.com>
parents:
8366
diff
changeset
|
110 |
1359 | 111 // i/o |
458 | 112 |
17769
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
113 friend OCTAVE_API std::ostream& operator << (std::ostream& os, |
49a5a4be04a1
maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
114 const DiagMatrix& a); |
458 | 115 |
116 }; | |
117 | |
8366
8b1a2555c4e2
implement diagonal matrix objects
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
118 OCTAVE_API DiagMatrix real (const ComplexDiagMatrix& a); |
8b1a2555c4e2
implement diagonal matrix objects
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
119 OCTAVE_API DiagMatrix imag (const ComplexDiagMatrix& a); |
8b1a2555c4e2
implement diagonal matrix objects
Jaroslav Hajek <highegg@gmail.com>
parents:
7789
diff
changeset
|
120 |
3504 | 121 // diagonal matrix by diagonal matrix -> diagonal matrix operations |
122 | |
9237
3c1762c7e787
Add missing xxx_API decoration and remove misplaced ones
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
123 OCTAVE_API DiagMatrix |
3504 | 124 operator * (const DiagMatrix& a, const DiagMatrix& b); |
125 | |
3580 | 126 MDIAGARRAY2_FORWARD_DEFS (MDiagArray2, DiagMatrix, double) |
127 | |
458 | 128 #endif |