Mercurial > octave
annotate liboctave/numeric/CmplxGSVD.h @ 22235:63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
* libinterp/corefcn/gsvd.cc: New function to the interpreter. Imported
from the linear-algebra package.
* CmplxGSVD.cc, CmplxGSVD.h, dbleGSVD.cc, dbleGSVD.h: new classes
imported from the linear-algebra package to compute gsvd of Matrix
and ComplexMatrix.
* liboctave/operators/mx-defs.h, liboctave/operators/mx-ext.h: use new
classes.
* libinterp/corefcn/module.mk, liboctave/numeric/module.mk: Add to the
* scripts/help/__unimplemented__.m: Remove "gsvd" from list.
* doc/interpreter/linalg.txi: Add to manual.
build system.
* NEWS: Add function to list of new functions for 4.2.
author | Barbara Locsi <locsi.barbara@gmail.com> |
---|---|
date | Thu, 04 Aug 2016 07:50:31 +0200 |
parents | |
children |
rev | line source |
---|---|
22235
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
1 // Copyright (C) 1996, 1997 John W. Eaton |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
2 // Copyright (C) 2006 Pascal Dupuis <Pascal.Dupuis@uclouvain.be> |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
3 // |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
4 // This program is free software; you can redistribute it and/or modify it under |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
5 // the terms of the GNU General Public License as published by the Free Software |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
6 // Foundation; either version 3 of the License, or (at your option) any later |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
7 // version. |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
8 // |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
9 // This program is distributed in the hope that it will be useful, but WITHOUT |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
10 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
11 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
12 // details. |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
13 // |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
14 // You should have received a copy of the GNU General Public License along with |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
15 // this program; if not, see <http://www.gnu.org/licenses/>. |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
16 |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
17 #if !defined (octave_ComplexGSVD_h) |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
18 #define octave_ComplexGSVD_h 1 |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
19 |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
20 #include "octave-config.h" |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
21 |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
22 #include <iosfwd> |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
23 |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
24 #include "dDiagMatrix.h" |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
25 #include "CMatrix.h" |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
26 #include "dbleGSVD.h" |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
27 |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
28 class |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
29 ComplexGSVD |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
30 { |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
31 public: |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
32 |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
33 ComplexGSVD (void) { } |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
34 |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
35 ComplexGSVD (const ComplexMatrix& a, const ComplexMatrix& b, |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
36 GSVD::type gsvd_type = GSVD::economy) |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
37 { |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
38 init (a, b, gsvd_type); |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
39 } |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
40 |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
41 ComplexGSVD (const ComplexMatrix& a, const ComplexMatrix& b, |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
42 octave_idx_type& info, GSVD::type gsvd_type = GSVD::economy) |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
43 { |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
44 info = init (a, b, gsvd_type); |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
45 } |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
46 |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
47 ComplexGSVD (const ComplexGSVD& a) |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
48 : type_computed (a.type_computed), |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
49 sigmaA (a.sigmaA), sigmaB (a.sigmaB), |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
50 left_smA (a.left_smA), left_smB (a.left_smB), right_sm (a.right_sm), |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
51 R(a.R) { } |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
52 |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
53 ComplexGSVD& operator = (const ComplexGSVD& a) |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
54 { |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
55 if (this != &a) |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
56 { |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
57 type_computed = a.type_computed; |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
58 sigmaA = a.sigmaA; |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
59 sigmaB = a.sigmaB; |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
60 left_smA = a.left_smA; |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
61 left_smB = a.left_smB; |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
62 right_sm = a.right_sm; |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
63 R = a.R; |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
64 } |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
65 |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
66 return *this; |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
67 } |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
68 |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
69 ~ComplexGSVD (void) { } |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
70 |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
71 DiagMatrix singular_values_A (void) const { return sigmaA; } |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
72 DiagMatrix singular_values_B (void) const { return sigmaB; } |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
73 |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
74 ComplexMatrix left_singular_matrix_A (void) const; |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
75 ComplexMatrix left_singular_matrix_B (void) const; |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
76 |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
77 ComplexMatrix right_singular_matrix (void) const; |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
78 ComplexMatrix R_matrix (void) const; |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
79 |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
80 friend std::ostream& operator << (std::ostream& os, const ComplexGSVD& a); |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
81 |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
82 private: |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
83 |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
84 GSVD::type type_computed; |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
85 |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
86 DiagMatrix sigmaA, sigmaB; |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
87 ComplexMatrix left_smA, left_smB; |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
88 ComplexMatrix right_sm, R; |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
89 |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
90 octave_idx_type init (const ComplexMatrix& a, const ComplexMatrix& b, |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
91 GSVD::type gsvd_type = GSVD::economy); |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
92 }; |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
93 |
63b41167ef1e
gsvd: new function imported from Octave-Forge linear-algebra package.
Barbara Locsi <locsi.barbara@gmail.com>
parents:
diff
changeset
|
94 #endif |