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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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