Mercurial > octave
annotate libinterp/corefcn/schur.cc @ 20939:b17fda023ca6
maint: Use new C++ archetype in more files.
Place input validation first in files.
Move declaration of retval down in function to be closer to point of usage.
Eliminate else clause after if () error.
Use "return ovl()" where it makes sense.
* find.cc, gammainc.cc, gcd.cc, getgrent.cc, getpwent.cc, givens.cc,
graphics.cc, help.cc, hess.cc, hex2num.cc, input.cc, kron.cc, load-path.cc,
load-save.cc, lookup.cc, mappers.cc, matrix_type.cc, mgorth.cc, nproc.cc,
ordschur.cc, pager.cc, pinv.cc, pr-output.cc, profiler.cc, psi.cc, quad.cc,
rcond.cc, regexp.cc, schur.cc, sighandlers.cc, sparse.cc, str2double.cc,
strfind.cc, strfns.cc, sub2ind.cc, svd.cc, sylvester.cc, symtab.cc,
syscalls.cc, sysdep.cc, time.cc, toplev.cc, tril.cc, tsearch.cc, typecast.cc,
urlwrite.cc, utils.cc, variables.cc, __delaunayn__.cc, __eigs__.cc,
__glpk__.cc, __magick_read__.cc, __osmesa_print__.cc, __voronoi__.cc, amd.cc,
audiodevinfo.cc, audioread.cc, chol.cc, colamd.cc, dmperm.cc, fftw.cc, qr.cc,
symbfact.cc, symrcm.cc, ov-bool-mat.cc, ov-cell.cc, ov-class.cc,
ov-classdef.cc, ov-fcn-handle.cc, ov-fcn-inline.cc, ov-flt-re-mat.cc,
ov-java.cc, ov-null-mat.cc, ov-oncleanup.cc, ov-re-mat.cc, ov-struct.cc,
ov-typeinfo.cc, ov-usr-fcn.cc, ov.cc, octave.cc:
Use new C++ archetype in more files.
author | Rik <rik@octave.org> |
---|---|
date | Fri, 18 Dec 2015 15:37:22 -0800 |
parents | 8da80da1ac37 |
children | 48b2ad5ee801 |
rev | line source |
---|---|
2928 | 1 /* |
2 | |
19697
4197fc428c7d
maint: Update copyright notices for 2015.
John W. Eaton <jwe@octave.org>
parents:
19403
diff
changeset
|
3 Copyright (C) 1996-2015 John W. Eaton |
2928 | 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. | |
2928 | 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/>. | |
2928 | 20 |
21 */ | |
22 | |
23 #ifdef HAVE_CONFIG_H | |
24 #include <config.h> | |
25 #endif | |
26 | |
27 #include <string> | |
28 | |
29 #include "CmplxSCHUR.h" | |
30 #include "dbleSCHUR.h" | |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
31 #include "fCmplxSCHUR.h" |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
32 #include "floatSCHUR.h" |
2928 | 33 |
15039
e753177cde93
maint: Move non-dynamically linked functions from DLD-FUNCTIONS/ to corefcn/ directory
Rik <rik@octave.org>
parents:
14854
diff
changeset
|
34 #include "defun.h" |
2928 | 35 #include "error.h" |
36 #include "gripes.h" | |
37 #include "oct-obj.h" | |
38 #include "utils.h" | |
39 | |
10617
9c9e07f5eb1c
make schur mark triangular matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
10607
diff
changeset
|
40 template <class Matrix> |
9c9e07f5eb1c
make schur mark triangular matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
10607
diff
changeset
|
41 static octave_value |
9c9e07f5eb1c
make schur mark triangular matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
10607
diff
changeset
|
42 mark_upper_triangular (const Matrix& a) |
9c9e07f5eb1c
make schur mark triangular matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
10607
diff
changeset
|
43 { |
9c9e07f5eb1c
make schur mark triangular matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
10607
diff
changeset
|
44 octave_value retval = a; |
9c9e07f5eb1c
make schur mark triangular matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
10607
diff
changeset
|
45 |
9c9e07f5eb1c
make schur mark triangular matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
10607
diff
changeset
|
46 octave_idx_type n = a.rows (); |
9c9e07f5eb1c
make schur mark triangular matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
10607
diff
changeset
|
47 assert (a.columns () == n); |
9c9e07f5eb1c
make schur mark triangular matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
10607
diff
changeset
|
48 |
9c9e07f5eb1c
make schur mark triangular matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
10607
diff
changeset
|
49 const typename Matrix::element_type zero = typename Matrix::element_type (); |
9c9e07f5eb1c
make schur mark triangular matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
10607
diff
changeset
|
50 |
9c9e07f5eb1c
make schur mark triangular matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
10607
diff
changeset
|
51 for (octave_idx_type i = 0; i < n; i++) |
9c9e07f5eb1c
make schur mark triangular matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
10607
diff
changeset
|
52 if (a(i,i) == zero) |
9c9e07f5eb1c
make schur mark triangular matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
10607
diff
changeset
|
53 return retval; |
9c9e07f5eb1c
make schur mark triangular matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
10607
diff
changeset
|
54 |
9c9e07f5eb1c
make schur mark triangular matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
10607
diff
changeset
|
55 retval.matrix_type (MatrixType::Upper); |
9c9e07f5eb1c
make schur mark triangular matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
10607
diff
changeset
|
56 |
9c9e07f5eb1c
make schur mark triangular matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
10607
diff
changeset
|
57 return retval; |
9c9e07f5eb1c
make schur mark triangular matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
10607
diff
changeset
|
58 } |
9c9e07f5eb1c
make schur mark triangular matrices on output
Jaroslav Hajek <highegg@gmail.com>
parents:
10607
diff
changeset
|
59 |
15039
e753177cde93
maint: Move non-dynamically linked functions from DLD-FUNCTIONS/ to corefcn/ directory
Rik <rik@octave.org>
parents:
14854
diff
changeset
|
60 DEFUN (schur, args, nargout, |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
61 "-*- texinfo -*-\n\ |
20853
1142cf6abc0d
2015 Code Sprint: remove class of function from docstring for all C++ files.
Rik <rik@octave.org>
parents:
20802
diff
changeset
|
62 @deftypefn {} {@var{S} =} schur (@var{A})\n\ |
1142cf6abc0d
2015 Code Sprint: remove class of function from docstring for all C++ files.
Rik <rik@octave.org>
parents:
20802
diff
changeset
|
63 @deftypefnx {} {@var{S} =} schur (@var{A}, \"real\")\n\ |
1142cf6abc0d
2015 Code Sprint: remove class of function from docstring for all C++ files.
Rik <rik@octave.org>
parents:
20802
diff
changeset
|
64 @deftypefnx {} {@var{S} =} schur (@var{A}, \"complex\")\n\ |
1142cf6abc0d
2015 Code Sprint: remove class of function from docstring for all C++ files.
Rik <rik@octave.org>
parents:
20802
diff
changeset
|
65 @deftypefnx {} {@var{S} =} schur (@var{A}, @var{opt})\n\ |
1142cf6abc0d
2015 Code Sprint: remove class of function from docstring for all C++ files.
Rik <rik@octave.org>
parents:
20802
diff
changeset
|
66 @deftypefnx {} {[@var{U}, @var{S}] =} schur (@dots{})\n\ |
3372 | 67 @cindex Schur decomposition\n\ |
20172
4f45eaf83908
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19747
diff
changeset
|
68 Compute the Schur@tie{}decomposition of @var{A}.\n\ |
4f45eaf83908
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19747
diff
changeset
|
69 \n\ |
4f45eaf83908
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19747
diff
changeset
|
70 The Schur@tie{}decomposition is defined as\n\ |
3372 | 71 @tex\n\ |
12584
7ef7e20057fa
Improve documentation strings in Linear Algebra chapter.
Rik <octave@nomad.inbox5.com>
parents:
11586
diff
changeset
|
72 $$\n\ |
7ef7e20057fa
Improve documentation strings in Linear Algebra chapter.
Rik <octave@nomad.inbox5.com>
parents:
11586
diff
changeset
|
73 S = U^T A U\n\ |
7ef7e20057fa
Improve documentation strings in Linear Algebra chapter.
Rik <octave@nomad.inbox5.com>
parents:
11586
diff
changeset
|
74 $$\n\ |
3372 | 75 @end tex\n\ |
8517
81d6ab3ac93c
Allow documentation tobe built for other formats than tex and info
sh@sh-laptop
parents:
7814
diff
changeset
|
76 @ifnottex\n\ |
12584
7ef7e20057fa
Improve documentation strings in Linear Algebra chapter.
Rik <octave@nomad.inbox5.com>
parents:
11586
diff
changeset
|
77 \n\ |
7ef7e20057fa
Improve documentation strings in Linear Algebra chapter.
Rik <octave@nomad.inbox5.com>
parents:
11586
diff
changeset
|
78 @example\n\ |
11553
01f703952eff
Improve docstrings for functions in DLD-FUNCTIONS directory.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
79 @code{@var{S} = @var{U}' * @var{A} * @var{U}}\n\ |
12584
7ef7e20057fa
Improve documentation strings in Linear Algebra chapter.
Rik <octave@nomad.inbox5.com>
parents:
11586
diff
changeset
|
80 @end example\n\ |
7ef7e20057fa
Improve documentation strings in Linear Algebra chapter.
Rik <octave@nomad.inbox5.com>
parents:
11586
diff
changeset
|
81 \n\ |
8517
81d6ab3ac93c
Allow documentation tobe built for other formats than tex and info
sh@sh-laptop
parents:
7814
diff
changeset
|
82 @end ifnottex\n\ |
12584
7ef7e20057fa
Improve documentation strings in Linear Algebra chapter.
Rik <octave@nomad.inbox5.com>
parents:
11586
diff
changeset
|
83 where @var{U} is a unitary matrix\n\ |
3372 | 84 @tex\n\ |
85 ($U^T U$ is identity)\n\ | |
86 @end tex\n\ | |
8517
81d6ab3ac93c
Allow documentation tobe built for other formats than tex and info
sh@sh-laptop
parents:
7814
diff
changeset
|
87 @ifnottex\n\ |
11553
01f703952eff
Improve docstrings for functions in DLD-FUNCTIONS directory.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
88 (@code{@var{U}'* @var{U}} is identity)\n\ |
8517
81d6ab3ac93c
Allow documentation tobe built for other formats than tex and info
sh@sh-laptop
parents:
7814
diff
changeset
|
89 @end ifnottex\n\ |
12584
7ef7e20057fa
Improve documentation strings in Linear Algebra chapter.
Rik <octave@nomad.inbox5.com>
parents:
11586
diff
changeset
|
90 and @var{S} is upper triangular. The eigenvalues of @var{A} (and @var{S})\n\ |
20172
4f45eaf83908
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19747
diff
changeset
|
91 are the diagonal elements of @var{S}. If the matrix @var{A} is real, then\n\ |
4f45eaf83908
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19747
diff
changeset
|
92 the real Schur@tie{}decomposition is computed, in which the matrix @var{U}\n\ |
4f45eaf83908
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19747
diff
changeset
|
93 is orthogonal and @var{S} is block upper triangular with blocks of size at\n\ |
4f45eaf83908
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19747
diff
changeset
|
94 most\n\ |
3372 | 95 @tex\n\ |
12584
7ef7e20057fa
Improve documentation strings in Linear Algebra chapter.
Rik <octave@nomad.inbox5.com>
parents:
11586
diff
changeset
|
96 $2 \\times 2$\n\ |
3372 | 97 @end tex\n\ |
8517
81d6ab3ac93c
Allow documentation tobe built for other formats than tex and info
sh@sh-laptop
parents:
7814
diff
changeset
|
98 @ifnottex\n\ |
3372 | 99 @code{2 x 2}\n\ |
8517
81d6ab3ac93c
Allow documentation tobe built for other formats than tex and info
sh@sh-laptop
parents:
7814
diff
changeset
|
100 @end ifnottex\n\ |
12584
7ef7e20057fa
Improve documentation strings in Linear Algebra chapter.
Rik <octave@nomad.inbox5.com>
parents:
11586
diff
changeset
|
101 along the diagonal. The diagonal elements of @var{S}\n\ |
3372 | 102 (or the eigenvalues of the\n\ |
103 @tex\n\ | |
12584
7ef7e20057fa
Improve documentation strings in Linear Algebra chapter.
Rik <octave@nomad.inbox5.com>
parents:
11586
diff
changeset
|
104 $2 \\times 2$\n\ |
3372 | 105 @end tex\n\ |
8517
81d6ab3ac93c
Allow documentation tobe built for other formats than tex and info
sh@sh-laptop
parents:
7814
diff
changeset
|
106 @ifnottex\n\ |
3372 | 107 @code{2 x 2}\n\ |
8517
81d6ab3ac93c
Allow documentation tobe built for other formats than tex and info
sh@sh-laptop
parents:
7814
diff
changeset
|
108 @end ifnottex\n\ |
12584
7ef7e20057fa
Improve documentation strings in Linear Algebra chapter.
Rik <octave@nomad.inbox5.com>
parents:
11586
diff
changeset
|
109 blocks, when appropriate) are the eigenvalues of @var{A} and @var{S}.\n\ |
2928 | 110 \n\ |
13224
0a67c717c652
Add support for additional argument "real" to schur() (Bug #34012).
Rik <octave@nomad.inbox5.com>
parents:
12642
diff
changeset
|
111 The default for real matrices is a real Schur@tie{}decomposition.\n\ |
17281
bc924baa2c4e
doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents:
17268
diff
changeset
|
112 A complex decomposition may be forced by passing the flag\n\ |
bc924baa2c4e
doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents:
17268
diff
changeset
|
113 @qcode{\"complex\"}.\n\ |
10607
f7501986e42d
make schur more Matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
10155
diff
changeset
|
114 \n\ |
20172
4f45eaf83908
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19747
diff
changeset
|
115 The eigenvalues are optionally ordered along the diagonal according to the\n\ |
4f45eaf83908
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19747
diff
changeset
|
116 value of @var{opt}. @code{@var{opt} = \"a\"} indicates that all eigenvalues\n\ |
4f45eaf83908
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19747
diff
changeset
|
117 with negative real parts should be moved to the leading block of @var{S}\n\ |
4f45eaf83908
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19747
diff
changeset
|
118 (used in @code{are}), @code{@var{opt} = \"d\"} indicates that all\n\ |
4f45eaf83908
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19747
diff
changeset
|
119 eigenvalues with magnitude less than one should be moved to the leading\n\ |
4f45eaf83908
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19747
diff
changeset
|
120 block of @var{S} (used in @code{dare}), and @code{@var{opt} = \"u\"}, the\n\ |
4f45eaf83908
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19747
diff
changeset
|
121 default, indicates that no ordering of eigenvalues should occur. The\n\ |
4f45eaf83908
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19747
diff
changeset
|
122 leading @var{k} columns of @var{U} always span the @var{A}-invariant\n\ |
12584
7ef7e20057fa
Improve documentation strings in Linear Algebra chapter.
Rik <octave@nomad.inbox5.com>
parents:
11586
diff
changeset
|
123 subspace corresponding to the @var{k} leading eigenvalues of @var{S}.\n\ |
7ef7e20057fa
Improve documentation strings in Linear Algebra chapter.
Rik <octave@nomad.inbox5.com>
parents:
11586
diff
changeset
|
124 \n\ |
20172
4f45eaf83908
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19747
diff
changeset
|
125 The Schur@tie{}decomposition is used to compute eigenvalues of a square\n\ |
4f45eaf83908
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19747
diff
changeset
|
126 matrix, and has applications in the solution of algebraic Riccati equations\n\ |
4f45eaf83908
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19747
diff
changeset
|
127 in control (see @code{are} and @code{dare}).\n\ |
19747
56157a7505ed
Add new ordschur function.
Sébastien Villemot <sebastien@debian.org>
parents:
19697
diff
changeset
|
128 @seealso{rsf2csf, ordschur, lu, chol, hess, qr, qz, svd}\n\ |
3372 | 129 @end deftypefn") |
2928 | 130 { |
131 int nargin = args.length (); | |
132 | |
133 if (nargin < 1 || nargin > 2 || nargout > 2) | |
20802
8bb38ba1bad6
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20700
diff
changeset
|
134 print_usage (); |
2928 | 135 |
136 octave_value arg = args(0); | |
137 | |
3523 | 138 std::string ord; |
2928 | 139 if (nargin == 2) |
20700
68e3a747ca02
rename octave_value value extractors that accept error message args
John W. Eaton <jwe@octave.org>
parents:
20582
diff
changeset
|
140 ord = args(1).xstring_value ("schur: second argument must be a string"); |
2928 | 141 |
10607
f7501986e42d
make schur more Matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
10155
diff
changeset
|
142 bool force_complex = false; |
2928 | 143 |
13224
0a67c717c652
Add support for additional argument "real" to schur() (Bug #34012).
Rik <octave@nomad.inbox5.com>
parents:
12642
diff
changeset
|
144 if (ord == "real") |
0a67c717c652
Add support for additional argument "real" to schur() (Bug #34012).
Rik <octave@nomad.inbox5.com>
parents:
12642
diff
changeset
|
145 { |
0a67c717c652
Add support for additional argument "real" to schur() (Bug #34012).
Rik <octave@nomad.inbox5.com>
parents:
12642
diff
changeset
|
146 ord = std::string (); |
0a67c717c652
Add support for additional argument "real" to schur() (Bug #34012).
Rik <octave@nomad.inbox5.com>
parents:
12642
diff
changeset
|
147 } |
0a67c717c652
Add support for additional argument "real" to schur() (Bug #34012).
Rik <octave@nomad.inbox5.com>
parents:
12642
diff
changeset
|
148 else if (ord == "complex") |
10607
f7501986e42d
make schur more Matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
10155
diff
changeset
|
149 { |
f7501986e42d
make schur more Matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
10155
diff
changeset
|
150 force_complex = true; |
f7501986e42d
make schur more Matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
10155
diff
changeset
|
151 ord = std::string (); |
f7501986e42d
make schur more Matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
10155
diff
changeset
|
152 } |
f7501986e42d
make schur more Matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
10155
diff
changeset
|
153 else |
2928 | 154 { |
10607
f7501986e42d
make schur more Matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
10155
diff
changeset
|
155 char ord_char = ord.empty () ? 'U' : ord[0]; |
f7501986e42d
make schur more Matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
10155
diff
changeset
|
156 |
f7501986e42d
make schur more Matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
10155
diff
changeset
|
157 if (ord_char != 'U' && ord_char != 'A' && ord_char != 'D' |
f7501986e42d
make schur more Matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
10155
diff
changeset
|
158 && ord_char != 'u' && ord_char != 'a' && ord_char != 'd') |
f7501986e42d
make schur more Matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
10155
diff
changeset
|
159 { |
19016
b155fad47055
Fix error messages and %!fail tests for schur().
Rik <rik@octave.org>
parents:
17787
diff
changeset
|
160 warning ("schur: incorrect ordered schur argument '%s'", |
10607
f7501986e42d
make schur more Matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
10155
diff
changeset
|
161 ord.c_str ()); |
20892 | 162 return octave_value_list (); |
10607
f7501986e42d
make schur more Matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
10155
diff
changeset
|
163 } |
2928 | 164 } |
165 | |
5275 | 166 octave_idx_type nr = arg.rows (); |
167 octave_idx_type nc = arg.columns (); | |
2928 | 168 |
169 if (nr != nc) | |
170 { | |
171 gripe_square_matrix_required ("schur"); | |
20892 | 172 return octave_value_list (); |
2928 | 173 } |
174 | |
20939
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20898
diff
changeset
|
175 octave_value_list retval; |
20892 | 176 |
10607
f7501986e42d
make schur more Matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
10155
diff
changeset
|
177 if (! arg.is_numeric_type ()) |
f7501986e42d
make schur more Matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
10155
diff
changeset
|
178 gripe_wrong_type_arg ("schur", arg); |
f7501986e42d
make schur more Matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
10155
diff
changeset
|
179 else if (arg.is_single_type ()) |
2928 | 180 { |
10607
f7501986e42d
make schur more Matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
10155
diff
changeset
|
181 if (! force_complex && arg.is_real_type ()) |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
9758
diff
changeset
|
182 { |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
9758
diff
changeset
|
183 FloatMatrix tmp = arg.float_matrix_value (); |
2928 | 184 |
20892 | 185 if (nargout <= 1) |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
9758
diff
changeset
|
186 { |
20555
f90c8372b7ba
eliminate many more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20172
diff
changeset
|
187 FloatSCHUR result (tmp, ord, false); |
20892 | 188 retval = ovl (result.schur_matrix ()); |
20555
f90c8372b7ba
eliminate many more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20172
diff
changeset
|
189 } |
f90c8372b7ba
eliminate many more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20172
diff
changeset
|
190 else |
f90c8372b7ba
eliminate many more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20172
diff
changeset
|
191 { |
f90c8372b7ba
eliminate many more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20172
diff
changeset
|
192 FloatSCHUR result (tmp, ord, true); |
20892 | 193 retval = ovl (result.unitary_matrix (), |
194 result.schur_matrix ()); | |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
9758
diff
changeset
|
195 } |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
9758
diff
changeset
|
196 } |
10607
f7501986e42d
make schur more Matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
10155
diff
changeset
|
197 else |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
9758
diff
changeset
|
198 { |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
9758
diff
changeset
|
199 FloatComplexMatrix ctmp = arg.float_complex_matrix_value (); |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
200 |
20892 | 201 if (nargout <= 1) |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
9758
diff
changeset
|
202 { |
20555
f90c8372b7ba
eliminate many more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20172
diff
changeset
|
203 FloatComplexSCHUR result (ctmp, ord, false); |
20892 | 204 retval = ovl (mark_upper_triangular (result.schur_matrix ())); |
20555
f90c8372b7ba
eliminate many more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20172
diff
changeset
|
205 } |
f90c8372b7ba
eliminate many more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20172
diff
changeset
|
206 else |
f90c8372b7ba
eliminate many more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20172
diff
changeset
|
207 { |
f90c8372b7ba
eliminate many more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20172
diff
changeset
|
208 FloatComplexSCHUR result (ctmp, ord, true); |
20892 | 209 retval = ovl (result.unitary_matrix (), |
210 mark_upper_triangular (result.schur_matrix ())); | |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
9758
diff
changeset
|
211 } |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
9758
diff
changeset
|
212 } |
2928 | 213 } |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
214 else |
2928 | 215 { |
10607
f7501986e42d
make schur more Matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
10155
diff
changeset
|
216 if (! force_complex && arg.is_real_type ()) |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
9758
diff
changeset
|
217 { |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
9758
diff
changeset
|
218 Matrix tmp = arg.matrix_value (); |
2928 | 219 |
20892 | 220 if (nargout <= 1) |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
9758
diff
changeset
|
221 { |
20555
f90c8372b7ba
eliminate many more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20172
diff
changeset
|
222 SCHUR result (tmp, ord, false); |
20892 | 223 retval = ovl (result.schur_matrix ()); |
20555
f90c8372b7ba
eliminate many more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20172
diff
changeset
|
224 } |
f90c8372b7ba
eliminate many more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20172
diff
changeset
|
225 else |
f90c8372b7ba
eliminate many more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20172
diff
changeset
|
226 { |
f90c8372b7ba
eliminate many more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20172
diff
changeset
|
227 SCHUR result (tmp, ord, true); |
20892 | 228 retval = ovl (result.unitary_matrix (), |
229 result.schur_matrix ()); | |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
9758
diff
changeset
|
230 } |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
9758
diff
changeset
|
231 } |
10607
f7501986e42d
make schur more Matlab compatible
Jaroslav Hajek <highegg@gmail.com>
parents:
10155
diff
changeset
|
232 else |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
9758
diff
changeset
|
233 { |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
9758
diff
changeset
|
234 ComplexMatrix ctmp = arg.complex_matrix_value (); |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
235 |
20892 | 236 if (nargout <= 1) |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
9758
diff
changeset
|
237 { |
20555
f90c8372b7ba
eliminate many more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20172
diff
changeset
|
238 ComplexSCHUR result (ctmp, ord, false); |
20892 | 239 retval = ovl (mark_upper_triangular (result.schur_matrix ())); |
20555
f90c8372b7ba
eliminate many more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20172
diff
changeset
|
240 } |
f90c8372b7ba
eliminate many more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20172
diff
changeset
|
241 else |
f90c8372b7ba
eliminate many more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20172
diff
changeset
|
242 { |
f90c8372b7ba
eliminate many more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20172
diff
changeset
|
243 ComplexSCHUR result (ctmp, ord, true); |
20892 | 244 retval = ovl (result.unitary_matrix (), |
245 mark_upper_triangular (result.schur_matrix ())); | |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
9758
diff
changeset
|
246 } |
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
9758
diff
changeset
|
247 } |
2928 | 248 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11553
diff
changeset
|
249 |
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11553
diff
changeset
|
250 return retval; |
2928 | 251 } |
252 | |
253 /* | |
7814
87865ed7405f
Second set of single precision test code and fix of resulting bugs
David Bateman <dbateman@free.fr>
parents:
7789
diff
changeset
|
254 %!test |
87865ed7405f
Second set of single precision test code and fix of resulting bugs
David Bateman <dbateman@free.fr>
parents:
7789
diff
changeset
|
255 %! a = [1, 2, 3; 4, 5, 9; 7, 8, 6]; |
87865ed7405f
Second set of single precision test code and fix of resulting bugs
David Bateman <dbateman@free.fr>
parents:
7789
diff
changeset
|
256 %! [u, s] = schur (a); |
14501
60e5cf354d80
Update %!tests in DLD-FUNCTIONS/ directory with Octave coding conventions.
Rik <octave@nomad.inbox5.com>
parents:
14460
diff
changeset
|
257 %! assert (u' * a * u, s, sqrt (eps)); |
7814
87865ed7405f
Second set of single precision test code and fix of resulting bugs
David Bateman <dbateman@free.fr>
parents:
7789
diff
changeset
|
258 |
87865ed7405f
Second set of single precision test code and fix of resulting bugs
David Bateman <dbateman@free.fr>
parents:
7789
diff
changeset
|
259 %!test |
14501
60e5cf354d80
Update %!tests in DLD-FUNCTIONS/ directory with Octave coding conventions.
Rik <octave@nomad.inbox5.com>
parents:
14460
diff
changeset
|
260 %! a = single ([1, 2, 3; 4, 5, 9; 7, 8, 6]); |
7814
87865ed7405f
Second set of single precision test code and fix of resulting bugs
David Bateman <dbateman@free.fr>
parents:
7789
diff
changeset
|
261 %! [u, s] = schur (a); |
14501
60e5cf354d80
Update %!tests in DLD-FUNCTIONS/ directory with Octave coding conventions.
Rik <octave@nomad.inbox5.com>
parents:
14460
diff
changeset
|
262 %! assert (u' * a * u, s, sqrt (eps ("single"))); |
7814
87865ed7405f
Second set of single precision test code and fix of resulting bugs
David Bateman <dbateman@free.fr>
parents:
7789
diff
changeset
|
263 |
14501
60e5cf354d80
Update %!tests in DLD-FUNCTIONS/ directory with Octave coding conventions.
Rik <octave@nomad.inbox5.com>
parents:
14460
diff
changeset
|
264 %!error schur () |
19016
b155fad47055
Fix error messages and %!fail tests for schur().
Rik <rik@octave.org>
parents:
17787
diff
changeset
|
265 %!error schur (1,2,3) |
b155fad47055
Fix error messages and %!fail tests for schur().
Rik <rik@octave.org>
parents:
17787
diff
changeset
|
266 %!error [a,b,c] = schur (1) |
14501
60e5cf354d80
Update %!tests in DLD-FUNCTIONS/ directory with Octave coding conventions.
Rik <octave@nomad.inbox5.com>
parents:
14460
diff
changeset
|
267 %!error <argument must be a square matrix> schur ([1, 2, 3; 4, 5, 6]) |
19016
b155fad47055
Fix error messages and %!fail tests for schur().
Rik <rik@octave.org>
parents:
17787
diff
changeset
|
268 %!error <wrong type argument 'cell'> schur ({1}) |
19034
f707835af867
Rewrite schur built-in test as a %!warning to stop failure during 'make check'
Rik <rik@octave.org>
parents:
19016
diff
changeset
|
269 %!warning <incorrect ordered schur argument> schur ([1, 2; 3, 4], "bad_opt"); |
f707835af867
Rewrite schur built-in test as a %!warning to stop failure during 'make check'
Rik <rik@octave.org>
parents:
19016
diff
changeset
|
270 |
2928 | 271 */ |
10822 | 272 |
15039
e753177cde93
maint: Move non-dynamically linked functions from DLD-FUNCTIONS/ to corefcn/ directory
Rik <rik@octave.org>
parents:
14854
diff
changeset
|
273 DEFUN (rsf2csf, args, nargout, |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
274 "-*- texinfo -*-\n\ |
20853
1142cf6abc0d
2015 Code Sprint: remove class of function from docstring for all C++ files.
Rik <rik@octave.org>
parents:
20802
diff
changeset
|
275 @deftypefn {} {[@var{U}, @var{T}] =} rsf2csf (@var{UR}, @var{TR})\n\ |
11553
01f703952eff
Improve docstrings for functions in DLD-FUNCTIONS directory.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
276 Convert a real, upper quasi-triangular Schur@tie{}form @var{TR} to a complex,\n\ |
01f703952eff
Improve docstrings for functions in DLD-FUNCTIONS directory.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
277 upper triangular Schur@tie{}form @var{T}.\n\ |
10822 | 278 \n\ |
12642
f96b9b9f141b
doc: Periodic grammarcheck and spellcheck of documentation.
Rik <octave@nomad.inbox5.com>
parents:
12584
diff
changeset
|
279 Note that the following relations hold:\n\ |
10822 | 280 \n\ |
12584
7ef7e20057fa
Improve documentation strings in Linear Algebra chapter.
Rik <octave@nomad.inbox5.com>
parents:
11586
diff
changeset
|
281 @tex\n\ |
7ef7e20057fa
Improve documentation strings in Linear Algebra chapter.
Rik <octave@nomad.inbox5.com>
parents:
11586
diff
changeset
|
282 $UR \\cdot TR \\cdot {UR}^T = U T U^{\\dagger}$ and\n\ |
7ef7e20057fa
Improve documentation strings in Linear Algebra chapter.
Rik <octave@nomad.inbox5.com>
parents:
11586
diff
changeset
|
283 $U^{\\dagger} U$ is the identity matrix I.\n\ |
7ef7e20057fa
Improve documentation strings in Linear Algebra chapter.
Rik <octave@nomad.inbox5.com>
parents:
11586
diff
changeset
|
284 @end tex\n\ |
7ef7e20057fa
Improve documentation strings in Linear Algebra chapter.
Rik <octave@nomad.inbox5.com>
parents:
11586
diff
changeset
|
285 @ifnottex\n\ |
17268
1c21f264d26f
doc: Rename @xcode macro to @tcode (transpose code) for clarity.
Rik <rik@octave.org>
parents:
16920
diff
changeset
|
286 @tcode{@var{UR} * @var{TR} * @var{UR}' = @var{U} * @var{T} * @var{U}'} and\n\ |
11553
01f703952eff
Improve docstrings for functions in DLD-FUNCTIONS directory.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
287 @code{@var{U}' * @var{U}} is the identity matrix I.\n\ |
12584
7ef7e20057fa
Improve documentation strings in Linear Algebra chapter.
Rik <octave@nomad.inbox5.com>
parents:
11586
diff
changeset
|
288 @end ifnottex\n\ |
10822 | 289 \n\ |
11553
01f703952eff
Improve docstrings for functions in DLD-FUNCTIONS directory.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
290 Note also that @var{U} and @var{T} are not unique.\n\ |
01f703952eff
Improve docstrings for functions in DLD-FUNCTIONS directory.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
291 @seealso{schur}\n\ |
10822 | 292 @end deftypefn") |
293 { | |
20802
8bb38ba1bad6
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20700
diff
changeset
|
294 if (args.length () != 2 || nargout > 2) |
8bb38ba1bad6
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20700
diff
changeset
|
295 print_usage (); |
8bb38ba1bad6
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20700
diff
changeset
|
296 |
20898
8da80da1ac37
maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents:
20892
diff
changeset
|
297 octave_value_list retval; |
8da80da1ac37
maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents:
20892
diff
changeset
|
298 |
20802
8bb38ba1bad6
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20700
diff
changeset
|
299 if (! args(0).is_numeric_type ()) |
8bb38ba1bad6
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20700
diff
changeset
|
300 gripe_wrong_type_arg ("rsf2csf", args(0)); |
8bb38ba1bad6
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20700
diff
changeset
|
301 else if (! args(1).is_numeric_type ()) |
8bb38ba1bad6
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20700
diff
changeset
|
302 gripe_wrong_type_arg ("rsf2csf", args(1)); |
8bb38ba1bad6
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20700
diff
changeset
|
303 else if (args(0).is_complex_type () || args(1).is_complex_type ()) |
8bb38ba1bad6
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20700
diff
changeset
|
304 error ("rsf2csf: UR and TR must be real matrices"); |
8bb38ba1bad6
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20700
diff
changeset
|
305 else |
10822 | 306 { |
20802
8bb38ba1bad6
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20700
diff
changeset
|
307 |
8bb38ba1bad6
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20700
diff
changeset
|
308 if (args(0).is_single_type () || args(1).is_single_type ()) |
8bb38ba1bad6
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20700
diff
changeset
|
309 { |
8bb38ba1bad6
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20700
diff
changeset
|
310 FloatMatrix u = args(0).float_matrix_value (); |
8bb38ba1bad6
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20700
diff
changeset
|
311 FloatMatrix t = args(1).float_matrix_value (); |
8bb38ba1bad6
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20700
diff
changeset
|
312 |
8bb38ba1bad6
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20700
diff
changeset
|
313 FloatComplexSCHUR cs (FloatSCHUR (t, u)); |
8bb38ba1bad6
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20700
diff
changeset
|
314 |
20898
8da80da1ac37
maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents:
20892
diff
changeset
|
315 retval = ovl (cs.unitary_matrix (), cs.schur_matrix ()); |
20802
8bb38ba1bad6
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20700
diff
changeset
|
316 } |
10822 | 317 else |
318 { | |
20802
8bb38ba1bad6
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20700
diff
changeset
|
319 Matrix u = args(0).matrix_value (); |
8bb38ba1bad6
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20700
diff
changeset
|
320 Matrix t = args(1).matrix_value (); |
10822 | 321 |
20802
8bb38ba1bad6
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20700
diff
changeset
|
322 ComplexSCHUR cs (SCHUR (t, u)); |
20555
f90c8372b7ba
eliminate many more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20172
diff
changeset
|
323 |
20898
8da80da1ac37
maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents:
20892
diff
changeset
|
324 retval = ovl (cs.unitary_matrix (), cs.schur_matrix ()); |
10822 | 325 } |
326 } | |
327 | |
328 return retval; | |
329 } | |
330 | |
331 /* | |
332 %!test | |
333 %! A = [1, 1, 1, 2; 1, 2, 1, 1; 1, 1, 3, 1; -2, 1, 1, 1]; | |
334 %! [u, t] = schur (A); | |
335 %! [U, T] = rsf2csf (u, t); | |
14501
60e5cf354d80
Update %!tests in DLD-FUNCTIONS/ directory with Octave coding conventions.
Rik <octave@nomad.inbox5.com>
parents:
14460
diff
changeset
|
336 %! assert (norm (u * t * u' - U * T * U'), 0, 1e-12); |
60e5cf354d80
Update %!tests in DLD-FUNCTIONS/ directory with Octave coding conventions.
Rik <octave@nomad.inbox5.com>
parents:
14460
diff
changeset
|
337 %! assert (norm (A - U * T * U'), 0, 1e-12); |
10822 | 338 |
339 %!test | |
340 %! A = rand (10); | |
341 %! [u, t] = schur (A); | |
342 %! [U, T] = rsf2csf (u, t); | |
14501
60e5cf354d80
Update %!tests in DLD-FUNCTIONS/ directory with Octave coding conventions.
Rik <octave@nomad.inbox5.com>
parents:
14460
diff
changeset
|
343 %! assert (norm (tril (T, -1)), 0); |
60e5cf354d80
Update %!tests in DLD-FUNCTIONS/ directory with Octave coding conventions.
Rik <octave@nomad.inbox5.com>
parents:
14460
diff
changeset
|
344 %! assert (norm (U * U'), 1, 1e-14); |
10822 | 345 |
14460
6c3441f3146b
Fix logm for complex matrix with real eigenvalues (bug #34893).
Marco Caliari <marco.caliari@univr.it>
parents:
14138
diff
changeset
|
346 %!test |
6c3441f3146b
Fix logm for complex matrix with real eigenvalues (bug #34893).
Marco Caliari <marco.caliari@univr.it>
parents:
14138
diff
changeset
|
347 %! A = [0, 1;-1, 0]; |
6c3441f3146b
Fix logm for complex matrix with real eigenvalues (bug #34893).
Marco Caliari <marco.caliari@univr.it>
parents:
14138
diff
changeset
|
348 %! [u, t] = schur (A); |
6c3441f3146b
Fix logm for complex matrix with real eigenvalues (bug #34893).
Marco Caliari <marco.caliari@univr.it>
parents:
14138
diff
changeset
|
349 %! [U, T] = rsf2csf (u,t); |
14501
60e5cf354d80
Update %!tests in DLD-FUNCTIONS/ directory with Octave coding conventions.
Rik <octave@nomad.inbox5.com>
parents:
14460
diff
changeset
|
350 %! assert (U * T * U', A, 1e-14); |
10822 | 351 */ |